Nginx – Двигатель интернета будущего
23.10.12Большинство начинающих девелоперов в СНГ начинают с платформы Denwer (denwer.ru). Она действительно проста в установке и использовании, состоит из Apache + Php + MySQL, однако достаточно громоздкая (дистрибутив весит 80МБ). Его просто обновлять, но для крупных проектов он не годится, да и разработчики платформы этого не рекомендуют.
Минус первый: работает только Windows (иногда не запускается на новых сборках этой ОС), следовательно, при падении системы (а это очень реально) падает и веб-сервер
Минус второй: так как это система разработки с «расширенными правами», дыр в ней тоже достаточно. Remview и прочие шеллы загрузить хакеру довольно просто, иногда и антивирус не спасает.
Минус третий: Для обновления компонентов – нужно обновлять всю систему, в т.ч. и базы данных MySQL с переливом из старой СУБД в новую.
Минус четвертый: деятельность Денвера ограничивается в памяти виртуальным диском, за исключением дыр в php. То есть разработчик с внешними носителями, нодами и т.д. работать не может, а у продвинутого хакера возможность есть.
С другой стороны плюс Денвера по отношению к другим – много проектов в одном сервере. В обычном Apache придется создавать несколько процессов php.exe и php-cgi.exe.
Ну, хватит опускать Денвер, это средство разработки, почти фреймворк. Возьмемся на проект, который является серверной основой Яндекса и Вконтакте. Это – nginx.
[b]Установка на Windows.[/b]
Идем на nginx.ru и берем последнюю стабильную версию в бинарниках, я использовал 1.2.4.
Распаковываем архив в папку, например D:/nginx
В принципе можно работать, но в нем изначально нет PHP. Это не есть хорошо! Скачиваем бинарники и для PHP с официального сайта, распаковываем на D:/nginx/php
Теперь настроим nginx, через файл D:/nginx/conf/nginx.conf. Ищем секцию server:
server {
listen 8300; # порт который будет слушать nginx, для html надо 80, но я тестировал на 8300.
server_name localhost; # имя сервера, можно использовать другой, однако придется его прописать в hosts.
charset win-1251; # кодировка, кому нужно utf-8, пишите utf-8:)
#access_log logs/host.access.log main; #отключаем логи.
location / { # описываем местоположение в домене, / указывает на корень домена.
index index.php index.htm; # страница по умолчанию, индекс.
autoindex on; # создаем список файлов, если нет индекса в каталоге
}
error_page 404 /404.html; # страничка с позором для клиента и админа:)
error_page 500 502 503 504 /50x.html; # описываем канонической ссылкой нахождение ошибки сервера. В принципе стоит закомментировать, чтобы понять, что творится с сервером
location = /50x.html {
root html;
}
# Можно сформировать проксирование Апачевского сервера. Но нам это не нужно, PHP у нас свой.
# 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:8301
location ~ .php$ { # если забыли, php сервер мы положили в папку с nginx
root html; # квартира где скрипты с деньгами и php лежат. 🙂 Можно использовать адреса вида D:Webserwershomelocalhosttools
fastcgi_pass 127.0.0.1:8301; # порт по которому nginx будет общаться с php
fastcgi_index index.php; # стартовая страница на php.
fastcgi_param SCRIPT_FILENAME html/$fastcgi_script_name; # формируется аналогично руту.
include fastcgi_params;
}
# можно забанить использование htaccess от Apache
# deny access to .htaccess files, if Apache’s document root
# concurs with nginx’s one
#
#location ~ /.ht {
# deny all;
#}
}
Дальше идет аналог Denwer’овского custom host. Грубо говоря – сервер с alias.
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
}
Далее скачиваем hidec.exe и кидаем его в папку с nginx. Создаем ярлык для старта и стопа сервера:
Start.bat:
hidec nginx
hidec phpphp-cgi.exe -b 127.0.0.1:8301 -c D:nginxphp.ini
Stop.bat:
taskkill /f /IM nginx.exe
taskkill /f /IM php-cgi.exe
exit
В Windows, к сожалению, без создания службы mysql обойтись нельзя, поэтому полноценный pendrive сервер из nginx получить не удастся.
Подробно о установке — http://translate.google.ru/translate?sl=en&tl=ru&js=n&prev=_t&hl=ru&ie=UTF-8&layout=2&eotf=1&u=http%3A%2F%2Feksith.wordpress.com%2F2010%2F11%2F07%2Fnginx-php-mysql-windows%2F
[b]Ubuntu[/b]
В плюс ко всему миграция на linux становится еще проще:
Sudo su
Добавляем репозитории:
nano /etc/apt/sources.list
Добавим туда официальное зеркало Nginx:
deb http://nginx.org/packages/ubuntu/ precise nginx
deb-src http://nginx.org/packages/ubuntu/ precise nginx
Качаем и устанавливаем GPG-ключ:
wget http://nginx.org/keys/nginx_signing.key
apt-key add nginx_signing.key
Обновляем список пакетов, ставим nginx и php5:
aptitude update
aptitude install nginx
aptitude install php5-cli php5-common php5-mysql php5-suhosin php5-gd php5-fpm php5-cgi php5-fpm php-pear php5-mcrypt -y
Убиваем уязвимость PHP:
nano /etc/php5/fpm/php.ini
Находим строку:
;cgi.fix_pathinfo = 1
Исправляем на:
cgi.fix_pathinfo = 0
Сохраняем изменения и перезапускаем PHP-FPM и сразу поставим MySQL:
aptitude install mysql-server mysql-client mysql-common
aptitude install memcached php5-memcached
/etc/init.d/php5-fpm restart
Далее можно создать виртуальный хост, через файл /etc/nginx/conf.d/server_name.conf, однако мы пойдем другим путем.
nano /etc/nginx/nginx.conf
Вместо:
include /etc/nginx/conf.d/*.conf;
Вставляем программный, код описанный в разделе с Windows версией (см. выше). Однако помните про права пользователей и группы.
В итоге мы получили сконфигурированный HTTP+PHP кроссплатформенный сервер. Удачного кодинга!
Фанат сайта
Не пропустите интересное!
Підписывайтесь на наши каналы и читайте анонсы хай-тек новостей, тестов и обзоров в удобном формате!

Samsung Galaxy A36 и Galaxy A56 — доступные флагманские технологии



У Samsung Galaxy A36 и Galaxy A56 одинаково хорошие дисплеи, емкие аккумуляторы, есть поддержка обновлений софта в течение 6 лет. Расскажем подробнее чем еще они интересны

Смартфон Infinix Note 50s 5G+ получил ароматизированный корпус смартфон
Компания Infinix анонсировала новую модель — Note 50s 5G+, отличающуюся не только техническими характеристиками, но и довольно необычным дизайнерским решением
Укрпочта обновила приложение. Что нового? приложения события в Украине
Первоочередно «Укрпочта» планировала запуск еще в 2024, однако сроки перенесли. В настоящее время действующее приложение имеет низкие оценки в маркетах из-за ограниченной функциональности