A PHP Error was encountered

Severity: 8192

Message: mysql_escape_string(): This function is deprecated; use mysql_real_escape_string() instead.

Filename: mysql/mysql_driver.php

Line Number: 303

(Полное руководство) Установка Nginx 1.1.4 + PHP-fastcgi + MySQL + memcache на Debian (FastVPS)

(Полное руководство) Установка Nginx 1.1.4 + PHP-fastcgi + MySQL + memcache на Debian (FastVPS)

Автор: Mowshon.
Опубликовано 22 сентября 2011
в рубрике PHP, Рабочая среда

Просмотров: 7563.
Подписаться на комментарии по RSS.

Nginx + PHP-fastcgi + MySQL + memcache на Debian (FastVPS)

Решил написать данную статью после того, как сам столкнулся с установкой нового Nginx 1.1.4 на VPS от FastVPS. Купил OVZ-3, поставил Debian 5 но вот что-то захотелось поставить Nginx. Сайты все у меня на apache, но вот недавно заметил небольшое торможение сайтов и решил сменить и VPS и серверную часть. По мере изучения материалов с хабры и применяя их на VPS столкнулся с небольшими проблемами установки Nginx. Данная статья будет полезна начинающим веб-мастерам которые, хотят быстро установить у себя свежую версию Nginx и MySQL.

Требования к вам:

- Доступ к VPS на котором установлена ОС Debian Linux

- SSH-клиент с помощью которого вы будете ввести все нижеуказанные команды

- Начальное знакомство с командной строкой Linux

Разработка Nginx не стоит на месте, она развивается большими темпами. Мы установим новую версию на текущий момент Nginx 1.1.4. Репозитории Debian не могут представить нам новые версии, так что мы и без него их найдем.

Сперва давайте обновим пакеты

apt-get update
Ставим библиотеки в которых нуждается Nginx для нормальной работы

apt-get install libpcre3 libpcre3-dev libpcrecpp0 libssl-dev zlib1g-dev openssl libcurl4-openssl-dev
Для поддержки Perl

apt-get install libperl-dev
Теперь самое главное для чего мы тут и собрались, начинаем сборку и установку Nginx 1.1.4

(Выполняем по одной строке)

cd /tmp
wget http://nginx.org/download/nginx-1.1.4.tar.gz
tar -zxvf nginx-1.1.4.tar.gz
cd nginx-1.1.4
./configure \
--user=www-data \
--group=www-data \
--with-cc-opt="-I /usr/include" \
--with-ld-opt="-L /usr/lib" \
--with-http_ssl_module \
--with-http_realip_module \
--with-http_addition_module \
--with-http_sub_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_gzip_static_module \
--with-mail \
--with-mail_ssl_module
make
make install

Теперь запускаем самого Nginx

/usr/local/nginx/sbin/nginx

Заходим на сайт(или на IP) вашего VPS где установили только что Nginx. Вы должны увидеть по середине большим шрифтом текст: Welcome to nginx! Это означает что, вы хорошо справляетесь с поставленной задачей!

Для продолжения установки нам понадобится помощь команды dos2unix Данная команда является конвертером файлов которые были созданы в среде Windows и запускаются в Unix.

Скоро мы начнем создавать скрипт для авто запуска nginx и PHP-fastcgi, если вы работаете в ОС Windows то текст ниже спасет ваши нервы, если вы начали запуск данных скриптов читая данную статью. Если вы сейчас на ОС из семейства Linux, тогда вы можете сразу перейти к созданию файлов. Проблема в том что текстовые редакторы из Windows вставляют некоторые символы которых Linux не адекватно воспринимает и при запуске скрипта вы бы получали ошибку: /bin/sh^M: bad interpreter: no such file or directory

Устанавливаем dos2unix во избежании ошибки "dos2unix command not found"

apt-get install tofrodos
Теперь добавляем nginx в автозагрузку, для этого следуем шагам:

1. Сохраняем файл nginx в /etc/init.d/ (Получится такой путь к файлу: /etc/init.d/nginx)

2. Выполняем конвертацию файла из DOS в UNIX

dos2unix /etc/init.d/nginx

Делаем исполняемым и добавляем nginx в автозагрузку:

chmod 755 /etc/init.d/nginx
update-rc.d nginx defaults

Теперь мы можем манипулировать состоянием http-сервера с помощью команд:

/etc/init.d/nginx start
/etc/init.d/nginx restart
/etc/init.d/nginx stop

Установка MySQL

Мы не будет устанавливать MySQL из стандартного набора Debian, подключим дополнительный репозиторий, который порадует нас новыми пакетами данных.

Чтобы открыть доступ к новому репозитарию, редактируем файл /etc/apt/sources.list добавляем в конце данные строки:

deb http://packages.dotdeb.org  lenny all
deb-src http://packages.dotdeb.org lenny all
Во избежании жалоб на отсутствие подписи, мы добавим следующие ключи:

gpg --keyserver keys.gnupg.net --recv-key 89DF5277
gpg -a --export 89DF5277 | sudo apt-key add -
Если у вас не установлена утилита aptitude выполните данную команду

apt-get install aptitude
Вернемся к установке MySQL, устанавливаем MySQL сервер командой:

(Во время установки вас попросят ввести новый пароль от MySQL root пользователя, будьте осторожны!)

aptitude install mysql-server mysql-client

Установка PHP и дополнительные расширения

Выполняем в командной строке:

aptitude install php5 php5-cgi php5-curl php5-mysql php5-gd php5-recode php5-imagick php5-dev php5-mcrypt php5-memcache

Настройка FastCGI

1. Сохраняем init-скрипт php-fastcgi в /etc/init.d (получится такой путь: /etc/init.d/php-fastcgi)

2. Создаем для него файл конфигурации в директории /etc/default/php-fastcgi.

Сохраняем файл php-fastcgi в /etc/default/ (получится такой путь: /etc/default/php-fastcgi)

3. Выполняем конвертацию файлов из DOS в UNIX

dos2unix /etc/init.d/php-fastcgi
dos2unix /etc/default/php-fastcgi
Добавляем скрипт в список автоматического выполнения при загрузке системы

chmod 755 /etc/init.d/php-fastcgi
chmod 755 /etc/default/php-fastcgi
update-rc.d php-fastcgi defaults

Запускаем службу:

/etc/init.d/php-fastcgi restart

Настройка Nginx

Создаем папку где будут лежать файлы нашего сайта:

mkdir -p /home/www
chmod 0755 /home/www

Открываем файл /usr/local/nginx/conf/nginx.conf и сохраняем его с текущем содержимым

user www-data www-data;
worker_processes  1;
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
#pid        logs/nginx.pid;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    client_max_body_size 100m;
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';
    #access_log  logs/access.log  main;
    sendfile        on;
    #tcp_nopush     on;
    #keepalive_timeout  0;
    keepalive_timeout  65;
    #gzip  on;
    server {
        listen       80;
        server_name  localhost;
        charset utf-8;
        #access_log  logs/host.access.log  main;
        location / {
            root   /home/www;
            index  index.php index.html index.htm;
        }
        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /home/www$fastcgi_script_name;
            include        fastcgi_params;
        }
    }
}

Перезапускаем nginx:

/etc/init.d/nginx restart

Создаем файл index.php и загружаем его в папку /home/www

<?php
phpinfo();
?>

Зайдите на ваш сайт и уведите результат нашей работы. Если вы уведите логотип PHP и большую таблицу с характеристиками установленного PHP значит вы справились!

MEMCACHE

Выполняем следующую команду в командной строке:

 

apt-get install memcached

Перезапускаем php

/etc/init.d/php-fastcgi restart

Удачной работы!

Если будут вопросы, задавайте их в комментариях ниже!

Заказать качественный VPS/VDS от качественных представителей FastVPS.ru

Комментариев: 19

  1. Андрей | 27.09.2011 в 15:32:09 | #1

    Пробовал разные манулы для установки nginx, всегда что-то мешало...

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

  2. guest | 17.01.2012 в 00:04:56 | #2

    Добрый день.

    Хорошая статья, вот только отсутствуют файлы:

    http://live-code.ru/uploads/script/php-fastcgi

    http://live-code.ru/uploads/script/nginx

    было бы здорово, если бы они присутствовали.

    С уважением, Гость

  3. Mowshon | 17.01.2012 в 02:13:12 | #3

    guest, извиняюсь за отсутствия скриптов.

    Обновил их, ссылки рабочие.

  4. Oleg | 15.02.2012 в 20:49:43 | #4
    mkdir -p /homw/www
    chmod 0755 /homw/www

    Опечатка в пути

    За статью огромное спасибо!

  5. Mowshon | 16.02.2012 в 17:29:50 | #5

    Oleg, спасибо за внимательность, исправил.

  6. Аноним | 21.02.2012 в 20:18:51 | #6

    Ошибочка:

    aptitude install php5 php5-cgi php5-curl php5-mysql php5-gd php5-recode php5-imagick php-dev php5-mcrypt php5-memcache

    Надо:

    aptitude install php5 php5-cgi php5-curl php5-mysql php5-gd php5-recode php5-imagick php5-dev php5-mcrypt php5-memcache
  7. Mowshon | 21.02.2012 в 23:29:59 | #7

    Аноним, Спасибо за содействие в создании качественного мануала. Исправил

  8. Sidenxab | 01.03.2012 в 10:51:39 | #8

    Выдает вот такую ошибку, в чем может быть проблема?

    /usr/local/nginx/sbin/nginx
    nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
    nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
    nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
    nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
    nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
    nginx: [emerg] still could not bind()
  9. Mowshon | 01.03.2012 в 17:09:45 | #9

    Sidenxab, скорее всего проблема в Apache, он у Вас работает и занимает тот же порт, что и nginx.

    отключите apache

    /etc/init.d/apache2 stop

    потом уже запустите nginx

  10. Sidenxab | 01.03.2012 в 20:34:54 | #10

    Ну это все понятно, а вот у меня работает .htaccess, без apache2 уже не будет рабоать? И еще, как порт поменять на apache2, и в каких именно файлов, не подскажешь?!

  11. Mowshon | 01.03.2012 в 20:56:07 | #11

    Sidenxab, htaccess является файл с вспомогательными конфигурациями для сервера apache, если перейти на nginx, то конфигурации которые были указаны в htaccess не будут актуальны в nginx.

    Можно переписать htaccess под конфиг nginx, используя данный ресурс:

    http://www.anilcetin.com/convert-apache-htaccess-to-nginx/

  12. Mowshon | 01.03.2012 в 21:01:05 | #12

    Как менять порт в Apache2

    поправить в /etc/apache2/ports.conf (Listen 8080) и конфигурации VirtualHost (каталог /etc/apache2/sites-enabled) (<VirtualHost *:8080>)

    - 8080 новый порт

  13. Sidenxab | 01.03.2012 в 22:23:00 | #13

    Тоесть ты хочешь мне сказать, что бы я откзвлся вообще от Apache2 и пользовался тока nginx? Меня интересует твое мнение!!!

  14. Аноним | 03.03.2012 в 13:54:48 | #14

    У меня не работает пхп, выдает: The page you are looking for is temporarily unavailable.

    Please try again later.

    С хтмл все ок.

  15. Mowshon | 03.03.2012 в 17:26:19 | #15

    Аноним, данная ошибка возникла из того, что не запущен FastCGI сервер.

    /etc/init.d/php-fastcgi restart
  16. Mowshon | 03.03.2012 в 18:30:10 | #16

    Sidenxab, Зависит для чего вы хотите использовать веб-сервер.

    Если Вам нужен веб-сервер для хранения неких статических файлов(картинки, документы, архивы, статические сайты) тогда Nginx Вам подходит.

    Если у Вас динамический сайт (PHP+MySQL+Ajax...) тогда стоит думать в сторону Apache.

    Есть вариант не отказаться ни от одного, сделать связку между ними "nginx фронтенд к apache". Статические файлы отдает nginx, а динамикой занимается apache

  17. LaeX | 20.04.2012 в 03:13:41 | #17

    Спасибо! Статья очень помогла в настройке сервера. Для новичка самое оно smile

  18. Mowshon | 21.04.2012 в 14:12:11 | #18

    LaeX, Рад помочь. Этот мануал был создан на моих проб и ошибок когда впервые стал устанавливать nginx. Постарался объяснить подробнее те моменты которые были не понятны мне.

  19. Аноним | 20.06.2012 в 00:37:56 | #19

    Спасибо за интересную статью.

    Подобные манипуляции, можно проводить при установленном ISPmanager или могут возникнуть конфликты?

    В частности меня и интересует возможность установки nginx фронтендом к apache на рабочем VPS и для отдельного пользователя.

Оставьте комментарий!

Гость
Комментатор / хотите им стать

Чтобы стать комментатором введите email и пароль. Напишите комментарий. В дальшейшем ваша связка email-пароль, позволит вам комментировать и редактировать свои данные. Не забудьте про активацию (инструкция придет на ящик, указанный при регистрации).

grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question

(обязательно)