Главная > Операционные системы > 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  E-mail
Новости  Поиск по сайту

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