Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: HOWTO: Установка Nginx с PHP5 и поддержкой MySQL в Ubuntu 9.04  (Прочитано 31716 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Baggio

  • Автор темы
  • Любитель
  • *
  • Сообщений: 70
  • Телепад
    • Просмотр профиля
    • Linux & FreeBSD

Nginx(engine x) (читается как Энджин икс) является свободным, открытым исходным кодом, высокопроизводительный сервер HTTP. Nginx известен своей стабильностью, богатым набором функций, простой конфигурацией, и низким потреблением ресурсов. В этом учебнике показано, как можно установить Nginx на Ubuntu 9.04 сервер с поддержкой PHP5 (через FastCGI) и поддержкой MySQL.

1 Предварительная заметка

В этом уроке я использую имя хоста server1.example.com с IP адресом 192.168.0.100. Эти параметры могут отличаться от ваших, поэтому вам придется заменить их в случае необходимости.

Я запускаю все шаги в этом учебнике с привилегиями администратора, поэтому убедитесь, что вы вошли в систему как Root:

Цитировать
sudo su

2 Установка MySQL 5.0

Для установки MySQL, запускаем

Цитировать
aptitude install mysql-server mysql-client

Вам будет предложено ввести пароль для пользователя root MySQL - этот пароль действителен для пользователя root@localhost, а также root@server1.example.com, поэтому нам не нужно указывать пароль root MySQL, который мы введём вручную позже:

Цитировать
New password for the MySQL "root" user: <-- yourrootsqlpassword
Repeat password for the MySQL "root" user: <-- yourrootsqlpassword

3 Установка Nginx

Nginx доступна в виде пакета для Ubuntu 9.04, который мы можем установить следующим образом:

Цитировать
aptitude install nginx

Затем стартуем Nginx:

Цитировать
/etc/init.d/nginx start

Введите IP вашего веб-сервера адрес или имя хоста в браузере (например, http://192.168.0.100), и вы увидите страницу приветствия Nginx:



4 Установка PHP5

Мы можем PHP5 заставить работать в Nginx через FastCGI. К счастью, Ubuntu 9.04 предоставляется FastCGI поддержкой PHP5 пакетов, которые мы устанавливаем (вместе с некоторыми необходимыми модулями PHP5 как php5-MySQL, если вы хотите использовать MySQL из ваших скриптов 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 в самый конец файла:

Цитировать
vi /etc/php5/cgi/php.ini

Цитировать
[...]
cgi.fix_pathinfo = 1

FastCGI нет автономный демон для Ubuntu 9.04, поэтому мы используем spawn-fcgi программу Lighttpd. Установим Lighttpd следующим образом:

Цитировать
aptitude install lighttpd

Вы увидите сообщение, что Lighttpd не может запуститься, поскольку порт 80 уже используется:

Цитировать
Starting web server: lighttpd 2009-04-30 15:51:50: (network.c.300) can't bind to port: 80 Address already in use
 failed!

Как и предполагалось, потому, что  Nginx уже слушает 80 порт. Запускаем:

Цитировать
update-rc.d -f lighttpd remove

так что Lighttpd не будет запускаться при запуске.

Мы установили Lighttpd, поскольку нам нужна только одна программа, которая поставляется вместе с пакетом, /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...

Цитировать
vi /etc/rc.local

... и добавте команду в конец файла (перед линией exit):

Цитировать
[...]
/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
[...]

5 Настройка Nginx

Конфигурируем nginx в файле /etc/nginx/nginx.conf который мы сейчас откроем:

Цитировать
vi /etc/nginx/nginx.conf

Для начала (это необязательно) увеличиваем число рабочих процессов и устанавливаем keepalive_timeout до разумного значения:

Цитировать
[...]
worker_processes  5;
[...]
    keepalive_timeout   2;
[...]

Виртуальные хосты определяются по server {} контейнерах. Vhost по умолчанию (default) определяется в файле /etc/nginx/sites-available/default - давайте изменим его следующим образом:

Цитировать
vi /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 _; делает это по умолчанию всеохватывающий vhost  (конечно, Вы можете также указать имя хоста, например, www.example.com).

В location / я добавил index.php в строку index. root /var/www/nginx-default; означает, что коневой документ это каталог /var/www/nginx-default.

Важной частью для РНР это location ~ \.php$ {} stanza. Раскомментируйте его, чтобы включить. Пожалуйста, убедитесь, что вы изменили линию fastcgi_param на fastcgi_param SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name; (замените /var/www/nginx-default на ваш корневой каталог) поскольку в противном случае интерпретатор PHP не найдёт PHP скрипт, на который будет обращатся ваш браузер.

Убедитесь в том, что существуют некоторые пробелы между include и fastcgi_params; -    в файле по умолчанию это записано как одно слово, которое является ошибкой.

Теперь сохраните файл и перезагрузите Nginx:

Цитировать
/etc/init.d/nginx restart

Теперь создадим следующий PHP файл в корневом каталоге документов

Цитировать
vi /var/www/nginx-default/info.php

Цитировать
<?php
phpinfo();
?>

Теперь мы откроем этот файл в браузере (например, http://192.168.0.100/info.php):



Как видите, PHP5 работает, и что он работает через FastCGI, как показано на линии Server API. Если вы прокрутите список вниз, вы увидите все модули, которые уже включены в PHP5, включая MySQL модуль:



Источник
« Последнее редактирование: 08 Сентября 2009, 16:32:52 от Baggio »
Мой сайт http://linux-bsd.pp.ua

Оффлайн ArtemZ

  • Участник
  • *
  • Сообщений: 110
    • Просмотр профиля
Re: HOWTO: Установка Nginx с PHP5 и поддержкой MySQL в Ubuntu 9.04
« Ответ #1 : 08 Сентября 2009, 16:22:53 »
Цитировать
Мы можем сделать PHP5 работу в Nginx через FastCGI.
:2funny:

Оффлайн Baggio

  • Автор темы
  • Любитель
  • *
  • Сообщений: 70
  • Телепад
    • Просмотр профиля
    • Linux & FreeBSD
Re: HOWTO: Установка Nginx с PHP5 и поддержкой MySQL в Ubuntu 9.04
« Ответ #2 : 08 Сентября 2009, 16:25:22 »
Видать не внимательно переведено с английского :)

Исправил :)
« Последнее редактирование: 08 Сентября 2009, 16:27:49 от Baggio »
Мой сайт http://linux-bsd.pp.ua

Оффлайн moogprodigy

  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Re: HOWTO: Установка Nginx с PHP5 и поддержкой MySQL в Ubuntu 9.04
« Ответ #3 : 08 Сентября 2009, 20:24:13 »
Совместим ли с движками различных сайтов(joomla),форумных движков?

Оффлайн Baggio

  • Автор темы
  • Любитель
  • *
  • Сообщений: 70
  • Телепад
    • Просмотр профиля
    • Linux & FreeBSD
Re: HOWTO: Установка Nginx с PHP5 и поддержкой MySQL в Ubuntu 9.04
« Ответ #4 : 08 Сентября 2009, 20:58:07 »
Думаю что совместим, опять же проблема nginx + php-fast-cgi не дружит с .htaccess, нужно его вписывать в конфиг nginx-a. Хотя ходят слухи, что можно подружить, якобы существует мод.
Мой сайт http://linux-bsd.pp.ua

Оффлайн Baggio

  • Автор темы
  • Любитель
  • *
  • Сообщений: 70
  • Телепад
    • Просмотр профиля
    • Linux & FreeBSD
Re: HOWTO: Установка Nginx с PHP5 и поддержкой MySQL в Ubuntu 9.04
« Ответ #5 : 17 Сентября 2009, 16:59:31 »
Кто-то уже ставил по данному ману? У меня до этого на убунте что-то ещё было, вообщем поставил при вводе http://192.168.0.1/info.php пишет не найден файл :) Даже http://localhost/info.php чем пнуть или решить проблему?
Мой сайт http://linux-bsd.pp.ua

Оффлайн Ura

  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Я проверил
Эта команда vi /etc/nginx/nginx.conf  и эта цитата
[...]
worker_processes  5;
[...]
    keepalive_timeout   2;
[...]


keepalive_timeout   2  нужно закоментировать, тогда открывается страница

Оффлайн dexs

  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
У мну работает , пасиб .

Оффлайн Baggio

  • Автор темы
  • Любитель
  • *
  • Сообщений: 70
  • Телепад
    • Просмотр профиля
    • Linux & FreeBSD
Я проверил
Эта команда vi /etc/nginx/nginx.conf  и эта цитата
[...]
worker_processes  5;
[...]
    keepalive_timeout   2;
[...]


keepalive_timeout   2  нужно закоментировать, тогда открывается страница

Я оставил как есть, по умолчанию keepalive_timeout   65;, работает отлично!

Вот только не пойму как с базой работать.

Пользователь решил продолжить мысль [time]Wed Oct  7 16:16:16 2009[/time]:
Поставил phpmyadmin под lighttpd
затем в терминале ввёл строчку:
Цитировать
sudo ln -s /usr/share/phpmyadmin /var/www/nginx-default
таким образом скопировал в директорию сайта, папку с phpmyadmin. Теперь можно пользоватся http://192.168.0.100/phpmyadmin/
Спасибо за подсказку NoNaMe
« Последнее редактирование: 07 Октября 2009, 18:18:14 от Baggio »
Мой сайт http://linux-bsd.pp.ua

Оффлайн STR1KE

  • Новичок
  • *
  • Сообщений: 36
  • = )
    • Просмотр профиля
А как обновить nginx ? :)
И mysql устанавливаться не хочет, пишет E: Не удалось найти пакет mysql-server. Помогите пожалуйста  :coolsmiley:
« Последнее редактирование: 30 Октября 2009, 18:38:15 от STR1KE »

Оффлайн bond1211

  • Любитель
  • *
  • Сообщений: 56
    • Просмотр профиля
спасибо)
« Последнее редактирование: 19 Февраля 2010, 22:03:42 от bond1211 »

Оффлайн Syrex

  • Участник
  • *
  • Сообщений: 113
    • Просмотр профиля
Народ,а как обновить nginx уже установленный до более новой версии не теряя настроек ?

Оффлайн Click

  • Активист
  • *
  • Сообщений: 693
  • Красафчег
    • Просмотр профиля
    • Ubuntu и напильник
usr/bin/php5-cgi часто падает,
который запускается командой
/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
как бы это починить, или ловить момент и перезапускать автоматом?

Оффлайн lv

  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Огромнейшее спасибо! Все объяснено толково и по существу

Оффлайн KaMaToZzz

  • Новичок
  • *
  • Сообщений: 34
    • Просмотр профиля
usr/bin/php5-cgi часто падает,
который запускается командой
/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
как бы это починить, или ловить момент и перезапускать автоматом?

поддерживаю, как решить проблему с падением?
попробывал в крон засунуть чистую команду, не вышло...
Есть у кого либо еще варинаты?

 

Страница сгенерирована за 0.061 секунд. Запросов: 24.