(Полное руководство) Установка Nginx 1.1.4 + PHP-fastcgi + MySQL + memcache на Debian (FastVPS)
Просмотров: 13336.
Подписаться на комментарии по RSS.
Решил написать данную статью после того, как сам столкнулся с установкой нового 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
Еще записи по теме
- Критерии выбора языка программирования
- PHP: Как уменьшить количество HTTP запросов с помощью схемы data: URI
- Отправка письма из PHP используя SMTP (c вложением)
- Подробная информация о IP-адресе пользователя на PHP
- PHP функции для работы с массивами
- Аутентификация и авторизация пользователя - делаем с нуля (Часть 1)
- Установка PHP с помощью Microsoft Web Platform Installer
Комментариев: 19
Пробовал разные манулы для установки nginx, всегда что-то мешало...
Прочитал Вашу статью, попробовал и удивился... без ошибок без ничего сразу установил. Я новичок в этом и данная пошаговая статья очень выручила.
Добрый день.
Хорошая статья, вот только отсутствуют файлы:
http://live-code.ru/uploads/script/php-fastcgi
http://live-code.ru/uploads/script/nginx
было бы здорово, если бы они присутствовали.
С уважением, Гость
guest, извиняюсь за отсутствия скриптов.
Обновил их, ссылки рабочие.
Опечатка в пути
За статью огромное спасибо!
Oleg, спасибо за внимательность, исправил.
Ошибочка:
Надо:
Аноним, Спасибо за содействие в создании качественного мануала. Исправил
Выдает вот такую ошибку, в чем может быть проблема?
Sidenxab, скорее всего проблема в Apache, он у Вас работает и занимает тот же порт, что и nginx.
отключите apache
потом уже запустите nginx
Ну это все понятно, а вот у меня работает .htaccess, без apache2 уже не будет рабоать? И еще, как порт поменять на apache2, и в каких именно файлов, не подскажешь?!
Sidenxab, htaccess является файл с вспомогательными конфигурациями для сервера apache, если перейти на nginx, то конфигурации которые были указаны в htaccess не будут актуальны в nginx.
Можно переписать htaccess под конфиг nginx, используя данный ресурс:
http://www.anilcetin.com/convert-apache-htaccess-to-nginx/
Как менять порт в Apache2
- 8080 новый порт
Тоесть ты хочешь мне сказать, что бы я откзвлся вообще от Apache2 и пользовался тока nginx? Меня интересует твое мнение!!!
У меня не работает пхп, выдает: The page you are looking for is temporarily unavailable.
Please try again later.
С хтмл все ок.
Аноним, данная ошибка возникла из того, что не запущен FastCGI сервер.
Sidenxab, Зависит для чего вы хотите использовать веб-сервер.
Если Вам нужен веб-сервер для хранения неких статических файлов(картинки, документы, архивы, статические сайты) тогда Nginx Вам подходит.
Если у Вас динамический сайт (PHP+MySQL+Ajax...) тогда стоит думать в сторону Apache.
Есть вариант не отказаться ни от одного, сделать связку между ними "nginx фронтенд к apache". Статические файлы отдает nginx, а динамикой занимается apache
Спасибо! Статья очень помогла в настройке сервера. Для новичка самое оно
LaeX, Рад помочь. Этот мануал был создан на моих проб и ошибок когда впервые стал устанавливать nginx. Постарался объяснить подробнее те моменты которые были не понятны мне.
Спасибо за интересную статью.
Подобные манипуляции, можно проводить при установленном ISPmanager или могут возникнуть конфликты?
В частности меня и интересует возможность установки nginx фронтендом к apache на рабочем VPS и для отдельного пользователя.