Nginx php настройка windows
http://sysoev.ru/nginx/docs/windows.html писал(а): nginx/Windows работает с Win32 API (не эмуляция Cygwin). В качестве метода обработки соединений используется select, поэтому не стоит ожидать высокой производительности и масштабируемости: пока это бета-версия. На данный момент доступна практически вся функциональность, что и в nginx/Unix, за исключением XSLT-фильтра, фильтра изображений, модуля geoip и встроенного perl’а.
Если несмотря на это Вы решили установить nginx под windows, то рассмотрим порядок установки.
Для сборки я использовал последние на текущий момент времени (2009-12-27) стабильные версии:
— nginx-0.7.64
— php-5.2.12-Win32-VC6-x86
— mysql-5.1.47-win32 ( можно скачать с http://dev.mysql.com/downloads/mysql/ )
Итак порядок установки:
— этап 1. Установка nginx
— этап 2. Установка MySQL
— этап 3. Установка и настройка PHP
— этап 4. Настройка nginx
Все эти этапы рассмотрены ниже.
Ответы на Ваши вопросы по nginx:
Вопрос: Поддерживает ли nginx модуль mod_rewrite?
Ответ: Файлы .htaccess игнорируюся, все их правила в похожем синтаксисе описываются в конфиге, в том числе и перенаправления.
Copyright © 2009 Creaternal (v-tanke.ru).
При копировании информации ссылка на источник и указание copyright обязательны.
Этап 1. Установка nginx
Для установки nginx достаточно распаковать nginx-0.7.64.zip в папку где у нас будет находиться веб-сервер.
В качестве примера взята папка C:\nginx и вся дальнейшая информация написана с учетом этого выбора.
Вы можете использовать C:\nginx, а можете указать и свою папку, тогда все места,
где встречается C:\nginx замените на свой путь.
UPD:
Опытным путем было выяснено, что под Windows Nginx должен быть обязательно установлен на диск C , иначе он не запускается.
Для простоты управления веб-сервером nginx создадим несколько bat файлов:
@ECHO OFF start c:\nginx\nginx.exe ping 127.0.0.1 > NUL echo Starting nginx ping 127.0.0.1 > NUL EXIT
@ECHO OFF start c:\nginx\nginx.exe -s stop EXIT
После этих действий можно запустить nginx и посмотреть как он работает (естественно, что пока мы не подключили php обрабатывать его файлы nginx не сможет)
Итак запускаем start.bat должно будет на некоторое время появиться окно
теперь можно идти в браузер и смотреть, что получилось.
Вводим в адресной строке http://localhost и получаем в ответ
На этом пока остановимся, выключим nginx (запустив stop.bat) и перейдем к следующему шагу
Copyright © 2009 Creaternal (v-tanke.ru).
При копировании информации ссылка на источник и указание copyright обязательны.
Этап 2. Установка MySQL
создадим папку C:\nginx\mysql
выбираем режим «Custom», чтобы иметь возможность указать папки для установки и исключаем из установки документацию («Documentation»)
Затем выбираем пункт «MySQL Server» и нажимаем кнопку «Change. «, и выбираем созданную нами ранее директорию C:\nginx\mysql.
Повторяем выбор директории и для пункта «MySQL Server Datafiles». После этого нажимаем «Next»
далее появляется рекламка, но она нам не интересна, поэтому пролистываем ее нажимая кнопку «Next»
после этого появляется окно с приглашением выполнить настройку MySQL и зарегистрировать его.
Регистрировать не будем, поэтому снимаем эту галочку и жмем кнопку «Finish»
Далее нас просят указать пароль для пользователя root имеющего полные права на доступ и управление MySQL.
Запомните, а лучше даже запишите эти данные (логин — root, пароль — который Вы укажите),
т.к. эти они потребуются нам позже, при установке на веб-сервер какого-либо php-скрипта, работающего с базой данных.
Все готово к применению настроек жмем «Execute»
Если никаких проблем не возникло, должно результат должен быть как на картинке ниже
На этом установка MySQL оканчивается, переходим к следующему этапу
Copyright © 2009 Creaternal (v-tanke.ru).
При копировании информации ссылка на источник и указание copyright обязательны.
Этап 3. Установка и настройка PHP
Распакуем php-5.2.12-Win32-VC6-x86.zip в C:\nginx\php
Скопируем C:\nginx\php\php.ini-recommended в C:\nginx\php\php.ini
Далее переходим к редактированию C:\nginx\php\php.ini
Внимание! По умолчанию вывод ошибок на страницах отключен.
Вывод ошибок, рекомендуется включать только для тестирования и отладки скриптов. Для включения необходимо
заменить
После этого подключаем необходимые расширения, найдя и раскомментировав ( убрав «;» вначале строки ) следующие строки
;extension=php_gd2.dll ;extension=php_mbstring.dll ;extension=php_sockets.dll ;extension=php_mysql.dll ;extension=php_mcrypt.dll ;extension=php_zip.dll
@ECHO OFF start c:\nginx\nginx.exe start c:\nginx\php\php-cgi.exe -b 127.0.0.1:521 -c c:\nginx\php\php.ini ping 127.0.0.1 > NUL echo Starting nginx ping 127.0.0.1 > NUL EXIT
@ECHO OFF taskkill /f /IM nginx.exe taskkill /f /IM php-cgi.exe EXIT
Теперь при запуске start.bat вместе с nginx будет запускаться и php.
Внимание! После запуска start.bat появляется консольное окно php-cgi, которое не надо закрывать
Если открытое окно мешает можно воспользоваться следующим способом:
1. Скачать программу chp.exe http://www.commandline.co.uk/chp/
2. Разместить chp.exe в каталоге с nginx (c:\nginx\chp.exe)
3. Модифицировать start.bat следующим образом:
@ECHO OFF start c:\nginx\nginx.exe chp.exe "c:\nginx\php\php-cgi.exe -b 127.0.0.1:521 -c c:\nginx\php\php.ini" ping 127.0.0.1 > NUL echo Starting nginx ping 127.0.0.1 > NUL EXIT
1. Скачать программу Hidden Start http://www.ntwind.com/software/hstart.html
2. Разместить hstart.exe в каталоге с nginx (c:\nginx\hstart.exe)
3. Модифицировать start.bat следующим образом:
@ECHO OFF start c:\nginx\nginx.exe start c:\nginx\hstart.exe /NOCONSOLE "c:\nginx\php\php-cgi.exe -b 127.0.0.1:521 -c c:\nginx\php\php.ini" ping 127.0.0.1 > NUL echo Starting nginx ping 127.0.0.1 > NUL EXIT
Далее создадим в папке C:\nginx\html (являющеюся на данный момент корневой для веб-сервера) файл test.php следующего содержания
После запускаем наш веб-сервер, через файл start.bat и открываем в браузере адрес http://localhost/test.php
Как вы можете видеть nginx отдал php-файл как обычный текстовый,
потому что мы еще не сказали ему как с ними работать .
Итак на этом этап настройки php можно считать оконченным, остановить веб-сервер, используя файл stop.bat и переходить к настройке nginx
Copyright © 2009 Creaternal (v-tanke.ru).
При копировании информации ссылка на источник и указание copyright обязательны.
Этап 4. Настройка nginx
Так как, скорее всего, наиболее популярным будет вопрос по созданию виртуальных хостов в nginx, сразу рассмотрим как их сделать на примере установки phpMyAdmin на отдельный хост.
Файл с основным конфигом nginx у нас находится в папке C:\nginx\conf и называется nginx.conf.
Создадим папки, которые будут корневыми для наших виртуальных хостов: C:\nginx\html\default и C:\nginx\html\pma
Итак приступим к настройке.
Пропишем в C:\WINDOWS\system32\drivers\etc\hosts имя хоста для доступа к phpMyAdmin
может потребовать перезагрузить браузер или компьютер если изменения в файле hosts не подхватятся сразу
Заменим содержимое C:\nginx\conf\nginx.conf на
worker_processes 1; error_log logs/error.log; pid logs/nginx.pid; events < worker_connections 64; >http < include mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user "$request" $status "$http_referer" "$http_user_agent"'; sendfile on; #tcp_nopush on; client_header_timeout 3m; client_body_timeout 3m; send_timeout 3m; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server < root html/default/; set $root_for_cgi "c:/nginx/html/default/"; listen 80; server_name _; access_log logs/default.access.log main; error_log logs/default.error.log error; location / < index index.php; >location ~* .php$ < include fastcgi; >> server < root html/pma/; set $root_for_cgi "c:/nginx/html/pma/"; listen 80; server_name pma; access_log logs/pma.access.log main; error_log logs/pma.error.log error; location / < index index.php; >location ~* .php$ < include fastcgi; >> upstream backend < server 127.0.0.1:521; >>
fastcgi_connect_timeout 1; fastcgi_next_upstream timeout; fastcgi_param SCRIPT_FILENAME $root_for_cgi$fastcgi_script_name; fastcgi_pass backend; fastcgi_param QUERY_STRING $query_string; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_param REQUEST_URI $request_uri; fastcgi_param DOCUMENT_URI $document_uri; fastcgi_param DOCUMENT_ROOT $document_root; fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param GATEWAY_INTERFACE CGI/1.1; fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; fastcgi_param REMOTE_ADDR $remote_addr; fastcgi_param REMOTE_PORT $remote_port; fastcgi_param SERVER_ADDR $server_addr; fastcgi_param SERVER_PORT $server_port; fastcgi_param SERVER_NAME $server_name;
Для теста перенесем в папку C:\nginx\html\default файл C:\nginx\html\test.php созданным на прошлом этапе.
А в папке C:\nginx\html\pma создадим файл test2.php
Теперь нам остается поставить phpMyAdmin и проверить работоспособность MySQL.
Распаковываем содержимое архива в папку C:\nginx\html\pma
и пробуем обратиться к http://pma. У нас спросят логин и пароль от MySQL
http://php-myadmin.ru/learning/instrument-pma.html писал(а): Увидев на главной странице phpMyAdmin информационное сообщение: «Версия клиентской библиотеки MySQL (5.0.51a) отличается от версии установленного MySQL-сервера (5.1.41). Это может привести к некорректной работе.» — не пугайтесь, на установленной нами пятой ветке MySQL все будет работать как надо.
Теперь у нас есть работающий вер-сервер
Почитать про директивы конфига nginx можно в официальной документации http://sysoev.ru/nginx/docs/
Copyright © 2009 Creaternal (v-tanke.ru).
При копировании информации ссылка на источник и указание copyright обязательны.
1234ru / nginx-php-win.md
Вышеуказанные процедуры позволяют успешно запустить и использовать PHP, однако он будет «голым» — без расширений (в т.ч. таких необходимых, как mysqli , mbstring и др.) и без настроек, т.к. он не прочитает ни одного ini-файла.
PHP может автоматически загрузить файл php.ini из нескольких каталогов. Первое место, где он станет его искать — рядом с php.exe . В пакете есть файл php.ini-development . Нужно создать рядом его копию с именем php.ini , открыть и внести следующие изменения:
- Раскомментировать строку extension_dir = «ext» — в результате PHP станет искать модули расширений в подкаталоге ext рядом с php.exe
(относительный путь интерпретируется именно от exe-, а не от самого ini-файла) Проверяем, подключился ли файл, с помощью команды php —ini . Результат должен быть примерно следующим:
Configuration File (php.ini) Path: C:\Windows Loaded Configuration File: \php.ini Scan for additional .ini files in: (none) Additional .ini files parsed: (none)
- curl
- fileinfo
- gd2
- mbstring
- exif
- mysqli
- soap
Просмотреть список подключенных расширений можно, дав команду php -m . Непустой изначально список после вышеописанной манипуляции пополнится.
PHP загружает расширения при запуске exe-файла интерпретатора. Если нужно подключить новое, следует остановить php-cgi.exe (или php.exe соответственно) и запустить его заново.
Чтобы установить связь между PHP и MySQL, не требуется никаких специальных действий, кроме собственно создания соединения (разумеется, должен быть включен соответствующий модуль, например, mysqli ).
Проверить соединение можно так:
echo "Connecting to MySQL server. "; // $host = 'localhost'; // если соединяемся через named pipe (аналог Unix-сокета), $host pl-s">."; // то в качестве хоста указываем "." $user pl-s">someone"; $password pl-s">a password"; $mysqli = new mysqli($host, $user, $password); if ($mysqli->connect_error) echo $mysqli->connect_error; else echo "Connected successfully!";
Об установке и минимальной настройке MySQL под Windows см. здесь.
Неудобства работы под Windows
- в путях файловой системы используется обратный слэш ( \ ), а не прямой ( / ) — типа D:\sites\mysite\. вместо /sites/mysite/. , что влияет, в частности, на содержимое констант __DIR__ и __FILE__ ;
как следствие, весь код, рассчитанный на разбор пути по слэшу, перестаёт работать - невозможно установить русскую локаль с UTF-8: setlocale(LC_ALL, ‘rus’) всегда приводит к использованию windows-1251, и изменить это никак не получается
PHP-FastCGI on Windows¶
NGINX can interface with PHP on Windows via a FastCGI daemon, which ships with PHP: php-cgi.exe. You need to run php-cgi.exe -b 127.0.0.1: and use fastcgi_pass 127.0.0.1:; in the NGINX configuration file. After being launched, php-cgi.exe will keep listening for connections in a command prompt window. To hide that window, use the tiny utility RunHiddenConsole
Steps¶
- Install NGINX for Win32.
- Install the Windows binaries of PHP, making sure that php-cgi.exe is installed in the same directory as php.exe .
- Create somewhere (e.g. in c:\nginx\ ) a batch file start-php-fcgi.bat similar to this one:
@ECHO OFF ECHO Starting PHP FastCGI. set PATH=C:\PHP;%PATH% c:\bin\RunHiddenConsole.exe C:\PHP\php-cgi.exe -b 127.0.0.1:9123
root c:/www; location ~ \.php$ fastcgi_pass 127.0.0.1:9123; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; >
Autostarting PHP and NGINX¶
- Schedule a basic (on Windows Vista) task to run the batch file above at system start up under the SYSTEM account.
- If using Windows NGINX from https://kevinworthington.com/nginx-for-windows/, schedule a basic (on Windows Vista) task to run C:\nginx\conf\start-nginx.bat file at system start up under the SYSTEM account in starting directory C:\nginx .
- A home made Cygwin build of NGINX can be scheduled using a batch file similar to this:
cd /d C:\cygwin\bin && bash -c /usr/local/nginx/sbin/nginx