Konfigurácia LEMP servera na Linuxe OpenSUSE
Úvod
Svoj minulý a zároveň prvý článok som zameral na čerstvé ubunťáky, ktorí zatúžili po väčšej kontrole nad systémom. Tento článok bude o krok ďalej, náš webový server poskladáme z čisto open source softvéru. Skratka LEMP zastáva Linux, Nginx, MySQL a PHP.
Použitý softvér
OpenSUSE
OpenSUSE je robustný distribúcia, ktorá je obľúbená ako medzi nováčikov tak aj medzi expertmi (napríklad vývojári kernelu). Vyvíja ju komunita a prispieva do nej firma SUSE, ktorá na tejto komunitnej verzii stavia komerčné verzii SUSE Linux Enterprise. Až tento systém preskúmam hlbšie, tešte sa na samostatný článok.
Nginx
Nginx (vyslovované Engine x) je rastúca, momentálne tretí najpoužívanejší softwarový web server. Chváli sa zvládnutím väčšie záťaže oproti Apachi a vyriešením zraniteľných miest. Je multiplatformový, primárne pre unix-like systémy a pod licenciou BSD.
MariaDB
MariaDB je v podstate klon MySQL pochádzajúce z rovnakých mozkoven. MySQL bolo predaných Oraclu, ale Oracle dlhodobo ignoroval upozornenie komunity na bezpečnostné riziká a preto rovnaký vývojársky team vytvoril open source riešenie, ktoré je schopné nahradiť MySQL. Cez drobné výhody nehľadajte tu aj u Nginx nejaké ohromné benefity, jednoducho to robíme inak z presvedčenia v správnosť využitia open source.
PHP, python, perl
PHP, tak tu je to jasné, ale čo má znamenať Python alebo Perl? Webové aplikácie môžeme písať v množstve jazykov a to vrátane Pythone alebo Perlu. Nemusíte sa báť, tento článok bude o PHP. Využitie Pythone na webe je ultrageekovina level výlet do slnka
Nginx
V distribúcii openSUSE je obsiahnutý Apache. Pokiaľ ho používate, tak ho stopnite:
systemctl stop apache2.service
a potom v každom prípade vypnite.
systemctl disable apache2.service
Teraz nainštalujeme nginx
zypper in nginx
Nginx rovnako ako Apache štartuje pri zapnutí systému. Teraz ho ale zapneme ručne.
systemctl start nginx.service systemctl enable nginx.service
V predvolenom stave je server len pre localhost. Pokiaľ k nemu chceme pristupovať zvonku, tak musíme nastaviť firewall. Otvoríme konfiguračný súbor
gedit /etc/sysconfig/SuSEfirewall2
A do prázdnych úvodzoviek doplníme
FW_CONFIGURATIONS_EXT="apache2"
reštartujeme
systemctl restart SuSEfirewall2.service
A odskúšame
gedit /srv/www/htdocs/test.html
<html> <head> <title>nginx</title> </head> <body> <h1>It works!</h1> </body> </html>
Teraz mrknite buď na localhost / test.html alebo <vaše ip> /test.html
Všimnite si, že bez index.html alebo index.htm sa nám nevypíše súbory v adresári, ale dostaneme 403 a dokonca 403 dostaneme aj v prípade, kedy budeme mať index.php. To teraz bohužiaľ nemôžeme otestovať, ale môžeme to spravit.
gedit /etc/nginx/nginx.conf
V http> server> location / pridáme za index.htm ešte index.php
location / { root /srv/www/htdocs/; index index.html index.htm index.php; }
Ovládanie servera
štart
systemctl start nginx.service
stop
systemctl stop nginx.service
reštart
systemctl restart nginx.service
Podrobnejšie nastavenia nginx
Otvoríme konfiguračný súbor
gedit /etc/nginx/nginx.conf
Na prvom riadku povolíme používať server pod užívateľom nginx, ak necháme zakomentované tak pobeží server pod užívateľom root.
user nginx;
Ďalší riadok worker_processes určuje koľkých procesy má server bežať. Každý proces môže v jednej chvíli vybaviť toľko požiadaviek, koľko je definované vo worker_connections. Celkový maximálny počet možných pripojení teda zistíme worker_processes * worker_connections. Tento parameter môžeme navýšiť ak chceme využiť viac jadier procesora. Ja si na testovacie účely nechám 1.
worker_processes 1;
Hlbšie v konfiguračnom súbore http> server môžeme nastaviť port alebo presmerovanie na statickú stránku v prípade určitej chyby. Nás bude teraz zaujímať blok location ~ \ .php $ {... ten nastavíme nasledovne
location ~ \.php$ { root /srv/www/htdocs/; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
Tým sme definovali informáciu pre virtual host. Reštartujeme server. Kompletnú dokumentáciu nájdete na http://wiki.nginx.org/
MariaDB
inštalácia
zypper in mariadb
Prvé zapnutie a povolenia
systemctl start mysql.service systemctl enable mysql.service
Po inštalácii nebude nastavené administrátorské heslo. To dodatočne nastavíme pomocou
mysql_secure_installation
Okrem iného budeme vyzvaní na potvrdenie ďalších dôležitých nastavení, treba k povolenie prístupu zvonku. Ak ste niekedy skúšali pracovať s databázou v desktopové aplikácii, tak ste pravdepodobne narazili na odmietnutie prístupu. Hoci na webe databázy funguje, mimo localhost sa k nej pripojiť nedá. Tak to môžete zmeniť práve tu. Varovanie: toto nie je bezpečné, robí sa to inak.
Php
inštalácia
zypper in php5-fpm
Pred spustením musíme urobiť pár úprav.
mv /etc/php5/fpm/php-fpm.conf.default /etc/php5/fpm/php-fpm.conf gedit /etc/php5/fpm/php-fpm.conf
Zmeníme nobody na nginx
user = nginx group = nginx gedit /etc/php5//fpm/php-fpm.conf
odkomentujeme error_log a zmeníme hodnotu na /var/log/php-fpm.log
error_log = /var/log/php-fpm.log
Vo východzej inštalácii nie je php.ini preto ho musíme prekopírovať
cp /etc/php5/cli/php.ini /etc/php5/fpm/
Teraz v php.ini nájdeme cgi.fix_pathinfo, odkomentujeme a zmeníme hodnotu na 0
gedit /etc/php5/cli/php.ini cgi.fix_pathinfo=0
Zapneme PHP a reštartujeme nginx
systemctl start php-fpm.service systemctl enable php-fpm.service systemctl restart nginx.service
odskúšame
gedit /srv/www/htdocs/testphp.php
<?php phpinfo();Pre väčšie pohodlie nastavíme voľná práva pre náš webový root
chmod 777 -R /srv/www/htdocs/
Podrobnejšie nastavenia PHP
Inštalácia všetkých rozšírení
zypper in php*
Inštalácia len mysql (+ mysqli + PDO) ovládače
zypper in php-mysql
Pretty url
Tu sa nechám rád poučiť skúsenejšími, nginx nemá dodatočný konfiguračný súbor .htaccess ako Apache. Všetko je pevne zapísané v hlavnom konfiguráku. Script, na ktorý chceme aplikovať efekt pekných url, natvrdo zapíšeme sem.
gedit /etc/nginx/nginx.conf
location / { root /srv/www/htdocs/; try_files $uri $uri/ /prettyurl.php?$uri&$args; index index.html index.htm index.php; } location ~ \.php$ { root /srv/www/htdocs/; try_files $uri =404; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
Ak sa pretty url v Nginx dajú nastaviť iba týmto spôsobom, môže to spôsobiť problémy u webov s horším návrhom. Napríklad ako by na tomto fungoval PHP-Fusion si neviem predstaviť, zato redakčňák v MVC od Davida, kde sa spúšťa len index.php, by s tým nemal problém.
Celý /etc/nginx/nginx.conf je pre kontrolu v prílohe.PhpMyAdmin
inštalácia
zypper in phpmyadmin
Ja dávam opäť prednosť Adminer.
Takže, server nám beží, všetci sú spokojní a všetko je super. Dúfam, že bude mať niekto zaujímavý problém alebo nápad k riešeniu. Ak ste sa dostali až sem, tak ďakujem za pozornosť.
Poznámka
Všetky príkazy okrem manipulácie so súbormi v adresároch, ktoré vlastníme alebo ku ktorým máme práva, vyžadujú administrátorské potvrdenie "sudo". Ak používate prostredie gnome, tak gedit s rootovskými právami spustíte ako "Gnomes gedit".
Stiahnuť
Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkamiStiahnuté 1255x (978 B)