Teljes webszerver telepítése (nginx, mysql, php7, HTTP2, phpmyadmin, SSL) – Ubuntu 16.04

A leírás Ubuntu 16.04-re vonatkozik, a többi verziót később fogom megcsinálni.

1. Nginx telepítése
Először is frissítsük a REPO-kat:

sudo apt-get update

Majd telepítsük az nginx-et:

sudo apt-get install nginx

Ezután ellenőrizzük le az nginx verzióját az alábbi paranccsal:

nginx -v

Ha legalább 1.10.0-s verziót kapunk, akkor minden rendben van.

2. MySQL telepítése
Az első lépés a mysql szerver telepítése:

sudo apt-get install mysql-server

Értelemszerűen ki kell tölteni a root felhasználóhoz tartozó jelszót, amivel a későbbiekben el akarod érni a mysql-t.
A PHP oldalak lefutásához szükséged felrakni a php 5-ös verzióját és az ehhez tartozó mysql utasításkészletet:

sudo apt-get install php-fpm php-mysql

A biztonságosság növelésének érdekében érdemes kikapcsolni azt a funkciót, ahol a php ha nem találja meg a hivatkozott fájlt, akkor a hozzá leginkább hasonlót futtatja le:

sudo nano /etc/php/7.0/fpm/php.ini

Meg kell keresni azt a részt, ahol a cgi.fix_pathinfo van, előle ki kell venni a pontos vesszőt (;), majd az értékét 0-ra állítani és elmenteni az egészet.

cgi.fix_pathinfo=0

A feltöltési limit állításához meg kell keresni az upload_max_filesize sort, majd átírni az értéket az általunk kívánt értékre (megabyte=M, gigabyte:G)

upload_max_filesize = 1G

A letöltési limit állításához az alábbi sort kell megkeresni és módosítani:

post_max_size = 1G

Ha ezzel megvagyunk, mentsük el a fájlt és indítsuk újra a php-fpm-et:

sudo systemctl restart php7.0-fpm

3. Nginx konfigurálása
Az alapvető config fájlt így tudjuk szerkeszteni:

sudo nano /etc/nginx/sites-available/default

A fájlnak valahogy így kell kinéznie alapból:

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    root /usr/share/nginx/html;
    index index.html index.htm;

    server_name localhost;

    location / {
        try_files $uri $uri/ =404;
    }
}

Sima HTTP-nél az alábbiak szerint módosítsuk a fájlt:

server {
 listen 80 default_server;
 listen [::]:80 default_server;

 root /var/www/weboldal;

 index index.php index.htm index.nginx-debian.html;

 server_name weboldalad_cime;

 location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
include fastcgi_params;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

location / {
try_files $uri $uri/ /index.php?$args;
}

 location ~ /\.ht {
 deny all;
 }
}

HTTPS-nél (SSL) és HTTP2-nél pedig az alábbiak szerint módosítsuk a fájlt (ha nincs SSL tanúsítványod, akkor lejjebb találsz egy leírást, hogy hogyan szerezhetsz egy évre ingyenesen):

server {
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;

root /var/www/weboldal;

index index.php index.html index.htm;

server_name weboldalad_cime;

location / {
try_files $uri $uri/ /index.php?$args;
}

# az SSL fajlok helyenek megadasa ha letsencrypttel hoztad letre oket
ssl on;
ssl_certificate /etc/letsencrypt/live/weboldalad_cime/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/weboldalad_cime/privkey.pem;

ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
ssl_prefer_server_ciphers on;

# dh parameterek megadasa a kesobb leirtak szerint
ssl_dhparam {ut a dhparams.pem fajlhoz};

location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
include fastcgi_params;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}

server {
listen 80;
listen [::]:80;
server_name weboldalad_cime;
return 301 https://$server_name$request_uri;
}

A fájlt el kell menteni, majd pedig újraindítani az nginx-et:

sudo service nginx restart

4. PHPMyadmin telepítése
A csomagot így teheted fel:

sudo apt-get install phpmyadmin

Telepítésnél kérni fogja a mysql root felhasználójának a jelszavát, add meg neki. Következő kérdése a phpmyadmin root fiókjának a jelszava. Ezt add meg neki, majd amikor kéri, akkor erősítsd meg.
Ezután, hogy a weboldaladról is elérhesd a phpmyadmint, létre kell hozni egy szimbolikus linket:

sudo ln -s /usr/share/phpmyadmin /var/www/weboldal/phpmyadmin

Ezután a phpmyadmint a weboldaladon érheted el:

http://weboldalam.hu/phpmyadmin

5. SSL tanúsítvány igénylése

Abban az esetben, ha nem rendelkezel még SSL tanúsítvánnyal, egy jó megoldás erre a problémára a StartSSL szolgáltatása, aminek keretein belül 1 évre igényelhetsz 5 domainre. (azután újra megrendelheted) – FRISSÍTÉS: A StartSSL 2018 januárban megszűnt működni, helyette a Let’s Encryptet ajánlom.

5.1 Let’s Encrypt SSL igénylése

Let’s Encrypt SSL-t a Certbot segítségével tudunk igényelni, ezt az alábbiak alapján tudjuk telepíteni és használni:

sudo apt-get update

sudo apt-get install software-properties-common

sudo add-apt-repository ppa:certbot/certbot

sudo apt-get update

sudo apt-get install python-certbot-nginx

Ha ezzel megvagyunk, akkor futtassuk a Certbotot manuális cert létrehozás módban (nem szeretnénk, hogy belenyúljon a szépen megszerkesztett nginx konfig fájlunkba)

sudo certbot --nginx certonly

A folyamat elég egyértelmű, meg kell adni az email címünket, valamint a domain címet, amihez igényelni szeretnénk az SSL cert-et. Ha ezzel megvagyunk, akkor megadja a lejárati dátumot és a cert fájl helyét:

/etc/letsencrypt/live/weboldalad_cime/

A nginx konfigurációt a 3-as pontnak megfelelően szerkesszük meg a már meglévő fájlnevek beillesztésével.

5.2 Az SSL kapcsolat ellenőrzése

Érdemes ellenőrizni, hogy megfelelően állítottuk-e be az SSL használatát a webszerveren, amit a https://www.ssllabs.com/ssltest/analyze.html weboldalon tudunk megtenni.

Ha ezzel megvagytok, akkor mindennek prímán kell működnie 🙂

ZoliBen

Kamu.

You may also like...

3 hozzászólás

  1. Piszok szerint:

    Szia 🙂 A látogató szám nálam megál 100-110főnél .. (Centos) Hol találom meg a korlátozó tényezőt ? (Ha tudod írd meg nekem a 41660kukacgmail.comra 🙂

  2. Badovszky István szerint:

    Helló! Apache webszerver biztonságossá tételében nem tudnál segíteni? Az apacs nem szereti az ssl-t… 🙂

    • ZoliBen szerint:

      Szia! Sajnos apache-val nem igazán foglalkoztam, de majd utánanézek, ha lesz rá egy kis időm.

Vélemény, hozzászólás?

Az e-mail címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük

Ez az oldal az Akismet szolgáltatást használja a spam csökkentésére. Ismerje meg a hozzászólás adatainak feldolgozását .