16.10/16.04-de Nginx, MariaDB 10, PHP 7 (LEMP Stack) nädip gurmaly?


LEMP ýygyndysy, dinamiki web programmalaryny we web sahypalaryny ýerleşdirmek üçin ulanylýan paketleriň toparyny (Linux OS, Nginx web serweri, MySQL\MariaDB maglumat bazasy we PHP serwer tarapy dinamiki programmirleme dili) aňladýan gysgaça söz.

Bu gollanma, Ubuntu 16.10 we Ubuntu 16.04 serwer/iş stoly neşirlerinde MariaDB 10, PHP 7 we Nginx üçin HTTP 2.0 goldawy bilen LEMP stakasyny nädip gurmalydygyny görkezer.

  1. Ubuntu 16.04 Serwer neşirini gurmak [görkezmeler Ubuntu 16.10-da işleýär]

1-nji ädim: Nginx web serwerini guruň

1. Nginx, internetde gelýänlere web sahypalaryny görkezmek üçin ulanylýan häzirki zaman we çeşmeleri tygşytly web serweri. Ubuntu resmi ammarlaryndan apt buýruk setirini ulanyp, Nginx web serwerini gurmak bilen başlarys.

$ sudo apt-get install nginx

2. Ondan soň, Nginx-iň başlandygyny we 80-nji portda baglanyşýandygyny ýa-da ýokdugyny tassyklamak üçin systemctl buýruklaryny beriň.

$ netstat -tlpn
$ sudo systemctl status nginx.service

Serweriň işe başlandygyny tassyklandan soň, Nginx deslapky web sahypasyna girmek üçin brauzer açyp, HTTP protokolyny ulanyp, serwer IP adresine ýa-da DNS ýazgysyna geçip bilersiňiz.

http://IP-Address

2-nji ädim: Nginx HTTP/2.0 protokolyny işlediň

3. Ubuntu 16.04-de Nginx ikilikleriniň iň soňky goýberilişinde düzülen HTTP/2.0 protokoly diňe SSL bilen bilelikde işleýär we web SSL web sahypalaryny ýüklemekde uly tizligi ýokarlandyrmagy wada berýär.

Ubuntu 16.04-de Nginx-de protokoly işletmek üçin ilki bilen Nginx elýeterli saýtlaryň konfigurasiýa faýllaryna geçiň we aşakdaky buýrugy bermek bilen deslapky konfigurasiýa faýlyny ätiýaçlaň.

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

4. Soňra, tekst redaktoryny ulanyp, aşakdaky görkezmeler bilen täze başlangyç sahypa dörediň:

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;
}

Aboveokardaky konfigurasiýa bölegi, ähli SSL diňlemek görkezmelerine http2 parametrini goşup, HTTP/2.0 ulanmaga mümkinçilik berýär.

Şeýle hem, serwer direktiwasynda ýerleşdirilen parçanyň soňky bölegi SSL däl trafigi SSL/TLS deslapky hostyna gönükdirmek üçin ulanylýar. Şeýle hem, öz IP adresiňize ýa-da DNS ýazgylaryňyza (has gowusy FQDN) gabat gelýän server_name direktiwasyny çalyşyň.

5. aboveokardaky sazlamalar bilen Nginx deslapky konfigurasiýa faýlyny redaktirläniňizden soň, aşakdaky buýruklary ýerine ýetirip, SSL şahadatnama faýlyny we açaryny dörediň we sanawlaň.

Şahadatnamany öz aýratyn sazlamalaryňyz bilen dolduryň we DNS FQDN ýazgylaryňyza ýa-da web sahypasyna girmek üçin ulanyljak serwer IP adresiňize laýyk gelýän umumy at sazlamasyna üns beriň.

$ 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. Şeýle hem, aşakdaky buýrugy bermek bilen ssl_dhparam görkezme setirindäki ýokardaky konfigurasiýa faýlynda üýtgedilen güýçli DH şifrini dörediň:

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

7. “Diffie-Hellman” açary döredilenden soň, Nginx konfigurasiýa faýlynyň dogry ýazylandygyny we Nginx web serweri tarapyndan ulanylyp bilinjekdigini barlaň we aşakdaky buýruklary işledip üýtgeşmeleri görkezmek üçin daemony täzeden açyň.

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

8. Nginx-iň HTTP/2.0 protokolyny ulanýandygyny ýa-da ýokdugyny barlamak üçin aşakdaky buýrugy beriň. h2 mahabatlandyrylan protokolyň bolmagy, Nginx-iň HTTP/2.0 protokolyny ulanmak üçin üstünlikli düzülendigini tassyklaýar. Döwrebap brauzerleriň hemmesi bu protokoly deslapky görnüşde goldamalydyr.

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

3-nji ädim: PHP 7 terjimeçisini guruň

Nginx, PHP dinamiki gaýtadan işleýän dil terjimeçisi bilen, Ubuntu resmi ammarlaryndan php-fpm ikilik paketini gurmak arkaly alnan FastCGI prosess menejeriniň kömegi bilen dinamiki web mazmuny döretmek üçin ulanylyp bilner.

9. PHP7.0 we PHP-ni Nginx web serweri bilen aragatnaşyk saklamaga mümkinçilik berýän goşmaça paketleri almak üçin serwer konsolyňyzda aşakdaky buýrugy berýär:

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

10. PHP7.0 terjimeçisi enjamyňyzda üstünlikli gurlansoň, aşakdaky buýrugy bermek bilen php7.0-fpm daemonyny başlaň we barlaň:

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

11. Nginx-iň häzirki konfigurasiýa faýly, serweriň dinamiki mazmunyny üpjün etmek üçin PHP FastCGI amal dolandyryjysyny ulanmak üçin eýýäm düzüldi.

Nginx-e PHP terjimeçisini ulanmaga mümkinçilik berýän serwer bloky aşakdaky bölekde görkezilýär, şonuň üçin deslapky Nginx konfigurasiýa faýlyny üýtgetmek talap edilmeýär.

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

Aşakda asyl Nginx deslapky konfigurasiýa faýlynyň ýagdaýyny üýtgetmek we üýtgetmek üçin haýsy görkezmeleri görkezýär.

12 > http:// IP_or domeni/info.php .

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

Şeýle hem, aşakdaky skrinshotda görkezilişi ýaly, PHP üýtgeýjiler blokundaky $_SERVER ['SERVER_PROTOCOL'] setirini tapyp, serwer tarapyndan mahabatlandyrylandygyny ýa-da ýokdugyny barlaň.

13. Goşmaça PHP7.0 modullaryny gurmak üçin, PHP modulyny tapmak we gurmak üçin apt search php7.0 buýrugyny ulanyň.

Şeýle hem, WordPress ýa-da beýleki CMS gurmakçy bolsaňyz, peýdaly bolup biljek aşakdaky PHP modullaryny gurnamaga synanyşyň.

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

14. PHP goşmaça modullaryny hasaba almak üçin aşakdaky buýrugy bermek bilen PHP-FPM daemonyny täzeden açyň.

$ sudo systemctl restart php7.0-fpm.service

4-nji ädim: MariaDB maglumat bazasyny guruň

15. Netijede, LEMP bukjamyzy doldurmak üçin web sahypasynyň maglumatlaryny saklamak we dolandyrmak üçin MariaDB maglumat bazasynyň komponenti gerek.

Aşakdaky buýrugy işledip, MariaDB maglumat bazasyny dolandyrmak ulgamyny guruň we maglumatlar bazasyna girmek üçin MySQL modulyny ulanmak üçin PHP-FPM hyzmatyny täzeden açyň.

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

16

Aşakdaky buýrugy bermek bilen skripti işlediň we ähli soraglara hawa bilen jogap beriň. Aşakdaky skrinshoty gollanma hökmünde ulanyň.

$ sudo mysql_secure_installation

17. MariaDB-ni ýönekeý ulanyjylaryň ulgam sudo aýratynlyklary bolmazdan maglumat bazasyna girip bilmekleri üçin, MySQL buýruk setir interfeýsine kök aýratynlyklary bilen giriň we MySQL terjimeçisinde aşakdaky buýruklary işlediň:

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

Netijede, MariaDB maglumat bazasyna giriň we aşakdaky buýrugy ýerine ýetirip, kök artykmaçlygy bolmazdan özbaşdak buýruk işlediň:

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

Bularyň hemmesi! Indi Ubuntu 16.10 we Ubuntu 16.04 serwerinde düzülen LEMP ýygyndysy bar, bu maglumatlar bazalary bilen täsirleşip bilýän çylşyrymly dinamiki web programmalaryny ýerleşdirmäge mümkinçilik berýär.