Debian 7 + NGINX + PHP5 + MariaDB 10 + PHPMyAdmin

lemp

Nginx to lekki serwer http i reverse proxy. Potrafi także działać jako load balancer, dlatego często określany jest jako router HTTP. Stanowi poważną alternatywę dla przeładowanego apache. W środowisku prodykcyjnym nginx zaskakuje wydajnością oraz małym zużyciem pamięci co jest zaletą dla dużych jak wordpress.com jak i małych jak słabiutki vps z 128MB.
Na niekorzyść nginx-a przemawia fakt, braku wsparcia plików .htaccess oraz składnia modułu rewrite jest nieco inna od składni mod_rewrite. Brak obsługi .htaccess determinuje konieczność wprowadzania czy to dyrektyw rewrite czy innych obsługiwanych w .htaccess do konfiguracji serwera przez jego administratora.
Przewagę jaką uzyskuje nginx nad popularnym apachem wynika z modelu obsługi przychodzących połączeń. W Apache każde nowe połączenie wymaga uruchomienia nowego procesu (mpm-prefork) lub wątku (mpm-worker), który obsłuży przychodzące żądanie.

http://www.ulos.pl/

I. INSTALACJA NGINX

1. Usuwamy ewentualnie Apache2 jeżeli aktualnie go używamy:

apt-get purge apache2*
apt-get autoremove -y

2. Instalujemy nginx

apt-get install nginx -y

3. Uruchamiamy:

service nginx start

Po wczytaniu w  przeglądarce IP naszego serwera ukaże się napis powitalny.

4. Edytujemy parametry serwera nginx, aby pracowal uzywajac jedcnego rdzenia CPU

nano /etc/nginx/nginx.conf

I ustawiamy odpowiednia cyfre w linii:

worker_processes 1;

5. Edytujemy vHost do obsługi PHP

nano /etc/nginx/sites-available/default
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /usr/share/nginx/html;
index index.php index.html index.htm;
server_name server.unixmen.local;
  • listen 80; –> Port na jakim nasłuchuje serwer WWW
  • listen [::]:80 default_server ipv6only=on; –> Obsługa IPv6
  • root /usr/share/nginx/html; –> domyślny katalog z którego będzie wyświetlana witryna
  • server_name server.unixmen.local; –> Server FQDN.

Obsługa PHP

location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini

# # With php5-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}

Resetujemy serwer nginx po wprowadzeniu zmian z powyższego punktu:

service nginx restart

II. Instalacja bazy danych MariaDB (mozliwa równiez instalacja MySQL) oraz PHP5

1. Dodanie repozytoriów

apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
echo "deb http://mariadb.kisiek.net//repo/10.0/debian wheezy main" > /etc/apt/sources.list.d/mariadb.list
apt-get update; apt-get install mariadb-server mariadb-client -y

Podczas instalacji uzupełniamy hasło do konta root serwera bazy.

2. Instalacja PHP5

apt-get install php5 php5-fpm php5-mysql -y

W pliku /etc/php5/fpm/php.ini edytujemy [ usuwamy komentarz # lub wklejamy na końcu ]:

nano /etc/php5/fpm/php.ini
cgi.fix_pathinfo=0

Restart procesu PHP-FPM

service php5-fpm restart

3. Test działania:

 echo "<?php  phpinfo(); ?>" >> /usr/share/nginx/www/testphp.php

W przegladarce teraz http://<twoj-ip>/testphp.php powinny pojawić się info o PHP 🙂

III. Instalacja phpmyadmin:

1. Instalacja:

apt-get install phpmyadmin -y

Podczas wyboru aktualnie używanego serwera WWW wybierz po prostu lighttpd, domyślnie phpmyadmin nie zna serwera nginx. Oraz pamietaj o poprawnej konfiguracji haseł: konta root MariaDB i bazy danych od phpmyadmin’a

2. Dostęp do phpmyadmin:

ln -s /usr/share/phpmyadmin/ /usr/share/nginx/www

I na koniec:

service nginx restart

http://<twoj-ip>/phpmyadmin llgfo