Nginx, MariaDB 10, PHP 7 (LEMP Stack) asentaminen 16.10/16.04


LEMP-pino on lyhenne, joka edustaa ryhmää paketteja (Linux OS, Nginx-verkkopalvelin, MySQL\MariaDB-tietokanta ja PHP-palvelinpuolen dynaaminen ohjelmointikieli), joita käytetään dynaamisten verkkosovellusten ja verkkosivut.

Tämä opetusohjelma opastaa sinua asentamaan LEMP-pinon MariaDB 10-, PHP 7- ja HTTP 2.0 -tuella Nginxille. Ubuntu 16.10- ja Ubuntu 16.04 -palvelin-/työpöytäversioissa.

Vaatimukset

  1. Ubuntu 16.04 Server Editionin asennus [ohjeet toimivat myös Ubuntu 16.10:ssä]

Vaihe 1: Asenna Nginx-verkkopalvelin

1. Nginx on moderni ja resurssitehokas verkkopalvelin, jota käytetään verkkosivujen näyttämiseen Internetin vierailijoille. Aloitamme asentamalla Nginx-verkkopalvelimen Ubuntun virallisista arkistoista käyttämällä apt-komentoriviä.

sudo apt-get install nginx

2. Anna seuraavaksi netstat- ja systemctl-komennot varmistaaksesi, onko Nginx käynnistetty ja sitoutuu porttiin 80.

netstat -tlpn

sudo systemctl status nginx.service

Kun olet saanut vahvistuksen, että palvelin on käynnistetty, voit avata selaimen ja navigoida palvelimesi IP-osoitteeseen tai DNS-tietueeseen HTTP-protokollan avulla käydäksesi Nginx-oletussivulla.

http://IP-Address

Vaihe 2: Ota Nginx HTTP/2.0 -protokolla käyttöön

3. HTTP/2.0-protokolla, joka on oletuksena rakennettu viimeisimmässä Nginx-binaariversiossa Ubuntu 16.04 -versiossa, toimii vain yhdessä SSL:n ja lupaa valtavan nopeuden parannuksen SSL-verkkosivujen lataamisessa.

Ota protokolla käyttöön Nginxissä Ubuntu 16.04:ssä siirtymällä ensin Nginxin käytettävissä olevien sivustojen määritystiedostoihin ja varmuuskopioimalla oletusmääritystiedosto antamalla alla oleva komento.

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

4. Luo sitten uusi oletussivu alla olevien ohjeiden avulla tekstieditorilla:

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

Yllä oleva määrityskoodinpätkä mahdollistaa HTTP/2.0:n käytön lisäämällä http2-parametrin kaikkiin SSL-kuuntelukäskyihin.

Palvelindirektiiviin sisältyvän otteen viimeistä osaa käytetään myös kaiken ei-SSL-liikenteen ohjaamiseen SSL/TLS-oletusisäntään. Korvaa myös palvelimen_nimi-direktiivi vastaamaan omaa IP-osoitettasi tai DNS-tietuetta (mieluiten FQDN).

5. Kun olet lopettanut Nginx-oletusmääritystiedoston muokkaamisen yllä olevilla asetuksilla, luo ja luettele SSL-varmennetiedosto ja avain suorittamalla alla olevat komennot.

Täytä varmenne omilla mukautetuilla asetuksillasi ja kiinnitä huomiota Yleinen nimi-asetuksiin vastaamaan DNS FQDN -tietuetta tai palvelimesi IP-osoitetta, jota käytetään verkkosivulle pääsemiseen.

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. Luo myös vahva DH-salaus, joka muutettiin yllä olevassa määritystiedostossa ssl_dhparam-ohjerivillä, antamalla alla oleva komento:

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

7. Kun Diffie-Hellman-avain on luotu, varmista, että Nginx-määritystiedosto on kirjoitettu oikein ja että Nginx-verkkopalvelin voi käyttää sitä, ja käynnistä daemon uudelleen vastaamaan muutoksia suorittaa alla olevia komentoja.

sudo nginx -t
sudo systemctl restart nginx.service

8. Anna alla oleva komento testataksesi, käyttääkö Nginx HTTP/2.0-protokollaa. Mainostetun h2-protokollan olemassaolo vahvistaa, että Nginx on määritetty käyttämään HTTP/2.0-protokollaa onnistuneesti. Kaikkien nykyaikaisten ja ajantasaisten selainten tulisi oletuksena tukea tätä protokollaa.

openssl s_client -connect localhost:443 -nextprotoneg ''

Vaihe 3: Asenna PHP 7 Interpreter

Nginxiä voidaan käyttää PHP:n dynaamisen käsittelykielen tulkin kanssa dynaamisen verkkosisällön luomiseen FastCGI-prosessinhallinnan avulla, joka saadaan asentamalla php-fpm-binaaripaketti Ubuntun virallisista arkistoista.

9. Jotta voit napata PHP7.0:n ja lisäpaketit, joiden avulla PHP voi kommunikoida Nginx-verkkopalvelimen kanssa, anna alla oleva komento palvelinkonsolissasi:

sudo apt install php7.0 php7.0-fpm 

10. Kun PHP7.0-tulkki on asennettu koneellesi, käynnistä ja tarkista php7.0-fpm-daemon lähettämällä alla oleva komento:

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

11. Nginxin nykyinen määritystiedosto on jo määritetty käyttämään PHP FastCGI -prosessinhallintaa dynaamisen sisällön palvelimelle.

Palvelinlohko, jonka avulla Nginx voi käyttää PHP-tulkkia, on esitetty alla olevassa otteessa, joten Nginx-oletusasetustiedostoon ei tarvita muita muutoksia.

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

Alla on kuvakaappaus siitä, mitä ohjeita sinun tulee poistaa ja muokata alkuperäisen Nginx-oletusasetustiedoston tapauksessa.

12. Testaaksesi Nginx-verkkopalvelimen suhdetta PHP FastCGI-prosessinhallinnan kanssa luo PHP info.php-testimääritystiedosto antamalla alla oleva komento ja tarkista asetukset käymällä tässä asetustiedostossa. käyttämällä alla olevaa osoitetta: http://IP_or domain/info.php.

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

Tarkista myös, mainostaako palvelin HTTP/2.0-protokollaa, etsimällä rivi $_SERVER['SERVER_PROTOCOL'] PHP Variables -lohkosta alla olevan kuvakaappauksen mukaisesti.

13. Jos haluat asentaa ylimääräisiä PHP7.0 -moduuleja, etsi PHP-moduuli ja asenna se apt search php7.0 -komennolla.

Yritä myös asentaa seuraavat PHP-moduulit, joista voi olla hyötyä, jos aiot asentaa WordPressin tai muun sisällönhallintajärjestelmän.

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

14. Voit rekisteröidä PHP-lisämoduulit käynnistämällä PHP-FPM-daemonin uudelleen antamalla alla olevan komennon.

sudo systemctl restart php7.0-fpm.service

Vaihe 4: Asenna MariaDB-tietokanta

15. Lopuksi, jotta voimme täydentää LEMP-pinoamme, tarvitsemme MariaDB-tietokantakomponentin verkkosivustotietojen tallentamiseen ja hallintaan.

Asenna MariaDB-tietokannan hallintajärjestelmä suorittamalla alla oleva komento ja käynnistä PHP-FPM-palvelu uudelleen käyttääksesi tietokantaa MySQL-moduulin avulla.

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

16. Suojaa MariaDB-asennus suorittamalla Ubuntun arkistoista binaaripaketin tarjoama suojausskripti, joka pyytää sinua asettamaan pääkäyttäjän salasanan, poistamaan anonyymit käyttäjät, poistamaan pääkäyttäjän kirjautumisen etänä ja poistamaan testitietokannan.

Suorita komentosarja antamalla alla oleva komento ja vastaa kaikkiin kysymyksiin kyllä. Käytä alla olevaa kuvakaappausta oppaana.

sudo mysql_secure_installation

17. Jos haluat määrittää MariaDB:n niin, että tavalliset käyttäjät voivat käyttää tietokantaa ilman järjestelmän sudo-oikeuksia, siirry MySQL-komentorivikäyttöliittymään pääkäyttäjän oikeuksin ja suorita seuraavat komennot MySQL-tulkin avulla:

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

Lopuksi kirjaudu MariaDB-tietokantaan ja suorita mielivaltainen komento ilman pääkäyttäjän oikeuksia suorittamalla alla oleva komento:

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

Se kaikki! Nyt sinulla on LEMP-pino määritettynä Ubuntu 16.10- ja Ubuntu 16.04 -palvelimeen, jonka avulla voit ottaa käyttöön monimutkaisia dynaamisia verkkosovelluksia, jotka voivat olla vuorovaikutuksessa tietokantojen kanssa.