В интернете много статей, где для установки Nginx приходится собирать не только сам веб-сервер, приходится собирать практически всё. В данной статье я опишу установку используя репозитории. Для статьи поставил специально виртуальную машину и на неё произвел установку и настройку Nginx в связке с php-fpm. Если соблюдать четко все пункты, думаю у новичков вопросов не возникнет. Удачи.
Установка Nginx:
Имеем установленную систему CentOS-6.2-i386-minimal, установленные пакеты
yum install openssh-server wget
и обновлённую систему:
yum -y update
В системе перед установкой подключенны следующие репозитарии
yum repolist
Добавляем репозитории :
EPEL
rpm -ihv http://mirror.yandex.ru/epel/6/i386/epel-release-6-6.noarch.rpm
Nginx
rpm -ihv http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
Remi
rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
Устанавливаем пакет приоритета оригинальных пакетов RHEL перед пакетами из дополнительных репозиториев:
yum install yum-priorities
Устанавливаем приоритет для репозитория EPEL:
vi /etc/yum.repos.d/epel.repo
Тоже самое для репозиториев Nginx и Remi:
vi /etc/yum.repos.d/nginx.repo vi /etc/yum.repos.d/remi.repo
Устанавливаем MySQL:
yum install mysql mysql-server
Добавляем MySQL в автозагрузку и запускаем:
chkconfig --levels 235 mysqld on service mysqld start
Настроим MySQL:
/usr/bin/mysql_secure_installation
Система просит нас ввести текущий пароль пользователя root. Нажимаем «Enter», пароля пока как бы нет )))
Вводим новый пароль и отключаем анонимного пользователя (нажимаем «Y» и «Enter»)
Отключаем удаленное подключение для пользователя root (нажимаем «Y» и «Enter»)
Удаляем тестовую базу данных (нажимаем «Y» и «Enter»)
Remove test database and access to it? [Y/n]
Сбрасываем все привилегии для баз (нажимаем «Y» и «Enter»)
Reload privilege tables now? [Y/n]
Устанавливаем Nginx:
yum install nginx
Добавляем в автозагрузку и запускаем:
chkconfig --levels 235 nginx on service nginx start
Для проверки веб-сервера и дальнейшей настройки временно отключим фаервол, настроим его в самом конце статьи
Вводим адрес (http://192.168.17.241) в web-браузер (У вас скорее всего будет свой )
Устанавливаем PHP и PHP-FPM:
PHP5 c Nginx будут работать через PHP-FPM (PHP — FastCGI Process Manager):
yum --enablerepo=remi install php-fpm php-cli php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-eaccelerator php-magickwand php-magpierss php-mbstring php-mcrypt php-mssql php-shout php-snmp php-soap php-tidy
переходим в конфигурационный файл PHP:
vi /etc/php.ini
находим строку «cgi.fix_pathinfo = 1», снимаем с нее комментарий и меняем на «cgi.fix_pathinfo = 0»
было:
;cgi.fix_pathinfo = 1
стало:
cgi.fix_pathinfo = 0
Подробнее о cgi.fix_pathinfo можно почитать тут: http://www.php.net/manual/ru/ini.core.php#ini.cgi.fix-pathinfo
Добавляем в автозагрузку и запускаем:
chkconfig --levels 235 php-fpm on /etc/init.d/php-fpm start
Настраиваем Nginx:
Делаем резервную копию конфига
cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.default
Редактируем конфиг Nginx:
vi /etc/nginx/nginx.conf
Ищем в нём строку
include /etc/nginx/conf.d/*.conf;
и меняем на
server { listen 80; server_name _; location / { root /usr/share/nginx/html; index index.php index.html index.htm; } error_page 404 /404.html; location = /404.html { root /usr/share/nginx/html; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } location ~ \.php$ { root /usr/share/nginx/html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
Должно получится:
user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; 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 /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; server { listen 80; server_name _; location / { root /usr/share/nginx/html; index index.php index.html index.htm; } error_page 404 /404.html; location = /404.html { root /usr/share/nginx/html; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } location ~ \.php$ { root /usr/share/nginx/html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } }
проверяем работу php
echo '<?php echo phpinfo(); ?>' > /usr/share/nginx/html/phpinfo.php
Вводим адрес (http://192.168.17.241/phpinfo.php) в web-браузер (У вас скорее всего будет свой ). Если увидете такое окно то все ок, вы правильно настроили.
Настраиваем PHP-FPM:
До этого момента в настройках сервера мы использовали соединение TCP для нашего PHP-FPM пула (127.0.0.1:9000, 127.0.0.1:9001 и так далее). Теперь попробуем избежать расходы на TCP соединение и настроим на использование сокета Unix.
Делаем резервную копию конфига
cp /etc/php-fpm.d/www.conf /etc/php-fpm.d/www.conf.default
Редактируем
vi /etc/php-fpm.d/www.conf
В самом начале ищем
listen = 127.0.0.1:9000
и меняем на
listen = /tmp/php-fpm.sock
Перезагружаем php-fpm
/etc/init.d/php-fpm restart
Теперь настраиваем Nginx
vi /etc/nginx/nginx.conf
В секции
location ~ \.php$ {
root /usr/share/nginx/html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
меняем
fastcgi_pass 127.0.0.1:9000;
на
fastcgi_pass unix:/tmp/php-fpm.sock;
Проверяем как ранее. Вводим адрес (http://192.168.17.241/phpinfo.php) в web-браузер.
всё
Настраиваем Iptables для Nginx:
iptables -I INPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT iptables-save > /etc/sysconfig/iptables
Возможные ошибки
No input file specified.
Исправляется или правами на папку веб-сервера или правильной настройкой конфига.
последнее время все пытаются заюзать нжникс, не важно нужен он или нет.
не разу ещё не сталкнулся с тем что бы апач не справился с МОИМИ задачами
ЗЫ надо юзать то, что больше подходит — а не то что модно!!!
Ну тут я думаю дело даже не в моде. Просто для сайтов с высокой нагрузкой он лучше.
Хотя опять же….всё зависит от куда растут руки 😉
ёклмн
создатель нжникса говорит, что для отдачи статики нжникс так же хорош как lighttp
для СТАТИКИ а вообще можно лыбой сервер похерить при кривизне соответствующей
это как MySQL PostgreSQL и Oracle
при правильной настройке постгрес с ораклом отлично работают
а при неправельной 😀
один товарищ говорил, что хотели уже было NoSLQ заюзать но потом правильно посгрес настроили и было им счастье 😉
Доброе утро!
Я сейчас играюсь с тестовым периодном VPS (голый CentrOS 6.3 86-64бит) — хочется быть готовым к смене сервера)
Ваша инструкция единственная, выполняя которую хоть что-то получается =)
В процессе предварительной настройки не смог установить приоритет репозитория EPEL, Nginx и Remi; продолжил дальше установку.
Успешно запустил и настроил MySQL, установился nginx, но при запуске выдал ошибку такого вида:
[root@vps96016 ~]# service nginx start
Starting 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()
[FAILED]
Подскажите что можно сделать
Чтобы установить пакет из нужного репозитория, без учета приоритета
yum —enablerepo=remi install php-fpm
по этому
Starting nginx: nginx: [emerg] bind () to 0.0.0.0:80 failed (98: Address already in use)
смотрите чем занять 80 порт
узнать можно так
[root@home ~]# lsof -i -P | grep *:80
httpd 1705 root 4u IPv6 10599 0t0 TCP *:80 (LISTEN)
или ещё както
на запрос # lsof -i -P | grep *:80
выдаёт такой ответ
httpd 15760 root 3u IPv4 33673196 TCP *:80 (LISTEN)
httpd 15771 webmaster 3u IPv4 33673196 TCP *:80 (LISTEN)
httpd 15987 webmaster 3u IPv4 33673196 TCP *:80 (LISTEN)
а на # netstat -nlp | grep :80
получается такой :
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 15760/httpd
Чем мне это может помочь?
Извините, если донимаю, просто я в этом деле даже не новичок 😀
Всё правильно, у вас апатч занял 80 порт
выключаем апатн
service httpd stop
включаем nginx
service nginx start
Спасибо, помогли *THUMBS UP* правда пришлось поставить MC коммандер для облегчения навигации и редактирования файлов, а то с vi я так и не разобрался…
А в какую папку закидывать файлы движка CMS
если по статье, то
root /usr/share/nginx/html
😉
ну а если возникают вопросы, то есть
http://ask.xaxatyxa.ru/
При вводе команды:
> yum —enablerepo=remi install php-fpm php-cli php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-eaccelerator php-magickwand php-magpierss php-mbstring php-mcrypt php-mssql php-shout php-snmp php-soap php-tidy
столкнулся с проблемой инсталляции пакета php-eaccelerator. Поэтому из вышестоящей строки его убрал, но позже дополнительно поставил из исходников согласно этих статей:
http://dedicatesupport.com/archives/45
http://www.openlogic.com/wazi/bid/221168/Improve-PHP-performance-with-PHP-eAccelerator
аналогичная проблема и к тому же 2я ссылка не работает, а по первой не получается(скорее всего кривые руки и отсутствие навыков работы с с любыми unix системами)
пара вопросов:
1) без php-eaccelerator должна ли открыватся страница phpinfo.php ? Ибо у меня браузер просто скачивает файл. Как я понимаю или php полность не работает или это из за php-eaccelerator
2) если не удалось установить из репозиториев, есть ли более легкий способ установки php-eaccelerator или возможно аналога, без серьезных изменений в общем мануале, т.к. к моему стыду сложности я не потяну пока
P.S. приму любые советы и помощь
там проблемма в зависимостях, требуется одна версия пакета , а в репозитории другая
как советовали до этого лучше собрать его руками
я даже гдето уже на процентов 70 написал пост по ентой проблеме и все руки не доходят выложить
пиши в личку постараюсь помочь
root[гав-гав]xaxatyxa.ru
Можно ли подробнее о решении проблемы? Картина такая же как у Lioplay
https://xaxatyxa.ru/_centos/oshibka-obnovlenii-php-common-php-eaccelerator.html
Странно. Файлы php не открываются, а скачиваются… Делал все по инструкции, разве что не смог поставить eaccelerator 🙁
Отбой. Поправил httpd.conf вроде запустилось…
и разделял конфиги по сайтам и делал всё в одном
каждый делает как удобнее, принципиальной разницы не вижу
=)
Да вроде как всё работает
локальная проблемкас 😉
http://mirror.yandex.ru/epel/6/i386/epel-release-6-8.noarch.rpm
Спасибо!
Обновленный EPEL репозиторий:
rpm -ihv http:
//mirror.yandex.ru/epel/6/i386/epel-release-6-6.noarch.rpm 8)
А также я бы не рекомендовал устанавливать пакет php-eaccelerator:
yum —enablerepo=remi install php-fpm php-cli php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-magickwand php-magpierss php-mbstring php-mcrypt php-mssql php-shout php-snmp php-soap php-tidy
..дабы избежать глюков в дальнейшем 8)
Открываю
/etc/php.ini а там пусто, так должно быть или как?
rpm -ihv http:
//mirror.yandex.ru/epel/6/i386/epel-release-6-8.noarch.rpm