Hvernig á að setja upp Nginx, MariaDB 10, PHP 7 (LEMP Stack) í 16.10/16.04


LEMP staflan er skammstöfun sem táknar hóp pakka (Linux OS, Nginx vefþjónn, MySQL\MariaDB gagnagrunnur og kraftmikið forritunarmál PHP miðlarahliðar) sem eru notaðir til að dreifa kraftmiklum vefforritum og vefsíðum.

Þessi kennsla mun leiðbeina þér um hvernig á að setja upp LEMP stafla með MariaDB 10, PHP 7 og HTTP 2.0 Stuðningur fyrir Nginx á Ubuntu 16.10 og Ubuntu 16.04 miðlara/skrifborðsútgáfum.

  1. Uppsetning á Ubuntu 16.04 Server Edition [leiðbeiningar virka einnig á Ubuntu 16.10]

Skref 1: Settu upp Nginx vefþjóninn

1. Nginx er nútímalegur og hagkvæmur vefþjónn sem notaður er til að birta vefsíður fyrir gesti á internetinu. Við byrjum á því að setja upp Nginx vefþjón frá opinberum geymslum Ubuntu með því að nota viðeigandi skipanalínu.

$ sudo apt-get install nginx

2. Næst skaltu gefa út systemctl skipanirnar til að staðfesta hvort Nginx sé ræst og bindist á port 80.

$ netstat -tlpn
$ sudo systemctl status nginx.service

Þegar þú hefur staðfest að þjónninn sé ræstur geturðu opnað vafra og farið að IP-tölu þjónsins eða DNS-skrá með HTTP-samskiptareglum til að heimsækja sjálfgefna vefsíðu Nginx.

http://IP-Address

Skref 2: Virkja Nginx HTTP/2.0 siðareglur

3. HTTP/2.0 samskiptareglur sem eru sjálfgefnar byggðar í nýjustu útgáfunni af Nginx tvöfaldur á Ubuntu 16.04 virkar aðeins í tengslum við SSL og lofar gríðarlegum hraðabótum við að hlaða SSL vefsíðum á vefnum.

Til að virkja samskiptareglur í Nginx á Ubuntu 16.04, farðu fyrst í stillingarskrár fyrir Nginx tiltækar síður og afritaðu sjálfgefna stillingarskrána með því að gefa út skipunina hér að neðan.

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

4. Notaðu síðan textaritil til að búa til nýja sjálfgefna síðu með eftirfarandi leiðbeiningum:

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

Uppsetningarbúturinn hér að ofan gerir notkun HTTP/2.0 kleift með því að bæta http2 færibreytunni við allar SSL hlustunartilskipanir.

Einnig er síðasti hluti útdráttarins sem fylgir með miðlaratilskipuninni notaður til að beina allri umferð sem ekki er SSL á SSL/TLS sjálfgefna gestgjafa. Skiptu líka um server_name tilskipunina til að passa við þitt eigið IP tölu eða DNS skrá (FQDN helst).

5. Þegar þú hefur lokið við að breyta Nginx sjálfgefna stillingarskrá með ofangreindum stillingum skaltu búa til og skrá SSL vottorðsskrána og lykilinn með því að framkvæma skipanirnar hér að neðan.

Fylltu út vottorðið með þínum eigin sérsniðnum stillingum og gaum að Common Name stillingum til að passa við DNS FQDN skrána þína eða IP tölu netþjónsins sem verður notuð til að fá aðgang að vefsíðunni.

$ 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. Búðu líka til sterka DH dulmál, sem var breytt á ofangreindri stillingarskrá á ssl_dhparam leiðbeiningarlínunni, með því að gefa út skipunina hér að neðan:

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

7. Þegar Diffie-Hellman lykillinn hefur verið búinn til skaltu ganga úr skugga um hvort Nginx stillingarskrá sé rétt skrifuð og hægt sé að nota hana af Nginx vefþjóni og endurræstu púkann til að endurspegla breytingar með því að keyra skipanirnar hér að neðan.

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

8. Til að prófa hvort Nginx notar HTTP/2.0 samskiptareglur skaltu gefa út skipunina hér að neðan. Tilvist h2 auglýstrar samskiptareglur staðfestir að Nginx hefur verið stillt til að nota HTTP/2.0 samskiptareglur. Allir nútíma uppfærðir vafrar ættu sjálfgefið að styðja þessa samskiptareglu.

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

Skref 3: Settu upp PHP 7 túlk

Nginx er hægt að nota með PHP dynamic vinnslu tungumálatúlki til að búa til kraftmikið vefefni með hjálp FastCGI vinnslustjóra sem fæst með því að setja upp php-fpm tvöfalda pakkann frá opinberum geymslum Ubuntu.

9. Til að grípa PHP7.0 og viðbótarpakkana sem gera PHP kleift að eiga samskipti við Nginx vefþjóninn skaltu gefa út skipunina hér að neðan á netþjóninum þínum:

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

10. Þegar PHP7.0 túlkurinn hefur verið settur upp á vélina þína skaltu byrja og athuga php7.0-fpm púkinn með því að gefa út skipunina hér að neðan:

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

11. Núverandi stillingarskrá Nginx er nú þegar stillt til að nota PHP FastCGI vinnslustjóra til að miðlara kraftmikið efni.

Miðlarablokkin sem gerir Nginx kleift að nota PHP túlk er sýnd á útdrættinum hér að neðan, svo ekki er þörf á frekari breytingum á sjálfgefna Nginx stillingarskrá.

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

Hér að neðan er skjáskot af hvaða leiðbeiningum þú þarft til að afskrifa og breyta þegar um er að ræða upprunalega Nginx sjálfgefna stillingarskrá.

12. Til að prófa Nginx vefþjónstengsl við PHP FastCGI vinnslustjóra búðu til PHP info.php prófstillingarskrá með því að gefa út skipunina hér að neðan og staðfestu stillingarnar með því að fara á þessa stillingarskrá með því að nota heimilisfangið hér að neðan: http://IP_eða lén/info.php.

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

Athugaðu einnig hvort HTTP/2.0 samskiptareglur séu auglýstar af þjóninum með því að finna línuna $_SERVER[‘SERVER_PROTOCOL’] á PHP breytublokk eins og sýnt er á skjámyndinni hér að neðan.

13. Til að setja upp auka PHP7.0 einingar notaðu apt search php7.0 skipunina til að finna PHP einingu og setja hana upp.

Reyndu líka að setja upp eftirfarandi PHP einingar sem geta komið sér vel ef þú ætlar að setja upp WordPress eða annað CMS.

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

14. Til að skrá PHP aukaeiningarnar skaltu bara endurræsa PHP-FPM púkann með því að gefa út skipunina hér að neðan.

$ sudo systemctl restart php7.0-fpm.service

Skref 4: Settu upp MariaDB gagnagrunn

15. Að lokum, til að klára LEMP stafla okkar, þurfum við MariaDB gagnagrunnshlutann til að geyma og stjórna vefsíðugögnum.

Settu upp MariaDB gagnagrunnsstjórnunarkerfi með því að keyra skipunina hér að neðan og endurræstu PHP-FPM þjónustuna til að nota MySQL mát til að fá aðgang að gagnagrunninum.

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

16. Til að tryggja MariaDB uppsetninguna skaltu keyra öryggisforskriftina sem tvöfaldur pakki gefur frá Ubuntu geymslum sem biður þig um að setja rótarlykilorð, fjarlægja nafnlausa notendur, slökkva á rótarinnskráningu lítillega og fjarlægja prófunargagnagrunn.

Keyrðu skriftuna með því að gefa út skipunina hér að neðan og svaraðu öllum spurningum með . Notaðu skjámyndina hér að neðan sem leiðbeiningar.

$ sudo mysql_secure_installation

17. Til að stilla MariaDB þannig að venjulegir notendur geti fengið aðgang að gagnagrunninum án kerfis sudo forréttinda, farðu í MySQL skipanalínuviðmótið með rótarréttindum og keyrðu eftirfarandi skipanir á MySQL túlk:

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

Að lokum, skráðu þig inn í MariaDB gagnagrunn og keyrðu handahófskennda skipun án rótarréttinda með því að framkvæma eftirfarandi skipun:

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

Það er allt! Nú ertu með LEMP stafla sem er stilltur á Ubuntu 16.10 og Ubuntu 16.04 netþjóni sem gerir þér kleift að dreifa flóknum kraftmiklum vefforritum sem geta haft samskipti við gagnagrunna.