Unsaon Pag-instalar sa Nginx, MariaDB 10, PHP 7 (LEMP Stack) sa 16.10/16.04


Ang LEMP stack usa ka acronym nga nagrepresentar sa usa ka grupo sa mga pakete (Linux OS, Nginx web server, MySQL\MariaDB database ug PHP server-side dynamic programming language) nga gigamit sa pag-deploy sa mga dinamikong aplikasyon sa web ug mga web page.

Kini nga panudlo maggiya kanimo kung giunsa ang pag-install sa LEMP stack nga adunay MariaDB 10, PHP 7 ug HTTP 2.0 nga Suporta alang sa Nginx sa Ubuntu 16.10 ug Ubuntu 16.04 server/desktop nga edisyon.

  1. Pag-instalar sa Ubuntu 16.04 Server Edition [ang mga instruksyon magamit usab sa Ubuntu 16.10]

Lakang 1: I-install ang Nginx Web Server

1. Ang Nginx usa ka moderno ug episyente nga mga kapanguhaan sa web server nga gigamit sa pagpakita sa mga panid sa web sa mga bisita sa internet. Magsugod kami pinaagi sa pag-install sa Nginx web server gikan sa opisyal nga mga repositoryo sa Ubuntu pinaagi sa paggamit sa apt command line.

$ sudo apt-get install nginx

2. Sunod, i-issue ang systemctl commands aron makumpirma kung ang Nginx nagsugod ug nagbugkos sa port 80.

$ netstat -tlpn
$ sudo systemctl status nginx.service

Kung naa na nimo ang kumpirmasyon nga nagsugod na ang server mahimo ka magbukas sa usa ka browser ug mag-navigate sa imong IP address sa server o DNS record gamit ang HTTP protocol aron makabisita sa Nginx default web page.

http://IP-Address

Lakang 2: I-enable ang Nginx HTTP/2.0 Protocol

3. Ang HTTP/2.0 protocol nga gitukod pinaagi sa default sa pinakabag-o nga pagpagawas sa Nginx binaries sa Ubuntu 16.04 nagtrabaho lamang kauban sa SSL ug nagsaad sa usa ka dako nga katulin nga pag-uswag sa pag-load sa web SSL web page.

Aron mahimo ang protocol sa Nginx sa Ubuntu 16.04, una nga pag-navigate sa Nginx nga magamit nga mga file sa pag-configure sa mga site ug i-backup ang default nga file sa pag-configure pinaagi sa pag-isyu sa ubos nga mando.

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

4. Dayon, gamit ang text editor paghimo ug bag-ong default page nga adunay mga instruksyon sa ubos:

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

Ang ibabaw nga configuration snippet makapahimo sa paggamit sa HTTP/2.0 pinaagi sa pagdugang sa parameter nga http2 sa tanang SSL listen direktiba.

Usab, ang kataposang bahin sa kinutlo nga gilakip sa direktiba sa server gigamit sa pag-redirect sa tanang non-SSL nga trapiko sa SSL/TLS default host. Usab, ilisan ang server_name nga direktiba aron mohaum sa imong kaugalingong IP address o DNS record (FQDN mas maayo).

5. Kung nahuman na nimo ang pag-edit sa Nginx default configuration file nga adunay mga setting sa ibabaw, paghimo ug ilista ang SSL certificate file ug yawe pinaagi sa pagpatuman sa mga sugo sa ubos.

Pun-a ang sertipiko sa imong kaugalingon nga naandan nga mga setting ug hatagi'g pagtagad ang Common Name setting aron ipares ang imong DNS FQDN record o imong server IP address nga gamiton sa pag-access sa web page.

$ 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. Usab, paghimo ug lig-on nga DH cypher, nga giusab sa ibabaw nga configuration file sa ssl_dhparam linya sa instruksiyon, pinaagi sa pag-isyu sa ubos nga sugo:

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

7. Sa diha nga ang Diffie-Hellman nga yawe nahimo na, pamatud-i kung ang Nginx configuration file husto nga gisulat ug mahimong magamit sa Nginx web server ug i-restart ang daemon aron mapakita ang mga pagbag-o pinaagi sa pagpadagan sa ubos nga mga sugo.

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

8. Aron sa pagsulay kon ang Nginx naggamit sa HTTP/2.0 protocol isyu sa ubos nga sugo. Ang presensya sa h2 nga gi-advertise nga protocol nagpamatuod nga ang Nginx malampuson nga na-configure aron magamit ang HTTP/2.0 protocol. Ang tanan nga moderno nga mga browser kinahanglan nga mosuporta niini nga protocol pinaagi sa default.

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

Lakang 3: I-install ang PHP 7 Interpreter

Ang Nginx mahimong gamiton sa PHP dynamic processing language interpreter aron makamugna og dinamikong web content sa tabang sa FastCGI process manager nga nakuha pinaagi sa pag-install sa php-fpm binary package gikan sa Ubuntu official repository.

9. Aron makuha ang PHP7.0 ug ang dugang nga mga pakete nga magtugot sa PHP nga makigkomunikar sa Nginx web server mag-isyu sa ubos nga sugo sa imong server console:

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

10. Sa higayon nga ang PHP7.0 interpreter malampuson nga na-install sa imong makina, pagsugod ug susiha ang php7.0-fpm daemon pinaagi sa pag-isyu sa ubos nga sugo:

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

11. Ang kasamtangan nga configuration file sa Nginx na-configure na aron gamiton ang PHP FastCGI process manager aron sa server dynamic content.

Ang block sa server nga makahimo sa Nginx sa paggamit sa PHP interpreter gipresentar sa ubos nga kinutlo, mao nga wala'y dugang nga mga pagbag-o sa default Nginx configuration file ang gikinahanglan.

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

Sa ubos usa ka screenshot kung unsa nga mga panudlo ang kinahanglan nimo nga i-uncomment ug usbon ang kaso sa usa ka orihinal nga Nginx default configuration file.

12. Para sulayan ang relasyon sa web server sa Nginx sa PHP FastCGI process manager paghimo ug PHP info.php test configuration file pinaagi sa pag-isyu sa ubos nga command ug pamatud-i ang mga setting pinaagi sa pagbisita niini nga configuration file gamit ang address sa ubos: http://IP_o domain/info.php.

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

Susiha usab kung ang HTTP/2.0 protocol gi-advertise sa server pinaagi sa pagpangita sa linya $_SERVER['SERVER_PROTOCOL'] sa PHP Variables block sama sa gihulagway sa ubos nga screenshot.

13. Aron maka-install ug dugang PHP7.0 modules gamita ang apt search php7.0 command para mangita ug PHP module ug i-install kini.

Usab, sulayi nga i-install ang mosunod nga mga module sa PHP nga mahimong magamit kung nagplano ka nga i-install ang WordPress o uban pang CMS.

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

14. Aron marehistro ang PHP extra modules i-restart lang ang PHP-FPM daemon pinaagi sa pag-isyu sa ubos nga command.

$ sudo systemctl restart php7.0-fpm.service

Lakang 4: I-install ang MariaDB Database

15. Sa katapusan, aron makompleto ang among LEMP stack kinahanglan namon ang bahin sa database sa MariaDB sa pagtipig ug pagdumala sa datos sa website.

I-install ang MariaDB database management system pinaagi sa pagpadagan sa ubos nga command ug i-restart ang PHP-FPM nga serbisyo aron magamit ang MySQL module aron ma-access ang database.

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

16. Aron ma-secure ang pag-instalar sa MariaDB, padagana ang security script nga gihatag sa binary nga pakete gikan sa mga repositoryo sa Ubuntu nga mangutana kanimo nga magbutang ug root password, tangtangon ang mga wala mailhing tiggamit, i-disable ang root login sa layo ug kuhaa ang database sa pagsulay.

Pagdalagan ang script pinaagi sa pag-isyu sa ubos nga sugo ug tubaga ang tanang pangutana gamit ang oo. Gamita ang screenshot sa ubos isip giya.

$ sudo mysql_secure_installation

17. Aron ma-configure ang MariaDB aron ang ordinaryong mga tiggamit maka-access sa database nga walay sistema sudo nga mga pribilihiyo, adto sa MySQL command line interface nga adunay root privileges ug ipadagan ang mga command sa ubos sa MySQL interpreter:

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

Sa katapusan, pag-login sa database sa MariaDB ug pagdagan ang usa ka arbitraryong mando nga wala’y mga pribilehiyo sa gamut pinaagi sa pagpatuman sa ubos nga mando:

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

Kana tanan! Karon ikaw adunay usa ka LEMP stack nga na-configure sa Ubuntu 16.10 ug Ubuntu 16.04 server nga nagtugot kanimo sa pag-deploy sa mga komplikadong dinamikong aplikasyon sa web nga mahimong makig-uban sa mga database.