Надеюсь что никто не додумается организовать на таком "сервере" хостинг реального проекта :)
1. Установка mySQL.
Установка mySQL под windows тут.2. Установка и настройка NGINX.
Если я правильно понимаю то на официальном сайте nginxa версии под windows нет (по крайней мере на данный момент) Покурив интернет и google можно найти чтото типаnginx-0.6.33-win32-setup.exe
1) Запускаем файлик. Nginx инсталируется в c:/nginx
2) Открываем c:/nginx/config/nginx.conf находим там server { server_name localhost и меняем localhost на www.myweb.com (лицензия web-gooroo идет на какой либо домен - localhost не пройдет)
3) Идем в c:/window/system32/drivers/etc там находим файлик "hosts" и добавляем туда строку :
127.0.0.1 www.myweb.com myweb.com
4) Start -> Programs -> Nginx for windows -> start Nginx (или stop + start)
5) На всякий случай можем закрыть и открыть броузер.
Теперь http://www.myweb.com должно выдать приветственную страницу nginxa
Пока с NGINX-ом все.
3. Установка PHP под NGINX.
1) Как обычно - идем на www.php.net или берем этот файл: php-5.2.6-win32-installer.msi2) Снова жмем Next. Доходим до "Web Server setup", выбираем "Other CGI"
3) Затем мы попадаем в "Choose items to install" тут нам нужно заглянуть в extensions и кликнуть на "mySQL" , "Multi-byte string functions", "Sockets" и поставить "will be installed on local hard drive"
4) В принципе на етом с инсталяцией все.
5) Открываем C:/Program Files/PHP/php.ini и меняем display_errors = Off на display_errors = On
6) А теперь самое волшебное - идем в c:/program files/php и запускаем php-cgi.exe -b 127.0.0.1:521 Теперь PHP висит себе на 521 порту и ждет что ему там NGINX передаст
7) А теперь укур :) - запускаем еще один php-cgi.exe -b 127.0.0.1:522 .
Получается что у нас висит 2 php-cgi на 2 разных портах. Такая странность нужна затем что php-cgi одновременно обрабатывает только 1 запрос. А RPC механизмы web-gooroo в некоторых местах могут открывать сами себя и получается что основной скрипт ждет когда выполнится подзапрос а подзапрос не может выполнится так как php-cgi занят основным запросом. Получаем timeout.
Для этого вешаем 2 php-cgi и второй будет отрабатываться если первый уже занят.
Это мы реализовываем в конфигурации NGINX-а модулем upstream
4. Конфигурация NGINX под PHP и CMS
Конфигурим nginx.conf
worker_processes 1;
events {
worker_connections 64;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
root html;
set $root_for_cgi "c:/nginx/html/";
listen 80;
server_name www.myweb.com;
location / {
if (-f $request_filename/index.php){
rewrite ^(.*)$ $1/index.php last;
}
if (!-f $request_filename){
rewrite ^.*/images/(.*)$ /images/$1 break;
rewrite ^.*/files/(.*)$ /files/$1 break;
rewrite ^.*/tools/(.*)$ /tools/$1 break;
rewrite ^.*/css/(.*)$ /css/$1 break;
rewrite ^(.*)$ index.php last;
}
}
location ~* ^index.php$ {
include fastcgi;
}
location ~* .php$ {
if (!-f $request_filename){
rewrite ^(.*)$ index.php last;
}
include fastcgi;
}
}
upstream backend {
server 127.0.0.1:521;
server 127.0.0.1:522;
}
}
events {
worker_connections 64;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
root html;
set $root_for_cgi "c:/nginx/html/";
listen 80;
server_name www.myweb.com;
location / {
if (-f $request_filename/index.php){
rewrite ^(.*)$ $1/index.php last;
}
if (!-f $request_filename){
rewrite ^.*/images/(.*)$ /images/$1 break;
rewrite ^.*/files/(.*)$ /files/$1 break;
rewrite ^.*/tools/(.*)$ /tools/$1 break;
rewrite ^.*/css/(.*)$ /css/$1 break;
rewrite ^(.*)$ index.php last;
}
}
location ~* ^index.php$ {
include fastcgi;
}
location ~* .php$ {
if (!-f $request_filename){
rewrite ^(.*)$ index.php last;
}
include fastcgi;
}
}
upstream backend {
server 127.0.0.1:521;
server 127.0.0.1:522;
}
}
После чего нужно создать c:/nginx/config/fastcgi
и добавить туда такой вот код
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;
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;
Рестартим NGINX, идем в директорию где лежат файлы сайта (по умолчанию "C:/nginx/html") там удаляем index.html и создаем index.php с содержанием "<?php phpinfo();?>"
Теперь при заходе на http://www.myweb.com должны увидеть таблицу с информацией по PHP
Аналогичтный экран вы должны видеть введя http://www.myweb.com:81/aaa/dfdfdf
5. Установка ionCube.
1) Идем на www.ioncube.com или берем этот файл: ioncube_loaders_win_x86.zip2) Распаковываем и кидаем папку "ioncube" в root директорию сайта (по умолчанию "C:/nginx/html")
3) Идем в C:/Program Files/PHP, берем php.ini и прописываем там путь к
ioncube_loader_win_5.2.dll файлу - zend_extension_ts = "C:/nginx/html/ioncube/ioncube_loader_win_5.2.dll"
5) Для проверки файл "ioncube-encoded-file.php" кладем в root сайта - и открываем www.myweb.com/ioncube-encoded-file.phpДолжно появится "This file has been successfully decoded. ionCube Loaders are correctly installed."
Более подробно об инсталяции ionCube
после всего этого безобразия
Установка CMS системы
Документы раздела