Головна > Операційні системи > Unix/Linux >
Встановлення nginx, php5 CGI і MySQL на Debian Lenny

Встановлення nginx, php5 CGI і MySQL

Nginx (вимовляється як "енджин ікс") - це легкий високопродуктивний веб-сервер з відкритим початковим кодом. Він відомий своєю стабільністю, великим набором функцій, порівняно простотою конфігурації, а також вельми низькою вимогливістю до ресурсів. В цій статті я опишу процес встановлення nginx, PHP5 в CGI-режимі і MySQL на Debian Lenny.

У нашому прикладі встановлення буде здійснюватись на сервер із доменним ім'ям server1.example.com та IP-адресою 192.168.1.100

Встановлення MySQL 5.0

aptitude install mysql-server mysql-client

В процесі встановлення вас попросять ввести пароль для користувача root. Цей користувач не має нічого спільного з системним користувачем root. Цей пароль буде використаний для користувача, який володіє суперпривілеями для самої MySQL:

New password for the MySQL "root" user: <-- yourrootsqlpassword
Repeat password for the MySQL "root" user: <-- yourrootsqlpassword

Встановлення Nginx

Nginx є в репозиторії Debian, що істотно спрощує нашу задачу :)
Встановимо та запустимо його:

aptitude install nginx
/etc/init.d/nginx start

Наберіть в браузері IP-адресу або хостнейм серверу (наприклад http://192.168.0.100) і ви побачите стартову сторінку nginx

Стартова сторінка nginx

Встановлення PHP5

Для "спілкування" між nginx і PHP ми будемо використовувати FastCGI. На щастя, в репозиторіях Debian є пакет, який забезпечує підтримку FCGI в PHP. Встановимо PHP:

aptitude install php5-cgi php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

Відредагуйте файл /etc/php5/cgi/php.ini додавши у його кінець наступний рядок:

cgi.fix_pathinfo = 1

В Debian немає самостійного додатка для FastCGI, тому ми скористаємося spawn-fcgi, яка входить у склад lighttpd:

aptitude install lighttpd

І після встановлення зразу ж отримаємо помилку:

Starting web server: lighttpd2009-03-19 15:58:09: (network.c.300) 
can't bind to port: 80 Address already in use failed!

Логічно, 80-й порт у нас зайнятий nginx-ом. Тому зробимо так, щоб Лайті не запускався при завантаженні системи:

update-rc.d -f lighttpd remove

Ми встановили Лайті тільки для того, щоб скористатись дуже корисною для наших цілей програмою, яка йде з ним в комплекті: /usr/bin/spawn-fcgi, саме її ми будемо використовувати для запуску процесів FastCGI. Для швидкого ознайомлення з її можливостями виконайте команду:

spawn-fcgi -help

Для запуску PHP FastCGI-демону на 9000 порті на сервері localhost від користувача www-data виконайте: (в один рядок)

/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -g www-data -f 
/usr/bin/php5-cgi -P /var/run/fastcgi-php.pid

І щоб кожний раз не доводилось вводити це вручну, команду можна прописати в /etc/rc.local

Налаштування Nginx

Конфігураційний файл nginx розташований тут: /etc/nginx/nginx.conf. Для початку (необов'язково) збільшимо кількість робочих процесів і поміняємо параметр keepalive_timeout:

[...]
worker_processes  5;
[...]
    keepalive_timeout   2;
[...]

Налаштування віртуальних хостів розташовані в секції server {}, хост за умовчанням описаний в /etc/nginx/sites-available/default, модифікуйте його наступним чином:

[...]
server {
        listen   80;
        server_name  _;

        access_log  /var/log/nginx/localhost.access.log;

        location / {
                root   /var/www/nginx-default;
                index  index.php index.html index.htm;
        }

        location /doc {
                root   /usr/share;
                autoindex on;
                allow 127.0.0.1;
                deny all;
        }

        location /images {
                root   /usr/share;
                autoindex on;
        }

        #error_page  404  /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
                root   /var/www/nginx-default;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
                #proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ \.php$ {
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  /var/www/nginx-default$fastcgi_script_name;
                include        fastcgi_params;
        }

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        location ~ /\.ht {
                deny  all;
        }
}
[...]

server_name _; - ім'я хосту "за умовчанням" (звичайно ж, ніхто не мішає явно вказати ім'я хосту, наприклад example.com)
У висловлювані location / ми вказуємо індексний файл (index.php) і document root (/var/www/nginx-default)
Важлива частина для PHP - це location ~ \.php$ {}, розкоментуйте її. Не забудьте перевірити, що ви змінили рядок fastcgi_param на fastcgi_param SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name (замініть /var/www/nginx-default на ваш реальний шлях до document root), інакше інтерпретатор PHP може не знайти скрипт, який ви намагаєтесь відкрити через браузер.
Переконайтесь, що між include і fastcgi_params є пропуск, в оригінальному файлі вони записані як одне слово - це помилка.
Перезапустіть nginx

/etc/init.d/nginx restart

Створіть тестовий файл PHP з наступним вмістом:

<?php
phpinfo();
?>

Збережіть у вашій document root та відкрийте його в браузері (http://192.168.0.100/info.php)

Інформаційне вікно PHP5

Зверніть увагу на рядок ServerAPI

Джерело: http://boombick.org/blog/posts/79, 18.VIII.2009
Переклад: УкрFAQ, 22.VII.2010


Украинская Баннерная Сеть

Головна  Алфавітний Індекс  Довідка  Додати FAQ  E-mail
Новини  Пошук по сайту

© УкрFAQ 2010
Сайт создан в системе uCoz