Jinsi ya Kuendesha Wavuti Nyingi na Matoleo tofauti ya PHP katika Nginx
Wakati mwingine watengenezaji PHP wanataka kujenga na kuendesha tovuti/programu mbalimbali kwa kutumia matoleo tofauti ya PHP kwenye seva moja ya wavuti. Kama msimamizi wa mfumo wa Linux, unatakiwa kusanidi mazingira ambapo unaweza kuendesha tovuti nyingi kwa kutumia toleo tofauti la PHP kwenye seva moja ya wavuti yaani Nginx.
Katika somo hili, tutakueleza jinsi ya kusakinisha matoleo mengi ya PHP na kusanidi seva ya wavuti ya Nginx ili kufanya kazi nayo kupitia vizuizi vya seva (wapangishi halisi katika Apache) katika usambazaji wa CentOS/RHEL 7 kwa kutumia rafu ya LEMP.
Nginx hutumia PHP-FPM (inasimama kwa Kidhibiti cha Mchakato cha FastCGI), ambayo ni utekelezaji mbadala wa PHP FastCGI na huduma zingine za ziada, muhimu kwa tovuti zilizopakiwa sana.
- Seva ya RHEL 7 yenye usakinishaji mdogo.
- Seva ya HTTP ya Nginx.
- PHP 7.1 (itatumika kama toleo chaguo-msingi) na 5.6.
- Seva ya Hifadhidata ya MariaDB.
- Anwani ya IP ya seva: 192.168.56.10.
- Tovuti: example1.com na example2.com.
Hatua ya 1: Kusakinisha na Kuwezesha EPEL na Hifadhi ya Remi
1. Anza kwanza kwa kusakinisha na kuwezesha hazina ya EPEL na Remi, ambayo inatoa matoleo mapya zaidi ya mkusanyiko wa PHP kwenye usambazaji wa 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. Kisha sakinisha kifurushi cha yum-utils, ambacho hupanua utendakazi asili wa yum na kutoa amri ya yum-config-manager, ambayo hutumika kuwezesha au kuzima hazina za Yum kwenye mfumo.
# yum install yum-utils
Kumbuka: Kwenye RHEL 7 unaweza kuwezesha chaneli ya hiari kwa baadhi ya vitegemezi kwa kutumia amri ifuatayo.
# subscription-manager repos --enable=rhel-7-server-optional-rpms
Hatua ya 2: Kufunga Seva ya Wavuti ya Nginx
3. Ili kusakinisha toleo la hivi punde la Nginx, tunahitaji kuongeza hazina rasmi ya Nginx, unda faili iitwayo /etc/yum.repos.d/nginx.repo.
# vi /etc/yum.repos.d/nginx.repo
Ongeza mistari ifuatayo kwenye faili kulingana na usambazaji wako.
--------------- 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. Mara nginx repo imeongezwa, unaweza kusakinisha Nginx kwa kutumia zana ya kidhibiti kifurushi cha yum kama inavyoonyeshwa.
# yum install nginx
Hatua ya 3: Kufunga Seva ya Hifadhidata ya MariaDB
5. Ili kusakinisha toleo jipya zaidi la MariaDB, tunahitaji kuongeza hazina rasmi ya MariaDB, kuunda faili inayoitwa /etc/yum.repos.d/mariadb.repo.
# vi /etc/yum.repos.d/mariadb.repo
Ongeza mistari ifuatayo kwenye faili kulingana na usambazaji wako.
--------------- 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. Mara tu repo ya MariaDB imeongezwa, unaweza kusakinisha MariaDB kwa kutumia zana ya kidhibiti kifurushi cha yum kama inavyoonyeshwa.
# yum install MariaDB-client MariaDB-server
7. Baadaye, linda usakinishaji wa seva ya hifadhidata kwa kutumia hati iliyo hapa chini. Weka nenosiri la msingi na ujibu y
na ubonyeze [Enter] kwa maswali mengine yanayofuata ili kuzima kuingia kwa mtumiaji wa mbali, kuondoa akaunti za mtumiaji asiyejulikana na hifadhidata ya majaribio ambayo kwa chaguomsingi inaweza kufikiwa na watumiaji wote. , hata watumiaji wasiojulikana.
# mysql_secure_installation
Hatua ya 4: Kusakinisha Matoleo Nyingi ya PHP
8. Ili kusakinisha matoleo tofauti ya PHP kwa miradi yako, tumia yum-config-manager amri kusakinisha matoleo mengi ya PHP pamoja na moduli nyingi zinazohitajika kama inavyoonyeshwa.
# 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. Mara baada ya kusakinisha PHP, unaweza kutumia amri ifuatayo kuangalia toleo chaguo-msingi la PHP linalotumika kwenye seva yako.
# php -v
Hatua ya 5: Kusanidi PHP-FPM na PHP56-PHP-FPM
10. Hii ni sehemu ya kuvutia zaidi ya mafunzo haya, inaelezea jinsi unaweza kweli kuendesha matoleo mengi ya PHP kwenye seva yako. Hapa, utasanidi matoleo tofauti ya php-fpm ambayo Nginx itafanya kazi nayo. Unapaswa kufafanua mtumiaji/kikundi cha michakato ya FastCGI na vile vile bandari watakazosikiliza.
Hizi ni faili mbili za usanidi zifuatazo ambazo utaenda kuhariri.
- php-fpm (chaguo-msingi 7.1) - /etc/php-fpm.d/www.conf
- php56-php-fpm - /opt/remi/php56/root/etc/php-fpm.d/www.conf
Fungua faili zilizo hapo juu, weka mtumiaji/kikundi cha michakato ya 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]
Thamani chaguo-msingi zinapaswa kuwa apache, zibadilishe kuwa nginx kama inavyoonyeshwa.
user = nginx group = nginx
11. Kisha, pata vigezo vya kusikiliza, na ueleze anwani: bandari ambayo maombi ya FastCGI yatapokelewa.
listen = 127.0.0.1:9000 [php-fpm] listen = 127.0.0.1:9001 [php56-php-fpm]
12. Mara tu usanidi wote ulio hapo juu utakapokamilika, unahitaji kuanza na kuwezesha Nginx, MariaDB na PHP-FPM kuanza kiotomatiki kwenye kuwasha mfumo.
# 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
Makini: Iwapo utapata makosa yoyote unapoanza mfano wa pili wa PHP, php56-php-fpm, sera ya SELinux inaweza kuwa inaizuia kuanza. Ikiwa SELinux iko katika hali ya kutekeleza, iweke katika hali ya kuruhusu, kisha ujaribu kuanzisha huduma tena.
# getenforce # setenforce 0
Hatua ya 6: Sanidi Tovuti zenye Ruhusa
13. Katika hatua hii, sasa unaweza kuunda saraka zinazohitajika kwa tovuti zako chini ya /var/www/html/. Pia unahitaji kuunda saraka ili kuhifadhi kumbukumbu kama ifuatavyo:
---------------- 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. Weka ruhusa zinazofaa za umiliki kwenye saraka zote.
---------------- 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/
Hatua ya 7: Sanidi Vitalu vya Seva ya Nginx kwa Wavuti
15. Sasa sanidi jinsi Nginx itakavyoshughulikia maombi kwa tovuti zako kwa kutumia faili za usanidi za kuzuia seva ambazo zinapaswa kupatikana katika /etc/nginx/conf.d/.
Unda faili za usanidi za tovuti zako zinazoishia na .conf
kiendelezi.
# vi /etc/nginx/conf.d/example1.com.conf # vi /etc/nginx/conf.d/example2.com.conf
Kisha ubandike usanidi ufuatao wa kuzuia seva kwenye faili husika.
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. Hakikisha kuwa una mstari ufuatao katika sehemu ya kufunga ya kizuizi cha http katika /etc/nginx/nginx.conf. Inasaidia kujumuisha faili zote za usanidi ndani ya /etc/nginx/conf.d/ saraka wakati Nginx inafanya kazi.
include /etc/nginx/conf.d/*.conf;
Hatua ya 8: Kujaribu matoleo tofauti ya PHP
17. Hatimaye, unahitaji kupima kama seva yako inatumia matoleo mawili ya PHP. Unaweza kuunda hati ya msingi sana ya info.php katika saraka za mizizi ya tovuti zako kama inavyoonyeshwa.
# echo "<?php phpinfo(); ?>" > /var/www/html/example1.com/info.php # echo "<?php phpinfo(); ?>" > /var/www/html/example2.com/info.php
18. Ili kutumia mabadiliko yote uliyofanya hapo juu, unahitaji kuanzisha upya Nginx, php-fpm na php56-php-fpm. Lakini unaweza kwanza kuangalia kuwa faili za usanidi wa Nginx kwa makosa yoyote ya syntax kabla ya kufanya hivyo.
# nginx -t # systemctl restart nginx php-fpm php56-php-fpm
19. Kuna jambo lingine la mwisho la kufanya, hasa ikiwa unaendesha seva yako ndani ya nchi, unahitaji kusanidi DNS ya ndani kwa kutumia /etc/hosts faili kama inavyoonyeshwa kwenye picha ya skrini hapa chini.
192.168.56.10 example1.com example1 192.168.56.10 example2.com example2
20. Hatimaye, fungua kivinjari na uandike anwani zifuatazo ili kuthibitisha matoleo ya PHP iliyosakinishwa kwenye mfumo.
http://example1.com/index.php http://example2.com/index.php
Hiyo ndiyo! Sasa unaweza kupeleka faili na tovuti za kujaribu na matoleo tofauti ya PHP. Ikiwa una nyongeza yoyote ya kufanya au maswali ya kuweka mbele, tumia fomu ya maoni hapa chini.