Konfigurace LEMP serveru na Linuxu OpenSUSE

Linux a UNIX Konfigurace LEMP serveru na Linuxu OpenSUSE

Úvod

Svůj minulý a zároveň první článek jsem zacílil na čerstvé ubunťáky, kteří zatoužili po větší kontrole nad systémem. Tento článek bude o krok dál, náš webový server poskládáme z čistě open source softwaru. Zkratka LEMP zastává Linux, Nginx, MySQL a PHP.

Použitý software

OpenSUSE

OpenSUSE je robustní distribuce, která je oblíbena jak mezi nováčky tak i mezi experty (třeba vývojáři kernelu). Vyvíjí ji komunita a přispívá do ní firma SUSE, která na této komunitní verzi staví komerční verzi SUSE Linux Enterprise. Až tento systém prozkoumám hlouběji, těšte se na samostatný článek.

Nginx

Nginx (vyslovováno Engine x) je rostoucí, momentálně třetí nejpoužívanější softwarový web server. Chlubí se zvládnutím větší zátěže oproti Apachi a vyřešením zranitelných míst. Je multiplatformní, primárně pro unix-like systémy a pod licencí BSD.

MariaDB

MariaDB je v podstatě klon MySQL pocházející ze stejných mozkoven. MySQL bylo prodáno Oraclu, ale Oracle dlouhodobě ignoroval upozornění komunity na bezpečnostní rizika a proto stejný vývojářský team vytvořil open source řešení, které je schopno nahradit MySQL. Přes drobné výhody nehledejte zde i u nginxu nějaké ohromné benefity, prostě to děláme jinak z přesvědčení ve správnost využití open source.

PHP, python, perl

PHP, tak zde je to jasné, ale co má znamenat Python nebo Perl? Webové aplikace můžeme psát ve spoustě jazyků a to včetně Pythonu nebo Perlu. Nemusíte se bát, tento článek bude o PHP. Využití Pythonu na webu je ultrageekovina level výlet do slunce :)

Nginx

V distribuci OpenSUSE je obsažen Apache. Pokud ho používáte, tak ho stopněte:

systemctl stop apache2.service

a poté v každém případě vypněte.

systemctl disable apache2.service

Teď nainstalujeme nginx

zypper in nginx

Nginx stejně jako Apache startuje při zapnutí systému. Teď ho ale zapneme ručně.

systemctl start nginx.service
systemctl enable nginx.service

Ve výchozím stavu je server jen pro localhost. Pokud k němu chceme přistupovat zvenčí, tak musíme nastavit firewall. Otevřeme konfigurační soubor

gedit /etc/sysconfig/SuSEfirewall2

A do prázdných uvozovek doplníme

FW_CONFIGURATIONS_EXT="apache2"

Restartujeme

systemctl restart SuSEfirewall2.service

A odzkoušíme

gedit /srv/www/htdocs/test.html
<html>
        <head>
                <title>nginx</title>
        </head>
        <body>
                <h1>It works!</h1>
        </body>
</html>

Teď mrkněte buď na localhost/test.html nebo <vaše ip>/test.html

Testování nginx web serveru

Všimněte si, že bez index.html nebo index.htm se nám nevypíší soubory v adresáři, ale dostaneme 403 a dokonce 403 dostaneme i v případě, kdy budeme mít index.php. To teď bohužel nemůžeme otestovat, ale můžeme to spravit.

gedit /etc/nginx/nginx.conf

V http > server > location / přidáme za index.htm ještě index.php

location / {
            root   /srv/www/htdocs/;
            index  index.html index.htm index.php;
        }

Ovládání serveru

start

systemctl start nginx.service

stop

systemctl stop nginx.service

restart

systemctl restart nginx.service

Podrobnější nastavení nginx

Otevřeme konfigurační soubor

gedit /etc/nginx/nginx.conf

Na prvním řádku povolíme používat server pod uživatelem nginx, pokud necháme zakomentované tak poběží server pod uživatelem root.

user  nginx;

Další řádek worker_processes určuje kolika procesy má server běžet. Každý proces může v jednu chvíli vyřídit tolik požadavků, kolik je definováno ve worker_connections. Celkový maximální počet možných připojení tedy zjistíme worker_processes * worker_connections. Tento parametr můžeme navýšit pokud chceme využít více jader procesoru. Já si pro testovací účely nechám 1.

worker_processes  1;

Hlouběji v konfiguračním souboru http > server můžeme nastavit port nebo přesměrování na statickou stránku v případě určité chyby. Nás bude teď zajímat blok location ~ \.php$ {… ten nastavíme následovně

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 jsme definovali informaci pro virtual host. Restartujeme server. Kompletní dokumentaci najdete na http://wiki.nginx.org/

MariaDB

Instalace

zypper in mariadb

První zapnutí a povolení

systemctl start mysql.service
systemctl enable mysql.service

Po instalaci nebude nastaveno rootovské heslo. To dodatečně nastavíme pomocí

mysql_secure_installation

Mimo jiné budeme vyzváni k potvrzení dalších důležitých nastavení, třeba k povolení přístupu zvenčí. Pokud jste někdy zkoušeli pracovat s databází v desktopové aplikaci, tak jste nejspíše narazili na odepření přístupu. Ačkoliv na webu databáze funguje, mimo localhost se k ní připojit nedá. Tak to můžete změnit právě zde. Varování: toto není bezpečné, dělá se to jinak.

PHP

Instalace

zypper in php5-fpm

Před spuštěním musíme udělat pár úprav.

mv /etc/php5/fpm/php-fpm.conf.default /etc/php5/fpm/php-fpm.conf
gedit /etc/php5/fpm/php-fpm.conf

Změníme nobody na nginx

user = nginx
group = nginx
gedit /etc/php5//fpm/php-fpm.conf

odkomentujeme error_log a změníme hodnotu na /var/log/php-fpm.log

error_log = /var/log/php-fpm.log

Ve výchozí instalaci není php.ini proto ho musíme překopírovat

cp /etc/php5/cli/php.ini /etc/php5/fpm/

Nyní v php.ini najdeme cgi.fix_pathinfo, odkomentujeme a změníme hodnotu na 0

gedit /etc/php5/cli/php.ini
cgi.fix_pathinfo=0

Zapneme PHP a restartujeme nginx

systemctl start php-fpm.service
systemctl enable php-fpm.service
systemctl restart nginx.service

odzkoušíme

gedit /srv/www/htdocs/testphp.php
<?php
phpinfo();
Instalace PHP do LEMP v OpenSUSE

Pro větší pohodlí nastavíme volná práva pro náš webový root

chmod 777 -R  /srv/www/htdocs/

Podrobnější nastavení PHP

Instalace všech rozšíření

zypper in php*

Instalace jen mysql (+mysqli + pdo) ovladače

zypper in php-mysql
pretty url

Zde se nechám rád poučit zkušenějšími, nginx nemá dodatečný konfigurační soubor .htaccess jako Apache. Vše je pevně zapsáno v hlavním konfiguráku. Script, na který chceme aplikovat efekt hezký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;
        }

Pokud se pretty url v nginxu dají nastavit pouze tímto způsobem, může to způsobit problémy u webů s horším návrhem. Například jak by na tomto fungoval phpfusion si nedovedu představit, zato redakčňák v MVC od Davida, kde se spouští jen index.php, by s tím neměl problém.

LEMP server

Celý /etc/nginx/ngin­x.conf je pro kontrolu v příloze.

PhpMyAdmin

Instalace

zypper in phpmyadmin

Já dávám opět přednost Admineru.

Takže, server nám běží, všichni jsou spokojeni a vše je super. Doufám, že bude mít někdo zajímavý problém nebo nápad k řešení. Pokud jste se dostali až sem, tak děkuji za pozornost.

Poznámka

Všechny příkazy vyjma manipulace se soubory v adresářích, které vlastníme nebo ke kterým máme práva, vyžadují rootovské potvrzení "sudo". Pokud používáte prostředí gnome, tak gedit s rootovskými právy spustíte jako "gnomesu gedit".


 

Stáhnout

Staženo 340x (978 B)

 

  Aktivity (1)

Článek pro vás napsal kxmx
Avatar

Jak se ti líbí článek?
Celkem (1 hlasů) :
55555


 


Miniatura
Všechny články v sekci
Linux a UNIX
Miniatura
Následující článek
Linux

 

 

Komentáře

Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zatím nikdo nevložil komentář - buď první!