Bii o ṣe le Fi Nginx sii, MariaDB 10, PHP 7 (LEMP Stack) ni 16.10/16.04


Akopọ LEMP jẹ adape ti o ṣe aṣoju jẹ ẹgbẹ awọn idii (Linux OS, olupin ayelujara Nginx, MySQL\MariaDB database ati ede siseto ẹgbẹ olupin ẹgbẹ ẹgbẹ PHP) eyiti a lo lati fi awọn ohun elo ayelujara ti o lagbara ati awọn oju-iwe wẹẹbu ṣiṣẹ.

Itọsọna yii yoo ṣe itọsọna fun ọ lori bawo ni a ṣe le fi akopọ LEMP sori ẹrọ pẹlu MariaDB 10, PHP 7 ati HTTP 2.0 Atilẹyin fun Nginx lori Ubuntu 16.10 ati Ubuntu 16.04 olupin/awọn ikede tabili.

  1. Fifi sori ẹrọ ti Ubuntu 16.04 Server Edition [awọn itọnisọna tun ṣiṣẹ lori Ubuntu 16.10]

Igbesẹ 1: Fi Nginx Web Server sii

1. Nginx jẹ olupin ayelujara ti o munadoko ati awọn orisun ti o lo lati ṣe afihan awọn oju-iwe wẹẹbu si awọn alejo lori intanẹẹti. A yoo bẹrẹ nipasẹ fifi sori ẹrọ olupin Nginx wẹẹbu lati awọn ibi ipamọ osise Ubuntu nipa lilo laini aṣẹ ti o yẹ.

$ sudo apt-get install nginx

2. Itele, ṣe agbejade awọn aṣẹ systemctl lati le jẹrisi ti Nginx ba ti bẹrẹ ati sopọ lori ibudo 80.

$ netstat -tlpn
$ sudo systemctl status nginx.service

Lọgan ti o ba ni idaniloju pe olupin ti bẹrẹ o le ṣii ẹrọ lilọ kiri ayelujara kan ki o lọ kiri si adirẹsi IP olupin rẹ tabi igbasilẹ DNS nipa lilo ilana HTTP lati le ṣabẹwo si oju-iwe wẹẹbu aiyipada Nginx.

http://IP-Address

Igbese 2: Jeki Ilana Nginx HTTP/2.0

3. Ilana HTTP/2.0 eyiti o kọ nipa aiyipada ni ifasilẹ tuntun ti awọn bin bin Nginx lori Ubuntu 16.04 ṣiṣẹ nikan ni ajọṣepọ pẹlu SSL ati ṣe ileri ilọsiwaju iyara pupọ ni fifuye awọn oju-iwe wẹẹbu SSL wẹẹbu.

Lati jẹki ilana ni Nginx lori Ubuntu 16.04, kọkọ lilö kiri si awọn faili iṣeto Nginx ti o wa ati ṣe afẹyinti faili iṣeto aiyipada nipasẹ ipinfunni aṣẹ isalẹ.

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

4. Lẹhinna, lilo olootu ọrọ ṣẹda oju-iwe aiyipada tuntun pẹlu awọn itọnisọna isalẹ:

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

Snippet iṣeto ti o wa loke n jẹ ki lilo HTTP/2.0 nipa fifi afikun http2 sii si gbogbo awọn itọsọna tẹtisi SSL.

Pẹlupẹlu, apakan ikẹhin ti iyasọtọ ti o wa ninu itọsọna olupin ni a lo lati ṣe atunṣe gbogbo ijabọ ti kii ṣe SSL si olupin aiyipada SSL/TLS. Pẹlupẹlu, rọpo itọsọna olupin_name lati baamu adirẹsi IP tirẹ tabi igbasilẹ DNS (FQDN pelu).

5. Lọgan ti o pari ṣiṣatunkọ faili iṣeto ni aiyipada Nginx pẹlu awọn eto ti o wa loke, ṣe ina ati ṣe akojọ faili ijẹrisi SSL ati bọtini nipasẹ ṣiṣe awọn ofin isalẹ.

Fọwọsi ijẹrisi naa pẹlu awọn eto aṣa tirẹ ati ki o fiyesi si eto Orukọ wọpọ lati baamu igbasilẹ DNS FQDN rẹ tabi adiresi IP olupin rẹ ti yoo lo lati wọle si oju-iwe wẹẹbu naa.

$ 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. Pẹlupẹlu, ṣẹda cypher DH ti o lagbara, eyiti o yipada lori faili iṣeto loke lori ssl_dhparam laini itọnisọna, nipa ipinfunni aṣẹ isalẹ:

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

7. Ni kete ti a ti ṣẹda bọtini Diffie-Hellman, rii daju ti o ba ti kọ faili atunto Nginx daradara ati pe o le lo nipasẹ olupin ayelujara Nginx ki o tun bẹrẹ daemon lati ṣe afihan awọn ayipada nipa ṣiṣe awọn ofin isalẹ.

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

8. Lati le ṣe idanwo ti Nginx ba lo ilana HTTP/2.0 ipinfunni isalẹ. Wiwa ti h2 ilana ikede ti a polowo jẹrisi pe Nginx ti ni atunto ni aṣeyọri lati lo ilana HTTP/2.0. Gbogbo awọn aṣawakiri ti ode oni yẹ ki o ṣe atilẹyin ilana yii nipasẹ aiyipada.

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

Igbesẹ 3: Fi onitumọ PHP 7 sii

Nginx le ṣee lo pẹlu PHP onitumọ ede iṣiṣẹ agbara lati ṣẹda akoonu oju-iwe ayelujara ti o ni agbara pẹlu iranlọwọ ti oluṣakoso ilana FastCGI ti a gba nipasẹ fifi sori ẹrọ package binary php-fpm lati awọn ibi ipamọ osise Ubuntu.

9. Lati le gba PHP7.0 ati awọn idii afikun ti yoo gba PHP laaye lati ba sọrọ pẹlu olupin ayelujara Nginx ṣe aṣẹ ti o wa ni isalẹ lori kọnputa olupin rẹ:

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

10. Lọgan ti a ti fi ẹrọ onitumọ PHP7.0 sori ẹrọ rẹ ni aṣeyọri, bẹrẹ ati ṣayẹwo php7.0-fpm daemon nipasẹ ipinfunni aṣẹ isalẹ:

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

11. Faili iṣeto lọwọlọwọ ti Nginx ti wa ni tunto tẹlẹ lati lo oluṣakoso ilana PHP FastCGI lati le ṣe olupin akoonu agbara.

Àkọsílẹ olupin ti o jẹ ki Nginx lati lo onitumọ PHP ti gbekalẹ lori iyasọtọ ni isalẹ, nitorinaa ko nilo awọn iyipada diẹ sii ti faili iṣeto ni Nginx aiyipada.

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

Ni isalẹ jẹ sikirinifoto ti awọn itọnisọna wo ni o nilo lati ṣe airotẹlẹ ati yipada jẹ ọran ti faili atilẹba Nginx aiyipada iṣeto ni.

12. Lati ṣe idanwo ibatan ibatan olupin wẹẹbu Nginx pẹlu oluṣakoso ilana PHP FastCGI ṣẹda PHP info.php faili iṣeto ni idanwo nipa ipinfunni aṣẹ isalẹ ki o ṣayẹwo awọn eto nipa lilo si faili iṣeto yii nipa lilo adirẹsi isalẹ: http:// IP_or ašẹ/info.php .

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

Tun ṣayẹwo ti o ba jẹ pe ilana HTTP/2.0 ti wa ni ipolowo nipasẹ olupin nipasẹ wiwa laini $_SERVER [‘SERVER_PROTOCOL’] lori idena Awọn oniyipada PHP bi a ṣe ṣalaye lori sikirinifoto isalẹ.

13. Lati le fi awọn modulu PHP7.0 afikun sii lo pipaṣẹ iwuwo wiwa php7.0 lati wa modulu PHP kan ki o fi sii.

Pẹlupẹlu, gbiyanju lati fi sori ẹrọ awọn modulu PHP atẹle eyiti o le wa ni ọwọ ni ọran ti o n gbero lati fi sori ẹrọ ni Wodupiresi tabi CMS miiran.

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

14. Lati forukọsilẹ awọn modulu afikun PHP kan tun bẹrẹ daemon PHP-FPM nipasẹ ipinfunni aṣẹ isalẹ.

$ sudo systemctl restart php7.0-fpm.service

Igbesẹ 4: Fi aaye data MariaDB sii

15. Lakotan, lati le pari akopọ LEMP wa a nilo paati ibi ipamọ data MariaDB lati tọju ati ṣakoso data oju opo wẹẹbu.

Fi sori ẹrọ eto iṣakoso data data MariaDB nipasẹ ṣiṣe pipaṣẹ isalẹ ki o tun bẹrẹ iṣẹ PHP-FPM lati le lo module MySQL lati wọle si ibi ipamọ data.

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

16. Lati ni aabo fifi sori MariaDB, ṣiṣe iwe afọwọkọ aabo ti a pese nipasẹ package alakomeji lati awọn ibi ipamọ Ubuntu eyiti yoo beere lọwọ rẹ lati ṣeto ọrọ igbaniwọle root, yọ awọn olumulo alailorukọ kuro, mu wiwọle root kuro latọna jijin ki o yọ ibi ipamọ data idanwo kuro.

Ṣiṣe akosile nipasẹ ipinfunni aṣẹ isalẹ ki o dahun gbogbo awọn ibeere pẹlu bẹẹni . Lo sikirinifoto ti o wa ni isalẹ bi itọsọna kan.

$ sudo mysql_secure_installation

17. Lati tunto MariaDB ki awọn olumulo lasan le wọle si ibi ipamọ data laisi awọn anfani sudo eto, lọ si wiwo laini aṣẹ MySQL pẹlu awọn anfaani gbongbo ati ṣiṣe awọn ofin isalẹ lori onitumọ MySQL:

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

Lakotan, buwolu wọle si ibi ipamọ data MariaDB ati ṣiṣe aṣẹ lainidii laisi awọn anfani ipilẹ nipasẹ ṣiṣe pipaṣẹ isalẹ:

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

Iyẹn gbogbo! Bayi o ni akopọ LEMP ti a tunto lori Ubuntu 16.10 ati olupin Ubuntu 16.04 ti o fun ọ laaye lati ṣafihan awọn ohun elo oju opo wẹẹbu ti o lagbara ti o le ṣe pẹlu awọn apoti isura data.