এনগিনেক্সে বিভিন্ন পিএইচপি সংস্করণ সহ একাধিক ওয়েবসাইট কীভাবে চালানো যায়


কখনও কখনও পিএইচপি বিকাশকারীরা একই ওয়েব সার্ভারে পিএইচপি-র বিভিন্ন সংস্করণ ব্যবহার করে বিভিন্ন ওয়েবসাইট/অ্যাপ্লিকেশন তৈরি ও পরিচালনা করতে চায়। লিনাক্স সিস্টেম অ্যাডমিনিস্ট্রেটর হিসাবে আপনাকে এমন একটি পরিবেশ তৈরি করতে হবে যেখানে আপনি একক ওয়েব সার্ভারে বিভিন্ন পিএইচপি সংস্করণ ব্যবহার করে একাধিক ওয়েবসাইট চালাতে পারবেন অর্থাত্ এনগিনেক্স।

এই টিউটোরিয়ালে, আমরা আপনাকে ব্যাখ্যা করব যে কীভাবে পিএইচপি-র একাধিক সংস্করণ ইনস্টল করতে হবে এবং এলইএমপি স্ট্যাক ব্যবহার করে সেন্টোস/আরএইচএল 7 ডিস্ট্রিবিউশনে সার্ভার ব্লকগুলি (অ্যাপাচে ভার্চুয়াল হোস্টগুলি) মাধ্যমে তাদের সাথে কাজ করার জন্য ওয়েব সার্ভার এনগিনেক্সকে কনফিগার করতে হবে।

এনগিনেক্স পিএইচপি-এফপিএম ব্যবহার করে (এটি ফাস্টসিজিআই প্রসেস ম্যানেজার), এটি একটি বিকল্প পিএইচপি ফাস্টসিজিআই বাস্তবায়ন যা ভারী বোঝা ওয়েবসাইটগুলির জন্য কিছু অতিরিক্ত, দরকারী বৈশিষ্ট্য সহ।

  1. সর্বনিম্ন ইনস্টলেশন সহ একটি RHEL 7 সার্ভার
  2. এনগিনেক্স এইচটিটিপি সার্ভার
  3. পিএইচপি 7.1 (ডিফল্ট সংস্করণ হিসাবে ব্যবহৃত হতে হবে) এবং 5.6 মারিয়াডিবি ডাটাবেস সার্ভার
  4. সার্ভারের আইপি ঠিকানা: 192.168.56.10
  5. ওয়েবসাইটগুলি: example1.com এবং example2.com

পদক্ষেপ 1: EPEL এবং রেমি সংগ্রহস্থল ইনস্টল এবং সক্ষম করা

1. প্রথমে ইপিল এবং রেমি সংগ্রহস্থল ইনস্টল ও সক্ষম করে শুরু করুন, যা সেন্টোস/আরএইচএল 7 বিতরণে পিএইচপি স্ট্যাকের সর্বশেষ সংস্করণ সরবরাহ করে।

# yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
# yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm

২. পরে yum-utils প্যাকেজটি ইনস্টল করুন, যা yum এর স্থানীয় কার্যকারিতা প্রসারিত করে এবং yum-config-manager কমান্ড সরবরাহ করে, যা সিস্টেমে Yum সংগ্রহস্থল সক্ষম বা অক্ষম করতে ব্যবহৃত হয়।

# yum install yum-utils

দ্রষ্টব্য: RHEL 7 এ আপনি নিম্নলিখিত কমান্ডটি ব্যবহার করে কিছু নির্ভরতার জন্য channelচ্ছিক চ্যানেল সক্ষম করতে পারবেন।

# subscription-manager repos --enable=rhel-7-server-optional-rpms

পদক্ষেপ 2: এনগিনেক্স ওয়েব সার্ভার ইনস্টল করা

৩. এনগিনেক্সের সর্বশেষতম সংস্করণ ইনস্টল করতে, আমাদের অফিসিয়াল এনগিনেক্স রিপোজিটরি যুক্ত করতে হবে, /etc/yum.repos.d/nginx.repo নামের একটি ফাইল তৈরি করতে হবে।

# vi /etc/yum.repos.d/nginx.repo

আপনার বিতরণ অনুযায়ী ফাইলটিতে নিম্নলিখিত লাইনগুলি যুক্ত করুন।

--------------- On CentOS 7 --------------- 
[nginx] 
name=nginx repo 
baseurl=http://nginx.org/packages/centos/7/$basearch/ 
gpgcheck=0 
enabled=1 


--------------- On RHEL 7 ---------------
[nginx] 
name=nginx repo 
baseurl=http://nginx.org/packages/rhel/7.x/$basearch/ 
gpgcheck=0 
enabled=1 

৪. একবার এনগিনেক্স রেপো যুক্ত হয়ে গেলে আপনি ইউগ প্যাকেজ ম্যানেজারের সরঞ্জাম হিসাবে Nginx ইনস্টল করতে পারেন shown

# yum install nginx

পদক্ষেপ 3: মারিয়াডিবি ডাটাবেস সার্ভার ইনস্টল করা

৫. মারিয়াডিবির সর্বশেষ সংস্করণ ইনস্টল করতে, আমাদের অফিসিয়াল মারিয়াডিবি সংগ্রহস্থল যুক্ত করতে হবে, /etc/yum.repos.d/mariadb.repo নামে একটি ফাইল তৈরি করতে হবে।

# vi /etc/yum.repos.d/mariadb.repo

আপনার বিতরণ অনুযায়ী ফাইলটিতে নিম্নলিখিত লাইনগুলি যুক্ত করুন।

--------------- On CentOS 7 --------------- 
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.2/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1


--------------- On RHEL 7 ---------------
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.2/rhel7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1 

Mar. একবার মারিয়াডিবি রেপো যুক্ত হয়ে গেলে, আপনি যেমন দেখানো হয়েছে তেমন প্যাকেজ ম্যানেজার সরঞ্জাম ব্যবহার করে মারিয়াডিবি ইনস্টল করতে পারেন।

# yum install MariaDB-client MariaDB-server

Wards. এরপরে, নীচের স্ক্রিপ্টটি ব্যবহার করে ডাটাবেস সার্ভার ইনস্টলেশন সুরক্ষিত করুন। একটি রুট পাসওয়ার্ড সেট করুন এবং y উত্তর দিন এবং পরবর্তী প্রশ্নগুলির দূরবর্তী রুট ব্যবহারকারী লগইন অক্ষম করতে বেনামে-ব্যবহারকারীর অ্যাকাউন্টগুলি সরিয়ে ফেলুন এবং ডিফল্টরূপে সমস্ত ব্যবহারকারীদের দ্বারা অ্যাক্সেস করা যেতে পারে এমন ডাটাবেস পরীক্ষা করুন এমনকি বেনামে ব্যবহারকারীরাও।

# mysql_secure_installation

পদক্ষেপ 4: পিএইচপি একাধিক সংস্করণ ইনস্টল করা

৮. আপনার প্রকল্পগুলির জন্য পিএইচপি-র বিভিন্ন সংস্করণ ইনস্টল করতে, দেখানো হিসাবে বেশিরভাগ প্রয়োজনীয় মডিউলগুলির সাথে পিএইচপি-র একাধিক সংস্করণ ইনস্টল করতে yum-config-manager কমান্ডটি ব্যবহার করুন।

# yum-config-manager --enable remi-php71  [Default]
# yum install php php-common php-fpm
# yum install php-mysql php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml php-pecl-apc php-cli php-pear php-pdo
# yum install php56 php56-php-common php56-php-fpm
# yum install php56-php-mysql php56-php-pecl-memcache php56-php-pecl-memcached php56-php-gd php56-php-mbstring php56-php-mcrypt php56-php-xml php56-php-pecl-apc php56-php-cli php56-php-pear php56-php-pdo

9. একবার পিএইচপি ইনস্টল হয়ে গেলে, আপনি আপনার সার্ভারে ব্যবহৃত পিএইচপি এর ডিফল্ট সংস্করণ পরীক্ষা করতে নিম্নলিখিত কমান্ডটি ব্যবহার করতে পারেন।

# php -v

পদক্ষেপ 5: PHP-FPM এবং PHP56-PHP-FPM কনফিগার করা

10. এটি এই টিউটোরিয়ালের সবচেয়ে আকর্ষণীয় অংশ, এটি ব্যাখ্যা করে যে আপনি কীভাবে প্রকৃতপক্ষে আপনার সার্ভারে একাধিক পিএইচপি সংস্করণ চালাতে পারেন। এখানে, আপনি php-fpm এর বিভিন্ন সংস্করণটি কনফিগার করবেন যা Nginx এর সাথে কাজ করবে। আপনার কাছে ফাস্টসিজিআই প্রক্রিয়াগুলির ব্যবহারকারী/গোষ্ঠীগুলির পাশাপাশি পোর্টগুলি যেগুলি তারা শুনবে সেগুলি সংজ্ঞায়িত করা উচিত।

এইগুলি নিম্নলিখিত দুটি কনফিগারেশন ফাইল যা আপনি সম্পাদনা করতে যাবেন।

  • পিএইচপি-এফপিএম (ডিফল্ট .1.১) - /etc/php-fpm.d/www.conf
  • php56-php-fpm - /opt/remi/php56/root/etc/php-fpm.d/www.conf

উপরের ফাইলগুলি খুলুন, ফাস্টসিজিআই প্রক্রিয়াগুলির ব্যবহারকারী/গোষ্ঠী সেট করুন।

# vi /etc/php-fpm.d/www.conf   [PHP 7.1]
# vi /opt/remi/php56/root/etc/php-fpm.d/www.conf  [PHP 5.6] 

ডিফল্ট মানগুলি অ্যাপাচি হওয়া উচিত, তাদের প্রদর্শিত হিসাবে এনজিনেক্সে পরিবর্তন করুন।

user = nginx
group = nginx

১১. পরবর্তী, শোনার প্যারামিটারগুলি সন্ধান করুন এবং ঠিকানাটি নির্ধারণ করুন: পোর্ট যার উপর দিয়ে ফাস্টসিজিআই অনুরোধগুলি প্রাপ্ত হবে।

listen = 127.0.0.1:9000	[php-fpm]
listen = 127.0.0.1:9001	[php56-php-fpm]

১২. উপরের সমস্ত কনফিগারেশনটি শেষ হয়ে গেলে, আপনাকে সিস্টেম বুট করার সময় এনগিনেক্স, মারিয়াডিবি এবং পিএইচপি-এফপিএম চালু এবং সক্ষম করতে হবে।

# systemctl enable nginx 
# systemctl start nginx 

# systemctl enable mariadb 
# systemctl start mariadb 

---------------- PHP 7.1 ---------------- 
# systemctl enable php-fpm 
# systemctl start php-fpm 

---------------- PHP 5.6 ----------------
# systemctl enable php56-php-fpm 
# systemctl start php56-php-fpm 

মনোযোগ: পিএইচপি, php56-php-fpm এর দ্বিতীয় উদাহরণটি শুরু করার সময় আপনি যদি কোনও ত্রুটি পান তবে একটি সেলইনক্স নীতি এটিকে শুরু হতে বাধা দিতে পারে। যদি সেলইনাক্স প্রযোজ্য মোডে থাকে তবে এটি অনুমোদনের মোডে সেট করুন, তারপরে আবার পরিষেবাটি শুরু করার চেষ্টা করুন।

# getenforce
# setenforce 0 

পদক্ষেপ।: অনুমতি সহ ওয়েবসাইটগুলি সেটআপ করুন

১৩. এই মুহুর্তে, আপনি এখন/var/www/html/এর অধীনে আপনার ওয়েবসাইটগুলির জন্য প্রয়োজনীয় ডিরেক্টরি তৈরি করতে পারেন। নিম্নলিখিত হিসাবে লগ সংরক্ষণ করার জন্য আপনাকে ডিরেক্টরি তৈরি করতে হবে:

---------------- Website 1 ----------------
# mkdir -p /var/www/html/example1.com/ 
# mkdir -p /var/log/nginx/example1.com/ 
 

---------------- Website 2 ----------------
# mkdir -p /var/www/html/example2.com/
# mkdir -p /var/log/nginx/example2.com/ 

14. সমস্ত ডিরেক্টরিতে যথাযথ মালিকানার অনুমতি সেট করুন।

---------------- Website 1 ----------------
# chown -R root:nginx /var/www/html/example1.com/ 
# chmod -R 755 /var/www/html/example1.com/ 
# chown -R root:nginx /var/log/nginx/example1.com/
# chmod -R 660 /var/log/nginx/example1.com/ 

---------------- Website 2 ----------------
# chown -R root:nginx /var/www/html/example2.com/ 
# chmod -R 755 /var/www/html/example2.com/
# chown -R root:nginx /var/log/nginx/example2.com/ 
# chmod -R 660 /var/log/nginx/example2.com/

পদক্ষেপ 7: ওয়েবসাইটগুলির জন্য এনগিনেক্স সার্ভার ব্লক সেটআপ করুন

15. এখন কনফিগার করুন কীভাবে Nginx আপনার ওয়েবসাইটগুলিতে /etc/nginx/conf.d/ এ থাকা উচিত সার্ভার ব্লক কনফিগারেশন ফাইলগুলি ব্যবহার করে আপনার অনুরোধগুলি প্রক্রিয়াকরণ করবে।

.conf এক্সটেনশনের সাথে শেষ হওয়া আপনার ওয়েবসাইটগুলির জন্য কনফিগারেশন ফাইলগুলি তৈরি করুন।

# vi /etc/nginx/conf.d/example1.com.conf
# vi /etc/nginx/conf.d/example2.com.conf

তারপরে সংশ্লিষ্ট ফাইলগুলিতে নিম্নলিখিত সার্ভার ব্লক কনফিগারেশনগুলি আটকে দিন।

server {
        listen 80;
        server_name example1.com www.example1.com;

        root   /var/www/html/example1.com/;
        index index.php index.html index.htm;

        #charset koi8-r;
        access_log /var/log/nginx/example1.com/example1_access_log;
        error_log   /var/log/nginx/example1.com/example1_error_log   error;

       location / {
                try_files $uri $uri/ /index.php?$query_string;
        }

       # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        location ~ \.php$ {

                root    /var/www/html/example1.com/;
                fastcgi_pass   127.0.0.1:9000;	#set port for php-fpm to listen on
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                include         fastcgi_params;
                include /etc/nginx/fastcgi_params;

        }
}
server {
        listen 80;
        server_name example2.com www.example2.com;

        root    /var/www/html/example2.com/;
        index index.php index.html index.htm;

        #charset koi8-r;
        access_log /var/log/nginx/example2.com/example2_access_log;
        error_log  /var/log/nginx/example2.com/example2_error_log   error;

       location / {
                try_files $uri $uri/ /index.php?$query_string;
        }

       # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        location ~ \.php$ {

                root    /var/www/html/example2.com/;
                fastcgi_pass   127.0.0.1:9001;	#set port for php56-php-fpm to listen on
	        fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                include         fastcgi_params;
                include /etc/nginx/fastcgi_params;

        }
}

16. নিশ্চিত করুন যে আপনার /etc/nginx/nginx.conf এ http ব্লকের সমাপ্ত অংশে নীচের লাইনটি রয়েছে। এটি যখন Nginx চলমান থাকে তখন /etc/nginx/conf.d/ ডিরেক্টরিতে সমস্ত কনফিগারেশন ফাইল অন্তর্ভুক্ত করতে সহায়তা করে।

include /etc/nginx/conf.d/*.conf;

পদক্ষেপ 8: বিভিন্ন পিএইচপি সংস্করণ পরীক্ষা করা

17. অবশেষে, আপনাকে পরীক্ষা করতে হবে যে আপনার সার্ভারটি পিএইচপি এর দুটি সংস্করণ ব্যবহার করছে। আপনার ওয়েবসাইটগুলির ডকুমেন্ট রুট ডিরেক্টরিগুলিতে প্রদর্শিত হিসাবে আপনি একটি খুব প্রাথমিক তথ্য.পিএইচপি স্ক্রিপ্ট তৈরি করতে পারেন।

# echo "<?php phpinfo(); ?>" > /var/www/html/example1.com/info.php
# echo "<?php phpinfo(); ?>" > /var/www/html/example2.com/info.php

18. উপরে বর্ণিত সমস্ত পরিবর্তন প্রয়োগ করতে আপনাকে Nginx, php-fpm এবং php56-php-fpm পুনরায় চালু করতে হবে। তবে আপনি প্রথমে যাচাই করতে পারেন যে Nginx কনফিগারেশন ফাইলগুলি করার আগে কোনও সিনট্যাক্স ত্রুটির জন্য।

# nginx -t 
# systemctl restart nginx php-fpm php56-php-fpm

19. অন্য একটি কাজ করার আছে, বিশেষত আপনি যদি নিজের সার্ভার স্থানীয়ভাবে চালাচ্ছেন তবে নীচের স্ক্রিন শটটিতে আপনার যেমন/ইত্যাদি/হোস্ট ফাইল ব্যবহার করে আপনাকে স্থানীয় ডিএনএস সেটআপ করতে হবে।

192.168.56.10   example1.com   example1
192.168.56.10   example2.com   example2

20. অবশেষে, একটি ওয়েব ব্রাউজার খুলুন এবং সিস্টেমে ইনস্টল করা পিএইচপি এর সংস্করণগুলি যাচাই করতে নিম্নলিখিত ঠিকানাগুলি টাইপ করুন।

http://example1.com/index.php
http://example2.com/index.php

এটাই! এখন আপনি বিভিন্ন পিএইচপি সংস্করণ সহ ফাইল এবং পরীক্ষা ওয়েবসাইট স্থাপন করতে পারেন। আপনার যদি কিছু যোগ করার বা প্রশ্ন রেখে দিতে চান তবে নীচের মন্তব্য ফর্মটি ব্যবহার করুন।