IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

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

Testovanie nginx web servera - Linux a UNIX

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();
Inštalácia PHP do LEMP v OpenSUSE - Linux a UNIX
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.

LEMP server - Linux a UNIX
Celý /etc/nginx/ngin­x.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 podmienkami

Stiahnuté 1195x (978 B)

 

Všetky články v sekcii
Linux a UNIX
Článok pre vás napísal kxmx
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Aktivity