ວິທີການ ດຳ ເນີນງານຫລາຍເວັບໄຊທ໌້ດ້ວຍຫລາຍລຸ້ນ PHP ທີ່ແຕກຕ່າງກັນໃນ Nginx


ບາງຄັ້ງນັກພັດທະນາ PHP ຕ້ອງການສ້າງແລະ ດຳ ເນີນການເວບໄຊທ໌/ໂປແກຼມຕ່າງໆທີ່ແຕກຕ່າງກັນໂດຍໃຊ້ PHP ທີ່ແຕກຕ່າງກັນໃນເວັບດຽວກັນ. ໃນຖານະເປັນຜູ້ບໍລິຫານລະບົບ Linux, ທ່ານ ຈຳ ເປັນຕ້ອງໄດ້ຕັ້ງສະພາບແວດລ້ອມທີ່ທ່ານສາມາດ ດຳ ເນີນການຫລາຍເວັບໄຊທ໌ທ໌ໂດຍໃຊ້ສະບັບພາສາ PHP ທີ່ແຕກຕ່າງກັນໃນເວັບໄຊຕ໌ເຊີເວີ i. e. Nginx.

ໃນບົດແນະ ນຳ ນີ້, ພວກເຮົາຈະອະທິບາຍໃຫ້ທ່ານຮູ້ວິທີຕິດຕັ້ງ PHP ຫລາຍລຸ້ນແລະ ກຳ ຫນົດຄ່າເວັບໄຊຕ໌ Nginx ເພື່ອເຮັດວຽກກັບພວກມັນໂດຍຜ່ານ server block (virtual hosts ໃນ Apache) ໃນ CentOS/RHEL 7 ແຈກຈ່າຍໂດຍໃຊ້ LEMP stack.

Nginx ໃຊ້ PHP-FPM (ຢືນ ສຳ ລັບຜູ້ຈັດການ Process FastCGI), ເຊິ່ງເປັນການປະຕິບັດ PHP FastCGI ທາງເລືອກທີ່ມີຄຸນລັກສະນະພິເສດ, ມີປະໂຫຍດຫຼາຍ ສຳ ລັບເວັບໄຊທ໌ທີ່ໂຫລດ ໜັກ.

<

  • ເຄື່ອງແມ່ຂ່າຍຂອງ RHEL 7 ມີການຕິດຕັ້ງ ໜ້ອຍ ທີ່ສຸດ.
  • Nginx HTTP Server.
  • PHP 7.1 (ເພື່ອໃຊ້ເປັນເວີຊັ່ນເລີ່ມຕົ້ນ) ແລະ 5.6.
  • Server ຖານຂໍ້ມູນ MariaDB.
  • ທີ່ຢູ່ IP ຂອງ Server: 192.168.56.10.
  • ເວບໄຊທ໌: example1.com ແລະ example2.com.
  • ຂັ້ນຕອນທີ 1: ການຕິດຕັ້ງແລະເປີດໃຊ້ EPEL ແລະ Remi Repository

    1. ເລີ່ມຕົ້ນຄັ້ງ ທຳ ອິດໂດຍການຕິດຕັ້ງແລະເປີດໃຊ້ຫໍສະມຸດ EPEL ແລະ Remiitory, ເຊິ່ງສະ ເໜີ ໂປແກຼມ PHP ລຸ້ນລ້າສຸດໃນການແຈກຈ່າຍ CentOS/RHEL 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
    

    2. ຕໍ່ໄປຕິດຕັ້ງຊຸດ yum-utils, ເຊິ່ງຂະຫຍາຍການເຮັດວຽກຂອງ yum ແລະໃຫ້ ຄຳ ສັ່ງ yum-config-manager, ເຊິ່ງໃຊ້ເພື່ອເປີດຫລືປິດຫໍສະ ໝຸດ Yum ໃນລະບົບ.

    # yum install yum-utils
    

    ໝາຍ ເຫດ: ໃນ RHEL 7 ທ່ານສາມາດເປີດຊ່ອງທາງເລືອກ ສຳ ລັບຄວາມເພິ່ງພາອາໄສບາງຢ່າງໂດຍໃຊ້ ຄຳ ສັ່ງຕໍ່ໄປນີ້.

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

    ຂັ້ນຕອນທີ 2: ການຕິດຕັ້ງ Nginx Web Server

    3. ໃນການຕິດຕັ້ງ Nginx ເວີຊັນລ້າສຸດ, ພວກເຮົາຕ້ອງເພີ່ມເອກະສານ Nginx ຢ່າງເປັນທາງການ, ສ້າງແຟ້ມຊື່ວ່າ /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 
    

    4. ເມື່ອ nginx repo ໄດ້ຖືກເພີ່ມແລ້ວ, ທ່ານສາມາດຕິດຕັ້ງ Nginx ໂດຍໃຊ້ yum package manager tool ຕາມທີ່ສະແດງ.

    # yum install nginx
    

    ຂັ້ນຕອນທີ 3: ຕິດຕັ້ງ Server DB ຂອງຖານຂໍ້ມູນ

    5. ໃນການຕິດຕັ້ງ MariaDB ລຸ້ນລ້າສຸດ, ພວກເຮົາ ຈຳ ເປັນຕ້ອງເພີ່ມບ່ອນເກັບມ້ຽນ MariaDB ຢ່າງເປັນທາງການ, ສ້າງແຟ້ມຊື່ວ່າ /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 
    

    6. ເມື່ອ repo MariaDB ໄດ້ຖືກເພີ່ມແລ້ວ, ທ່ານສາມາດຕິດຕັ້ງ MariaDB ໂດຍໃຊ້ເຄື່ອງມືຈັດການ package yum ດັ່ງທີ່ສະແດງໄວ້.

    # yum install MariaDB-client MariaDB-server
    

    7. ຫລັງຈາກນັ້ນ, ຮັບປະກັນການຕິດຕັ້ງຖານຂໍ້ມູນ server ໂດຍໃຊ້ສະຄິບຂ້າງລຸ່ມ. ຕັ້ງລະຫັດລັບລະຫັດລັບແລະຕອບ y ແລະກົດ [Enter] ສ່ວນທີ່ເຫຼືອຂອງ ຄຳ ຖາມຕໍ່ໄປເພື່ອປິດການເຂົ້າສູ່ລະບົບຂອງຜູ້ໃຊ້ຮາກຫ່າງໄກສອກຫຼີກ, ລຶບບັນຊີຜູ້ໃຊ້ທີ່ບໍ່ລະບຸຊື່ແລະຖານຂໍ້ມູນທົດສອບເຊິ່ງໂດຍຜູ້ໃຊ້ທຸກຄົນສາມາດເຂົ້າເຖິງໄດ້ໂດຍປົກກະຕິ , ແມ່ນແຕ່ຜູ້ໃຊ້ທີ່ບໍ່ລະບຸຊື່.

    # mysql_secure_installation
    

    ຂັ້ນຕອນທີ 4: ການຕິດຕັ້ງຫລາຍຮຸ່ນຂອງ PHP

    8. ໃນການຕິດຕັ້ງ PHP ລຸ້ນ ໃໝ່ ສຳ ລັບໂຄງການຂອງທ່ານ, ໃຫ້ໃຊ້ ຄຳ ສັ່ງ yum-config-manager ເພື່ອຕິດຕັ້ງ PHP ຫລາຍລຸ້ນພ້ອມກັບໂມດູນທີ່ຕ້ອງການຫລາຍທີ່ສຸດເທົ່າທີ່ສະແດງ.

    # 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 ແລ້ວ, ທ່ານສາມາດໃຊ້ ຄຳ ສັ່ງຕໍ່ໄປນີ້ເພື່ອກວດສອບສະບັບຂອງ PHP ທີ່ໃຊ້ໃນ server ຂອງທ່ານ.

    # php -v
    

    ຂັ້ນຕອນທີ 5: ການຕັ້ງຄ່າ PHP-FPM ແລະ PHP56-PHP-FPM

    10. ນີ້ແມ່ນພາກສ່ວນທີ່ ໜ້າ ສົນໃຈທີ່ສຸດຂອງບົດແນະ ນຳ ນີ້, ມັນອະທິບາຍເຖິງວິທີທີ່ທ່ານສາມາດ ດຳ ເນີນການ PHP ຫຼາຍສະບັບໃນ server ຂອງທ່ານ ນີ້, ທ່ານຈະ ກຳ ຫນົດຄ່າ php-fpm ທີ່ແຕກຕ່າງກັນທີ່ Nginx ຈະເຮັດວຽກ ນຳ. ທ່ານຄວນ ກຳ ນົດຜູ້ໃຊ້/ກຸ່ມຂອງຂະບວນການ FastCGI ພ້ອມທັງທ່າເຮືອທີ່ພວກເຂົາຈະຟັງ.

    ເຫຼົ່ານີ້ແມ່ນສອງເອກະສານການຕັ້ງຄ່າຕໍ່ໄປນີ້ທີ່ທ່ານຈະແກ້ໄຂ.

    • php-fpm (ເລີ່ມຕົ້ນ 7.1) - /etc/php-fpm.d/www.conf
    • php56-php-fpm - /opt/remi/php56/root/etc/php-fpm.d/www.conf

    ເປີດແຟ້ມຂ້າງເທິງ, ກຳ ນົດຜູ້ໃຊ້/ກຸ່ມຂອງຂະບວນການ FastCGI.

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

    ຄ່າເລີ່ມຕົ້ນຄວນຈະເປັນ apache, ປ່ຽນພວກມັນໃຫ້ເປັນ nginx ດັ່ງທີ່ເຫັນ.

    user = nginx
    group = nginx
    

    11. ຕໍ່ໄປ, ຊອກຫາຕົວ ກຳ ນົດການຟັງ, ແລະ ກຳ ນົດທີ່ຢູ່: ພອດທີ່ ຄຳ ຮ້ອງຂໍ FastCGI ຈະໄດ້ຮັບ.

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

    12. ເມື່ອການຕັ້ງຄ່າທັງ ໝົດ ຂ້າງເທິງເຮັດແລ້ວ, ທ່ານ ຈຳ ເປັນຕ້ອງເລີ່ມຕົ້ນແລະເປີດໃຊ້ Nginx, MariaDB ແລະ PHP-FPM ເພື່ອເລີ່ມຕົ້ນໂດຍອັດຕະໂນມັດໃນລະບົບ boot system.

    # 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 
    

    ເອົາໃຈໃສ່: ໃນກໍລະນີທີ່ທ່ານມີຂໍ້ຜິດພາດໃດໆໃນຂະນະທີ່ເລີ່ມຕົ້ນຕົວຢ່າງທີສອງຂອງ PHP, php56-php-fpm, ນະໂຍບາຍ SELinux ສາມາດກີດຂວາງມັນຈາກການເລີ່ມຕົ້ນ. ຖ້າ SELinux ກຳ ລັງຢູ່ໃນຮູບແບບການບັງຄັບໃຊ້, ຕັ້ງມັນໄວ້ໃນຮູບແບບທີ່ອະນຸຍາດ, ຫຼັງຈາກນັ້ນລອງເລີ່ມການບໍລິການອີກຄັ້ງ.

    # getenforce
    # setenforce 0 
    

    ຂັ້ນຕອນທີ 6: ຕັ້ງເວບໄຊທ໌ດ້ວຍການອະນຸຍາດ

    13. ໃນຈຸດນີ້, ດຽວນີ້ທ່ານສາມາດສ້າງໄດເລກະທໍລີທີ່ ຈຳ ເປັນ ສຳ ລັບເວັບໄຊທ໌ຂອງທ່ານພາຍໃຕ້/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: ຕັ້ງຄ່າ Server Nginx Server ສຳ ລັບເວບໄຊທ໌ຕ່າງໆ

    15. ຕອນນີ້ ກຳ ນົດວິທີການທີ່ Nginx ຈະ ດຳ ເນີນການ ຄຳ ຮ້ອງຂໍກັບເວັບໄຊທ໌ຂອງທ່ານໂດຍໃຊ້ແຟ້ມການຕັ້ງຄ່າ block server ທີ່ຄວນຕັ້ງຢູ່ໃນ /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. ໃຫ້ແນ່ໃຈວ່າທ່ານມີເສັ້ນຕໍ່ໄປນີ້ໃນສ່ວນປິດຂອງ http block ໃນ /etc/nginx/nginx.conf. ມັນຊ່ວຍໃນການລວມເອົາເອກະສານການຕັ້ງຄ່າທັງ ໝົດ ພາຍໃນໄດເລກະທໍລີ /etc/nginx/conf.d/ ເມື່ອ Nginx ກຳ ລັງແລ່ນຢູ່.

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

    ຂັ້ນຕອນທີ 8: ການທົດສອບ PHP ທີ່ແຕກຕ່າງກັນ

    17. ສຸດທ້າຍ, ທ່ານ ຈຳ ເປັນຕ້ອງທົດສອບວ່າ server ຂອງທ່ານ ກຳ ລັງໃຊ້ PHP ສອງລຸ້ນ. ທ່ານສາມາດສ້າງສະຄິບ info.php ທີ່ເປັນພື້ນຖານໃນບັນດາຮາກຖານເອກະສານຂອງເວັບໄຊທ໌ຂອງທ່ານຕາມທີ່ສະແດງ.

    # 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 ສຳ ລັບຂໍ້ຜິດພາດຂອງ syntax ໃດກ່ອນທີ່ຈະເຮັດ.

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

    19. ມີອີກສິ່ງ ໜຶ່ງ ທີ່ສຸດທ້າຍທີ່ຕ້ອງເຮັດ, ໂດຍສະເພາະຖ້າທ່ານ ກຳ ລັງແລ່ນ server ຂອງທ່ານຢູ່ໃນທ້ອງຖິ່ນ, ທ່ານ ຈຳ ເປັນຕ້ອງຕັ້ງ DNS ທ້ອງຖິ່ນໂດຍໃຊ້ເອກະສານ/etc/hosts ດັ່ງທີ່ສະແດງຢູ່ໃນ ໜ້າ ຈໍຂ້າງລຸ່ມນີ້.

    192.168.56.10   example1.com   example1
    192.168.56.10   example2.com   example2
    

    20. ສຸດທ້າຍ, ເປີດໂປແກຼມທ່ອງເວັບແລະພິມທີ່ຢູ່ຕໍ່ໄປນີ້ເພື່ອກວດສອບເວີຊັນຂອງ PHP ທີ່ຕິດຕັ້ງຢູ່ໃນລະບົບ.

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

    ນັ້ນແມ່ນມັນ! ຕອນນີ້ທ່ານສາມາດ ນຳ ໃຊ້ແຟ້ມເອກະສານແລະທົດສອບເວັບໄຊທ໌ດ້ວຍລຸ້ນ PHP ທີ່ແຕກຕ່າງກັນ. ຖ້າທ່ານມີສິ່ງໃດເພີ່ມເຕີມທີ່ຕ້ອງເຮັດຫຼື ຄຳ ຖາມທີ່ຈະວາງຕໍ່, ໃຊ້ແບບຟອມ ຄຳ ເຫັນຂ້າງລຸ່ມນີ້.