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 кроссплатформенный сервер. Удачного кодинга!


Обзор веб-камеры ASUS Webcam C3: основной состав



Трудно переоценить важность общения в условиях карантина и помощь цифровых технологий в нём. Расскажем о возможностях веб-камеры ASUS Webcam C3, обеспечивающей аудио-визуальный контакт с собеседником

Kindle теперь смогут выводить обложку читаемой книги на экран блокировки, но не все
Kindle обновление электронная книгаAmazon выпустила обновление для своих Kindle, добавив давно возможность выводить на экран блокировки обложку читаемой книги
Xiaomi выпустила умный унитаз с ЖК-дисплеем и улучшенной системой смыва под давлением
Xiaomi бытовая техника умные вещиУмный унитаз Xiaomi оснащён ЖК-дисплеем отображающий температуру воды и оснащён встроенной двухдвигательной системой смыва
