Kategorie | Howto, Linux

  

Instalacja serwera WWW nginx z obsługą PHP przez FastCGI i MySQL

Opublikowano 01 czerwca 2010 przez Franek

nginx (wymawiamy jako engine x) jest to serwer WWW oraz serwer proxy dla HTTP i IMAP/POP3. Zaprojektowany on został z myślą o wysokiej dostępności w silnie obciążonych serwisach, podczas jego projektowania duży nacisk kładziono na jego skalowalność oraz niskie wymagania sprzętowe. Serwer ten nie posiada takiej popularności jak Apache, wykorzystywany jest jednak na wielu dużych serwisach między innymi nasza-klasa.pl, wordpress.com czy sourceforge.com. nginx napisany został przez Igora Sysojewa i wydawany jest na licencji BSD.

1 Instalujemy potrzebne pakiety:

sudo apt-get install php5-cgi php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-common php5-ming php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl php5-cli spawn-fcgi nginx

2 Konfigurujemy przykładową stronę nibyblog.pl.

a Tworzymy katalogi dla witryny:

mkdir -p /home/franek/domains/nibyblog.pl/public_html

mkdir /home/franek/domains/nibyblog.pl/logs

b Tworzymy i edytujemy plik ustawień wirtualnego hosta oraz wpisujemy do niego poniższą zawartość:

sudo vim /etc/nginx/sites-available/nibyblog.pl

pastebin.com/WFgRzHuj – wrzuciłem, na Pastebin ponieważ WordPress zbój psuje.

c Włączamy wirtualnego hosta i startujemy serwer WWW;

sudo ln -s /etc/nginx/sites-available/nibyblog.pl /etc/nginx/sites-enabled/nibyblog.pl

sudo /etc/init.d/nginx start

3 Tworzymy dwa skrypty dzięki którym będziemy uruchamiać php-fastcgi:

sudo vim /usr/bin/php-fastcgi

Wklejamy do niego:

#!/bin/sh
/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -C 6 -u www-data -f /usr/bin/php5-cgi

Nadajemy uprawnienia do wykonywania:

sudo chmod +x /usr/bin/php-fastcgi

sudo vim /etc/init.d/php-fastcgi

Do którego wklejamy:

#!/bin/bash
PHP_SCRIPT=/usr/bin/php-fastcgi
FASTCGI_USER=www-data
RETVAL=0
case "$1" in
start)
su - $FASTCGI_USER -c $PHP_SCRIPT
RETVAL=$?
;;
stop)
killall -9 php5-cgi
RETVAL=$?
;;
restart)
killall -9 php5-cgi
su - $FASTCGI_USER -c $PHP_SCRIPT
RETVAL=$?
;;
*)
echo "Usage: php-fastcgi {start|stop|restart}"
exit 1
;;
esac
exit $RETVAL

Nadajemy odpowiednie uprawnienia i włączamy php-fastcgi:

sudo chmod 755 /etc/init.d/php-fastcgi

sudo /etc/init.d/php-fastcgi start

4 Instalujemy serwer baz danych:

sudo apt-get install mysql-server mysql-client

Podczas instalacji zostaniemy poproszeni o podanie hasła root, po instalacji można już zalogować się do MySQL i utworzyć pierwszą testową bazę danych:

mysql -p -u root

CREATE DATABASE testowa;

USE testowa;

GRANT ALL ON testowa.* TO userbazy@localhost IDENTIFIED BY 'jakieshaslo';

Możemy zainstalować już na przykład WordPress :]

Strona domowa enginx nginx.org ; na podstawie library.linode.com

  

22 Comments For This Post

  1. morii Says:

    tak połamanego gramatycznie wpisu dawno nie widziałem….

  2. Franek Says:

    Więc mam nadzieję że tu nigdy nie wrócisz :)

  3. Łukasz Says:

    Ja tam wolę lighttpd ;P Ale i tak wszystko lepsze niż Apache

  4. sbl Says:

    @morii: sam/sama jesteś połamany. Nie znasz się i nie wiesz co jest pięć. Idź stąd i nie wracaj bo głosujesz na PiS i PO i akysz. Fakjumaderfakerbicz.

  5. Greg Says:

    Dzięki, szukałem jak dodać "usługę" php do Nginx'a w nie dłużej niż 60 sekund.

  6. EternalSH Says:

    Zrobiłem wszystko zgodnie z tutkiem i dostaję "No input file specified" przy próbie otworzenia jakiegokolwiek pliku .php :|

  7. Franek Says:

    Robiłem tak ja i nie tylko ja i jakoś się udawało -_-

  8. PcP Says:

    Sprawdź ścieżkę w pliku z http://pastebin.com/WFgRzHuj w linii 16.

  9. Darek Says:

    Działa, dzięki. Jak możesz popraw linię: "sudo vim /etc/init.d/php-fastcgi start" na "sudo vim /etc/init.d/php-fastcgi start". Ten start tam nie jest potrzebny. Podrawiam

  10. Franek Says:

    Naprawione :)

  11. PcP Says:

    Ale w poleceniu "sudo /etc/init.d/php-fastcgi" start jest konieczny.

  12. Darek Says:

    ups mój błąd miało byc bez start :)

  13. SpeX Says:

    Ooo choć VPSa konfiguruję według tego tutka: http://notatnik.mekk.waw.pl/archives/60-Konfiguru

    Sprawa serwisu www o wiele sprawniej opisana.

    Choć ma też kilka pytań:
    1) Po co tyle biblotek php? Z tego co widzę w innych tutkach niema ich aż tyle?

    2) Czy to rozwiązanie zapewnia starty wszystkich usług po resecie serwera?

    3) Co muszę zmienić by w ten sposób zrobić pythona?

    Poza tym przydało by się coś więcej o optymalizacji mysqla.

  14. SpeX Says:

    Pytanie, po co aż tyle pakietów php? Z tego co widzę, alternatywne opisy zawierają ich o wiele mniej.

  15. Franek Says:

    Wedle mnie są to podstawowe pakiety do instalacji na web serwerze, ale nic nie stoi na przeszkodzie aby zainstalować tylko php5-cgi php5-mysql

  16. SpeX Says:

    Wiem iż to jest minimum. A resztę według potrzeb. Bo o ile część pakietów np graficznych rozpoznaję. To reszty nie.

  17. SpeX Says:

    Inna sprawa masz pomysł czemu iz CGI zwraca taki błąd?
    spex@vps:/etc/nginx$ sudo /etc/init.d/php-fastcgi start
    No directory, logging in with HOME=/
    spawn-fcgi: child exited with: 2

  18. SpeX Says:

    Więcej o konfiguracji: http://www.webhostingtalk.pl/topic/32361-php-ngin

  19. english Says:

    jak przy takiej konfiguracji ma wyglądać
    /etc/nginx/sites-available/default ?
    mógłby ktoś wrzucić to na pastebin ?
    dzięki

  20. Franek Says:

    Ja nic tam nie zmieniałem,

  21. Oscar Says:

    Panowie i miłe Panie :-)). Czy ktoś z tutejszych może mi pomóc zainstalować nginx. Mam kilka stron postawionych na WP w tej niby firmie nr 1 i krew mnie już zalewa

  22. spalonygarnek Says:

    Mnie również Oscar, mam największy problem z php5 , niechcą się widzieć. a nie mówie tu już o Maridb ? chyba kestem na to za głupi :)

Leave a Reply

Polityka komentarzy

     
     
Green Dog Says

MiniBlog