Jinsi ya Kufunga Nginx, MariaDB 10, PHP 7 (LEMP Stack) mnamo 16.10/16.04


Rafu ya LEMP ni kifupi ambacho kinawakilisha kundi la vifurushi (Linux OS, seva ya wavuti ya Nginx, hifadhidata ya MySQL\MariaDB na lugha ya programu inayobadilika ya upande wa seva ya PHP) ambayo hutumiwa kupeleka programu-tumizi za wavuti na kurasa za wavuti.

Mafunzo haya yatakuongoza jinsi ya kusakinisha rundo la LEMP kwa kutumia MariaDB 10, PHP 7 na Usaidizi wa HTTP 2.0 kwa Nginx kwenye Ubuntu 16.10 na matoleo ya seva/desktop ya Ubuntu 16.04.

  1. Usakinishaji wa Toleo la Seva ya Ubuntu 16.04 [maelekezo pia hufanya kazi kwenye Ubuntu 16.10]

Hatua ya 1: Sakinisha Seva ya Wavuti ya Nginx

1. Nginx ni seva ya wavuti ya kisasa na ya rasilimali inayotumika kuonyesha kurasa za wavuti kwa wageni kwenye mtandao. Tutaanza kwa kusakinisha seva ya wavuti ya Nginx kutoka hazina rasmi za Ubuntu kwa kutumia mstari wa amri apt.

$ sudo apt-get install nginx

2. Kisha, toa amri za systemctl ili kuthibitisha ikiwa Nginx imeanzishwa na kuunganishwa kwenye bandari 80.

$ netstat -tlpn
$ sudo systemctl status nginx.service

Mara tu unapopata uthibitisho kwamba seva imeanzishwa unaweza kufungua kivinjari na kuelekea kwenye anwani ya IP ya seva yako au rekodi ya DNS kwa kutumia itifaki ya HTTP ili kutembelea ukurasa wa wavuti wa Nginx.

http://IP-Address

Hatua ya 2: Washa Itifaki ya Nginx HTTP/2.0

3. Itifaki ya HTTP/2.0 ambayo imeundwa kwa chaguo-msingi katika toleo la hivi punde la jozi za Nginx kwenye Ubuntu 16.04 inafanya kazi tu kwa kushirikiana na SSL na kuahidi uboreshaji mkubwa wa kasi katika upakiaji wa kurasa za wavuti za SSL.

Ili kuwezesha itifaki katika Nginx kwenye Ubuntu 16.04, kwanza nenda kwenye faili za usanidi wa tovuti za Nginx na uhifadhi nakala ya faili ya usanidi chaguo-msingi kwa kutoa amri iliyo hapa chini.

$ cd /etc/nginx/sites-available/
$ sudo mv default default.backup

4. Kisha, kwa kutumia kihariri maandishi unda ukurasa chaguomsingi mpya na maagizo hapa chini:

server {
        listen 443 ssl http2 default_server;
        listen [::]:443 ssl http2 default_server;

        root /var/www/html;

        index index.html index.htm index.php;

        server_name 192.168.1.13;

        location / {
                try_files $uri $uri/ =404;
        }

        ssl_certificate /etc/nginx/ssl/nginx.crt;
        ssl_certificate_key /etc/nginx/ssl/nginx.key;

        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
        ssl_dhparam  /etc/nginx/ssl/dhparam.pem;
        ssl_session_cache shared:SSL:20m;
        ssl_session_timeout 180m;
        resolver 8.8.8.8 8.8.4.4;
        add_header Strict-Transport-Security "max-age=31536000;
        #includeSubDomains" always;


        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        }

        location ~ /\.ht {
                deny all;
        }

}

server {
       listen         80;
       listen    [::]:80;
       server_name    192.168.1.13;
       return         301 https://$server_name$request_uri;
}

Kijisehemu cha usanidi kilicho hapo juu huwezesha matumizi ya HTTP/2.0 kwa kuongeza kigezo cha http2 kwa maagizo yote ya usikilizaji ya SSL.

Pia, sehemu ya mwisho ya dondoo iliyoambatanishwa katika maagizo ya seva inatumika kuelekeza upya trafiki yote isiyo ya SSL hadi kwa seva pangishi chaguomsingi ya SSL/TLS. Pia, badilisha maagizo ya server_name ili kulingana na anwani yako ya IP au rekodi ya DNS (ikiwezekana FQDN).

5. Mara tu unapomaliza kuhariri faili ya usanidi chaguo-msingi ya Nginx na mipangilio iliyo hapo juu, toa na uorodheshe faili ya cheti cha SSL na ufunguo kwa kutekeleza amri zilizo hapa chini.

Jaza cheti kwa mipangilio yako maalum na uzingatie mpangilio wa Jina la Kawaida ili kuendana na rekodi yako ya DNS FQDN au anwani yako ya IP ya seva ambayo itatumika kufikia ukurasa wa wavuti.

$ sudo mkdir /etc/nginx/ssl
$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.crt
$ ls /etc/nginx/ssl/

6. Pia, unda DH cypher, ambayo ilibadilishwa kwenye faili ya usanidi iliyo hapo juu kwenye ssl_dhparam mstari wa maelekezo, kwa kutoa amri iliyo hapa chini:

$ sudo openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048

7. Pindi kitufe cha Diffie-Hellman kimeundwa, thibitisha ikiwa faili ya usanidi wa Nginx imeandikwa kwa usahihi na inaweza kutumika na seva ya wavuti ya Nginx na uanzishe upya daemon ili kuonyesha mabadiliko kwa kutekeleza amri zilizo hapa chini.

$ sudo nginx -t
$ sudo systemctl restart nginx.service

8. Ili kujaribu ikiwa Nginx inatumia itifaki ya HTTP/2.0 toa amri iliyo hapa chini. Kuwepo kwa h2 itifaki iliyotangazwa kunathibitisha kwamba Nginx imesanidiwa kutumia itifaki ya HTTP/2.0. Vivinjari vyote vya kisasa vilivyosasishwa vinapaswa kutumia itifaki hii kwa chaguomsingi.

$ openssl s_client -connect localhost:443 -nextprotoneg ''

Hatua ya 3: Sakinisha Mkalimani wa PHP 7

Nginx inaweza kutumika pamoja na mkalimani wa lugha ya uchakataji wa PHP ili kutoa maudhui yanayobadilika ya wavuti kwa usaidizi wa meneja wa mchakato wa FastCGI uliopatikana kwa kusakinisha kifurushi cha binary cha php-fpm kutoka hazina rasmi za Ubuntu.

9. Ili kunyakua PHP7.0 na vifurushi vya ziada ambavyo vitaruhusu PHP kuwasiliana na seva ya wavuti ya Nginx toa amri iliyo hapa chini kwenye kiweko cha seva yako:

$ sudo apt install php7.0 php7.0-fpm 

10. Pindi mkalimani wa PHP7.0 atakaposakinishwa kwa ufanisi kwenye mashine yako, anza na uangalie daemon ya php7.0-fpm kwa kutoa amri iliyo hapa chini:

$ sudo systemctl start php7.0-fpm
$ sudo systemctl status php7.0-fpm

11. Faili ya sasa ya usanidi ya Nginx tayari imesanidiwa kutumia kidhibiti mchakato wa PHP FastCGI ili kuhudumia maudhui yanayobadilika.

Kizuizi cha seva kinachowezesha Nginx kutumia mkalimani wa PHP kimewasilishwa kwenye dondoo lililo hapa chini, kwa hivyo hakuna marekebisho zaidi ya faili ya usanidi ya Nginx inayohitajika.

location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        }

Ifuatayo ni picha ya skrini ya maagizo unayohitaji ili kutoa maoni na kurekebisha ni faili ya usanidi ya awali ya Nginx.

12. Ili kujaribu uhusiano wa seva ya wavuti ya Nginx na msimamizi wa mchakato wa PHP FastCGI tengeneza faili ya usanidi ya PHP info.php kwa kutoa amri iliyo hapa chini na uthibitishe mipangilio kwa kutembelea faili hii ya usanidi ukitumia anwani iliyo hapa chini: http://IP_au kikoa/info.php.

$ sudo su -c 'echo "<?php phpinfo(); ?>" |tee /var/www/html/info.php'

Pia angalia ikiwa itifaki ya HTTP/2.0 inatangazwa na seva kwa kutafuta laini ya $_SERVER[‘SERVER_PROTOCOL’] kwenye kizuizi cha Vigezo vya PHP kama inavyoonyeshwa kwenye picha ya skrini iliyo hapa chini.

13. Ili kusakinisha moduli za ziada za PHP7.0 tumia amri ya apt search php7.0 kupata moduli ya PHP na kuisakinisha.

Pia, jaribu kusakinisha moduli zifuatazo za PHP ambazo zinaweza kukusaidia iwapo unapanga kusakinisha WordPress au CMS nyingine.

$ sudo apt install php7.0-mcrypt php7.0-mbstring

14. Kusajili moduli za ziada za PHP anzisha upya daemoni ya PHP-FPM kwa kutoa amri iliyo hapa chini.

$ sudo systemctl restart php7.0-fpm.service

Hatua ya 4: Sakinisha Hifadhidata ya MariaDB

15. Hatimaye, ili kukamilisha mrundikano wetu wa LEMP tunahitaji sehemu ya hifadhidata ya MariaDB ili kuhifadhi na kudhibiti data ya tovuti.

Sakinisha mfumo wa usimamizi wa hifadhidata wa MariaDB kwa kutekeleza amri iliyo hapa chini na uanze upya huduma ya PHP-FPM ili kutumia moduli ya MySQL kufikia hifadhidata.

$ sudo apt install mariadb-server mariadb-client php7.0-mysql
$ sudo systemctl restart php7.0-fpm.service

16. Ili kupata usakinishaji wa MariaDB, endesha hati ya usalama iliyotolewa na kifurushi cha binary kutoka hazina za Ubuntu ambayo itakuuliza uweke nenosiri la msingi, uondoe watumiaji wasiojulikana, uzime kuingia kwa mizizi ukiwa mbali na uondoe hifadhidata ya majaribio.

Endesha hati kwa kutoa amri iliyo hapa chini na ujibu maswali yote kwa ndiyo. Tumia picha ya skrini iliyo hapa chini kama mwongozo.

$ sudo mysql_secure_installation

17. Ili kusanidi MariaDB ili watumiaji wa kawaida waweze kufikia hifadhidata bila upendeleo wa sudo wa mfumo, nenda kwa kiolesura cha mstari wa amri cha MySQL na haki za mizizi na utekeleze amri zilizo hapa chini kwenye mkalimani wa MySQL:

$ sudo mysql 
MariaDB> use mysql;
MariaDB> update user set plugin=’‘ where User=’root’;
MariaDB> flush privileges;
MariaDB> exit

Mwishowe, ingia kwenye hifadhidata ya MariaDB na uendeshe amri ya kiholela bila upendeleo wa mizizi kwa kutekeleza amri ifuatayo:

$ mysql -u root -p -e 'show databases'

Hayo yote! Sasa una mrundikano wa LEMP uliosanidiwa kwenye Ubuntu 16.10 na seva ya Ubuntu 16.04 ambayo hukuruhusu kupeleka programu mahiri za wavuti ambazo zinaweza kuingiliana na hifadhidata.