Apache nginx php mysql windows

Ранее рассматривался вариант установки чистой связки nginx+PHP+MySQL. На этот раз мы рассмотрим установку nginx как front-end к Apache. Т.е. все запросы изначально будут обрабатываться nginx — статические файлы будут отдаваться сразу, а обработка остальных файлов будет передаваться Apache.

Картинка из статьи http://adw0rd.ru/2009/nginx-and-apache-install/

Для установки понадобится:

  • — установленный AppServ
    — актуальная версия nginx

Вместо AppServ можно применять любую сборку веб-сервера основанную на Apache: например Denwer (Денвер), TopServer, XAMPP и т.д., либо собрать связку Apache+PHP+MySQL самому вручную.

Итак порядок установки:

  • Этап 1. Перенос Apache на порт отличный от 80го
    Этап 2. Установка nginx
    Этап 3. Настройка nginx
    Этап 4. Установка и настройка RPAF в Apache

Этап 1. Перенос Apache на порт отличный от 80го

  • AppServ по умолчанию настраивает Apache на прослушивание 80го порта, что вполне логично и правильно, но в нашем случае 80й порт будет прослушиваться nginx’ом, поэтому и требуется перенести Apache на другой порт.

    Открываем C:\AppServ\Apache2.2\conf\httpd.conf и ищем в нем строчку Listen 80 (либо свой номер порта, если у Вас веб-сервер был установлен на другом порту) и заменяем ее на Listen 127.0.0.1:81
    Также просматриваем строчки задания виртуальных хостов (если они есть) и меняем их тоже
    находим NameVirtualHost *:80 и меняем на NameVirtualHost *:81
    находим все <VirtualHost *:80> и меняем на <VirtualHost *:81>

    После этого сохраняем изменения и перезапускаем Apache. Теперь можно проверить, что веб-сервер отвечает на порту 81 (Для проверки был создан файл test.php содержащий <?php phpinfo(1); ?>).

Этап 2. Установка nginx

  • Для установки nginx достаточно распаковать nginx-0.7.65.zip в папку где у нас будет находиться веб-сервер,
    например в C:\AppServ\nginx.
    Опытным путем было выяснено, что под Windows Nginx должен быть обязательно установлен на диск C, иначе он не запускается.

    Для простоты управления веб-сервером nginx создадим несколько bat файлов:

    @ECHO OFF
    start c:\nginx\nginx.exe

    @ECHO OFF
    start c:\nginx\nginx.exe -s stop

    @ECHO OFF
    start c:\nginx\nginx.exe -s reload

    После этих действий можно запустить nginx и посмотреть как он работает (естественно, что пока мы не подключили php обрабатывать его файлы nginx не сможет)
    Итак запускаем start.bat и идем в браузер смотреть, что получилось. Вводим в адресной строке http://localhost и получаем в ответ

    На этом пока остановимся, выключим nginx (запустив stop.bat) и перейдем к следующему шагу

Этап 3. Настройка nginx

  • Открываем файл конфига C:\nginx\conf\nginx.conf и заменяем его на

    Код: Выделить всё

    #2 рабочих процесса
    worker_processes  2;
    
    # лог для ошибок
    error_log  C:/nginx/logs/error.log;
    #error_log  logs/error.log  notice;
    #error_log  logs/error.log  info;
    
    events {
        # максимум рабочих соединений
        worker_connections   2000;
    }
    
    http {
        include       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  logs/access.log  main;
    
        # Таймаут при чтении заголовка запроса клиента
        client_header_timeout  3m;
        # Таймаут при чтении тела запроса клиента
        client_body_timeout    3m;
        # Таймаут при передаче ответа клиенту
        send_timeout           3m;
        # Таймаут keep-alive соединения 
        keepalive_timeout      2m;
        
        #gzip  on;
        
        server {
            # Слушать 80 порт
            listen       80;
            # Использовать следующие хосты.
            server_name  _; 
    
            # Лог доступа для конкретного виртуального хоста
            #access_log  logs/host.access.log  main;
    
            # Отдаем статику напрямую
            location ~* \.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|pdf|txt|tar|js)$ {
                root         C:/AppServ/www;
                access_log   off;
                expires      30d;
            }
            # Запрещаем обращение к файлам .htaccess и .htpasswd
            location ~ /\.ht {
                    deny  all;
            }
            # Передаем запрос Apache
            location / {
                    # Адресс и порт Apache
                    proxy_pass http://127.0.0.1:81/;
                    proxy_redirect     off;
    
                    proxy_set_header   Host             $host;
                    proxy_set_header   X-Real-IP        $remote_addr;
                    proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    
                    # Максимальный размер тела запроса клиента
                    client_max_body_size       10m;
                    client_body_buffer_size    128k;
                    #client_body_temp_path      tmp/client_body_temp;
    
                    proxy_connect_timeout      90;
                    proxy_send_timeout         90;
                    proxy_read_timeout         90;
    
                    proxy_buffer_size          4k;
                    proxy_buffers              4 32k;
                    proxy_busy_buffers_size    64k;
                    proxy_temp_file_write_size 64k;
                    #proxy_temp_path            tmp/proxy_temp;
    
                    charset  koi8-r;
            }
    
            #error_page  404              /404.html;
    
            # При перечисленных ошибках показывать статическую страницу /50x.html
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
        }
    }
     

    Комментарии по тексту есть, но все же поясню пару мест.

    Если на сервере будет находиться не один сайт как в конфиге выше, а несколько, то для каждого должен быть указан свой блок server. Причем первый блок server считается сервером по умолчанию и он будет вызываться при обращении по IP или хосту не описанному ни в одном server_name.
    В server_name может быть указано: «_» — аналог default в Apache; один или несколько хостов через пробел; хост начинающийся с точки — описывает все его поддомены
    Приведу пример каркаса структуры для пояснения

    Код: Выделить всё

    ...
    http {
        ...
        server {
            # хост по умолчанию
            server_name  _; 
            ...
        }
    
        server {
            # несколько перечисленных хостов
            server_name  pupkin.ru www.pupkin.ru; 
            ...
        }
    
        server {
            # все поддомены vasia.ru
            server_name  .vasia.ru; 
            ...
        }
    
    } 

    Отдельного внимания заслуживают секции location, позволяющие разруливать запросы, но их рассмотрение лучше вынести в отдельную статью

Этап 4. Установка и настройка RPAF в Apache

  • Так как у нас обращение к Apache идет не напрямую, а через Nginx, то теперь в REMOTE_ADDR у нас не пользовательский IP, а IP-адрес сервера, на котором расположен Nginx. Поэтому на помощь приходит RPAF, он берет тело заголовка X-Forwarded-For, присланного от фронтенда и формирует в Apache из него REMOTE_ADDR.
    Таким образом заголовок REMOTE_ADDR снова имеет пользовательский IP.

    Скачиваем mod_rpaf

    и распаковываем в папку модулей Apache (C:\AppServ\Apache2.2\modules). После этого открываем C:\AppServ\Apache2.2\conf\httpd.conf и добавляем в конец файла

    Код: Выделить всё

    LoadModule rpaf_module modules/mod_rpaf.so
    
    RPAFenable On
    RPAFsethostname On
    RPAFheader X-Forwarded-For
    RPAFproxy_ips 192.168.1.26 127.0.0.1

    вместо 192.168.1.26 укажите IP адрес сервера, на котором расположен Nginx.
    Теперь сохраняем изменения и перезапускаем Apache.

    Так же желательно перенести папку C:\AppServ\Apache2.2\icons в папку C:\AppServ\www. Без этого при просмотре содержимого каталогов (опция Indexes в Apache) nginx будет пытаться загрузить несуществующие иконки для файлов.

    Теперь можно запустить nginx (start.bat) и проверять работу веб-сервера в браузере.
    Введем в адресной строке http://localhost/test.php (файл test.php мы создали на первом шаге) и увидим

На этом можно и остановиться.
Более подробно про директивы используемые в конфигурационном файле nginx можно почитать на сайте разработчика
http://sysoev.ru/nginx/docs/

Вопросы и уточнения и пожелания пишите в разделе Вопросы по веб-серверам

Copyright © 2010 Creaternal (v-tanke.ru).
При копировании информации ссылка на источник и указание copyright обязательны.

SurfStack WAMP

Welcome! You’ve stumbled upon one of the quickest ways to get a full HTML and
PHP web development environment up and running in seconds on a Windows machine.

No installation required. Just download, extract, and run SSWamp.exe to gain
access to the most widely used applications on the web.

You deserve a suite of tools that works as efficiently as you do so we’ve
designed a rock solid environment for use on your next endeavour.

Screenshots are available in the Wiki.

SurfStack WAMP allows HTML websites and PHP applications to run on a Windows
computer. SurfStack WAMP is a package of open source software that includes:

  • Apache v2.4.10 (Web Server) (10-20-2014 32-bit VC11)
  • Nginx v1.7.7 (Web Server) (10-28-2014)
  • MySQL v5.6.21 (Relational Database) (09-23-2014 32-bit)
  • MongoDB v2.6.5 (Document Database) (10-08-2014 64-bit)
  • PHP TS and NTS v5.6.0 (Web Language) (08-28-2014)
  • Memcached v1.4.4 (Object Caching System) (12-09-2009)
  • Adminer v4.1.0 (MySQL Database Manager) (04-18-2014)
  • Genghis v2.3.11 (MongoDB Database Manager) (03-20-2014)
  • Subversion v1.8.10 (Version Control System) (08-11-2014)
  • msysGit Net Install v1.9.4 (Version Control System) (09-29-2014 Preview)

One-click setup and usage of popular PHP tools:

  • Composer (PHP Dependency Manager) (Downloads and installs the latest version)
  • PHPUnit (PHP Test Framework) (Downloads and installs the latest version)
  • PEAR (PHP Extension and Application Repository) (Downloads and installs the latest version)
  • phpDocumentor (PHP Documentation Generator) (Downloads and installs the latest version)
  • phpdbg (PHP Debugger) (Command prompt)
  • Phalcon Tools (Command Line Utility) (Command prompt)

PHP extensions preloaded:

  • Phalcon v1.3.4 (High Performance PHP Framework) (10-29-2014 32-bit)
  • Xdebug v2.2.6 (Debugger and Profiler) (11-15-2014 32-bit)
  • Mongo v1.5.6 (MongoDB Driver) (11-11-2014 32-bit)
  • OAuth v1.2.3 (Authorization Bindings) (04-10-2014 32-bit)

Download

The latest release is v2.1.0 (11-27-2014).

The repository does not contain any binaries. Be sure to download the latest
release which includes the binaries for Apache, PHP, etc.

Instructions

  1. Extract the contents to any folder
  2. Run SSWamp.exe
  3. Place a check next to each server you want to start
  4. Click Turn On
  5. Test the configuration by clicking Browse HTTP

Popular Application Testing (Drupal, WordPress, SQL Buddy, phpMyAdmin, etc.)

  1. Download the files from Drupal or WordPress
  2. Delete the file: \webroot\localhost\public\index.php
  3. Extract the Drupal or WordPress files to the \webroot\localhost\public directory
  4. Run SSWamp.exe
  5. Place a check next to the Apache and MySQL options
  6. Click Turn On
  7. Test the configuration by clicking Browse HTTP

Default MySQL Database Settings

  • Database Name: test
  • Username: root
  • Password: (blank)

Folders

  • \amp\app: contains binaries for applications
  • \amp\config: contains custom configurations for the applications
  • \amp\doc: contains CHANGELOG, LICENSE, README
  • \amp\src: contains C# source code for SSWamp.exe
  • \webroot\localhost\public: default location for all web files

Notes

  • MySQL binaries are unmodified, but exclude files to make the distribution smaller
  • Nginx binaries are unmodified
  • PHP binaries are unmodified, but exclude files to make the distribution smaller
  • Apache binaries are unmodified, but exclude files to make the distribution smaller

Compatibility

  • The \amp\app folder holds official binaries so the contents of each folder
    can be replaced with binaries downloaded from original vendor (PHP extensions
    must be updated as well to match the config)
  • The \amp\config folder holds custom configurations for the applications
  • Each configuration has variables which are replaced by values provided by
    SSWamp.exe
  • Any changes made to the configurations will apply the next time MySQL, Nginx,
    PHP, Apache are started

Technical Notes

  • Nginx uses a highly dynamic configuration which supports multiple websites

Website Simulation

To resolve any domain like www.example.com on your local system, add the domain
name to your system hosts file:

  1. Copy C:\windows\system32\drivers\etc\hosts to your desktop
  2. Open the hosts file in Notepad
  3. Add the following lines to the bottom of the hosts file:
  4. 127.0.0.1 example.com
  5. 127.0.0.1 www.example.com
  6. Save the modified hosts file
  7. Copy the modified hosts file back to: C:\windows\system32\drivers\etc\hosts
  8. Close your web browser if open
  9. Run SSWamp.exe
  10. Place a check next to the Apache option
  11. Click Turn On
  12. Test the configuration by opening your web browser to: http://example.com

Quick Solutions

  • Unblock all files on Windows Vista or Windows 7 if prompted
  • Allow Apache, Nginx, MySQL, MongoDB, Memcached, and SSWamp.exe through the
    firewall if prompted

Время на прочтение8 мин

Количество просмотров370K

Несколько дней назад меня очередной раз посетила Мысль. Мысль была не нова и довольна навязчива: «давай перейдем на Windows8. Ну пожааалуйста». И так как отогнать её никак не получалось, я запаслась чаем и печеньками и приступила.

На установку системы и всех необходимых программ ушло не более двух часов, но затем наступил самый интересный момент: мне нужно было развернуть рабочее окружение, а именно — GIT + локальный сервер (Apache, MySQL, PHP, nginx, memcached, mongodb). Помятуя об опыте предыдущих установок, на этот раз я решила весь процесс задокументировать и сохранить для потомков.

Дисклаймер номер раз: «я не программист» (с), а дизайнер интерфейсов и фронтенд-технолог (но в некоторых случаях могу помочь коллегам и накодить что-нибудь этакое, и меня даже потом за это не побьют)

Дисклаймер номер два: да, я прекрасно представляю, что в Ubuntu всё это делается в разы быстрее. Но я работаю на Windows, так исторически сложилось.

Итак, приступим.

Наш план работ включает установку следующих продуктов:

  1. PuTTY
  2. GIT
  3. Denwer (Apache, MySQL, PHP)
  4. Nginx
  5. Memcached
  6. MongoDB

1. PuTTY

PuTTY — свободно распространяемый клиент для различных протоколов удалённого доступа, включая SSH, Telnet, rlogin.

В состав PuTTY входит несколько утилит, но мне в работе нужны только он сам и Pegeant (агент SSH-аутентификации, в котором хранятся ключи от git-репозиториев).
Офсайт: перейти
Если вам не нужны никакие SSH-и, забудьте об этом пункте и идём дальше.

2. GIT

Для работы с git я уже не первый год использую TortoiseGit, который стабилен, гуёв и на 146% закрывает все мои потребности. Вобщем, рекомендую.

Офсайт: перейти

2.1 Для работы TortoiseGit требуется git для Windows, который можно забрать на гуглекоде;
2.2 сам TortoiseGit устанавливаем отсюда

3. Denwer

Денвер — Джентльменский набор Web-разработчика («Д.н.w.р», читается «Денвер») — проект Дмитрия Котерова, набор дистрибутивов (Apache, PHP, MySQL, Perl и т.д.) и программная оболочка, используемые Web-разработчиками для разработки сайтов на «домашней» (локальной) Windows-машине.
Офсайт: перейти

3.1 Установка

Нам потребуется скачать базовый комплект и дополнительные модули PHP5.

Лирическое отступление:

нет, не просто скачать, а получить ссылки на скачивание по email! То есть вам придется вбивать свою почту, а также имя и фамилию два раза в форме под большим заголовком «Регистрация». «Регистрация требуется в связи с будущим выходом Денвера-4.» уже который год как бы извиняется форма, но я ей больше не верю(.

Обычно установка денвера проходит быстро и безболезненно, но на Windows8 на меня напала ошибка, которая ругалась на отсутствующую библиотеку msvcr71.dll. Библиотеку можно забрать здесь и положить в папку «\Windows\System32\» (x32) или «\Windows\SysWOW64\» (x64). После того, как файл улегся в папку, откройте его свойства и нажмите кнопку «Разблокировать».

3.2 Проверка работоспособности

После установки Денвера, создадим тестовый скрипт, на котором будем проверять работоспособность всего того, что мы установим впоследствии.
Идем в Z:\home и добавляем новый сайт: создаем папку test.local, в ней папку «www», в которую добавляем файл index.php с невероятно креативным текстом:

<?php 
echo 'Test me <br>';

Перезапускаем Денвер, открываем в браузере www.test.local, впечатляемся и идём дальше

4. Memcached

Memcached — связующее программное обеспечение, реализующее сервис кэширования данных в оперативной памяти на основе парадигмы хеш-таблицы.

Офсайт: перейти

Memcache — расширение для php, предоставляет удобный процедурный и объектно-ориентированный интерфейс к memcached, высокоэффективному кеширующему демону, который был специально разработан для снижения нагрузки на базу данных в динамических веб приложениях.

4.1 Установка memcached

А. скачиваем архив с бинарником: Memcached 1.4.5 for Windows отсюда
В. распаковываем содержимое архива в \usr\local\memcached

4.2 Установка memcache

А. скачиваем архив с библиотекой отсюда
В. распаковываем содержимое архива в \usr\local\php5\ext\
С. открываем файл php.ini (\usr\local\php5\php.ini) и подключаем расширение:
extension=php_memcache.dll

4.3 Настраиваем запуск Memcached вместе с запуском Denwer

Чтобы запустить скрипт вместе с Денвером нам нужно:

  1. написать скрипт, содержащий команды запуска и останова приложения/ сервиса и положить его в папку \denwer\scripts\init.d
  2. создать ссылку на этот скрипт в папке конфигурации запуски/останова \denwer\scripts\main\

А. создаём файл с именем «memcached.pl» в директории \denwer\scripts\init.d\

#!perl -w
package Starters::Memcached;
BEGIN { unshift @INC, "../lib"; }

use StartManager;

my $basedir = '/usr/local/memcached/';
chdir($basedir);

StartManager::action 
  $ARGV[0],
  start => sub {
    ###
    ### START.
    ###
        print "Starting memcached\n";
        system("memcached.exe -d");
        print "  Started!\n";
  },
  stop => sub {
    ###
    ### STOP.
    ###
        print "Stopping memcached\n";
        system("TASKKILL /F /IM memcached.exe");
        print "  Stopped!\n";
  };

return 1 if caller;

B. теперь создадим ссылку на скрипт – обычный текстовый файл, содержащий указание, что при старте, рестарте и остановке Денвера, необходимо выполнить init.d/memcached.pl
В текстовом редакторе пишем
init.d/memcached
и сохраняем файл под именем «40_memcached» в следующие папки:

  • \denwer\scripts\main\start
  • \denwer\scripts\main\stop
  • \denwer\scripts\main\restart

4.4 Проверяем результат

В наш тестовый скрипт (index.php) добавляем:

$memcache = new Memcache;
$memcache->connect('127.0.0.1', 11211);
echo ‘Memcache ver: ’ . $memcache->getVersion();

Перезапускаем Денвер и смотрим, что получилось

5. Nginx

Nginx — простой, быстрый и надёжный сервер, не перегруженный функциями.

Офсайт: перейти

5.1 Настройка Nginx

A. скачиваем с офсайта Windows-версию и распаковываем в \usr\local\nginx
B. настраиваем виртуальный хост для нашего тестового сайта. Для этого открываем \usr\local\nginx\conf\nginx.conf и добавляем туда

     server {
          listen 127.0.0.1:80;
          server_name www.test.local test.local;

          if ($host = 'test.local'){
              rewrite ^/(.*)$ http://www.test.local$1 permanent;
          }

          location ~* \.(jpeg|jpg|gif|png|css|js|pdf|txt|tar)$ {
              root Z:\home\/test.local\www;
          }
          location / {
              ssi on;
              
              proxy_pass http://127.0.0.1:8080/;
              proxy_set_header X-REQUEST_URI $request_uri;
              proxy_set_header X-Real-IP $remote_addr;
              proxy_set_header X-Forwarded-for $remote_addr;
              proxy_set_header Host $host;
              proxy_connect_timeout 60;
              proxy_send_timeout 90;
              proxy_read_timeout 90;
              proxy_redirect off;
              proxy_set_header Connection close;
              proxy_pass_header Content-Type;
              proxy_pass_header Content-Disposition;
              proxy_pass_header Content-Length;

              root Z:\home\/test.local\www;
          }
      }

Это пример настроек из реального проекта, ваши настройки, очевидно, могут отличаться.

5.2 Настройка Apache

По-умолчанию Апач работает на 80-м порту, но мы только что отдали этот порт Nginx-у, поэтому теперь необходимо изменить шаблон для виртуального хоста в настройках апача и назначить ему порт, отличный от 80-го (например, 8080).
Открываем \usr\local\apache\conf\httpd.conf и изменяем номер порта

##
## НАЧАЛО ШАБЛОНА ВИРТУАЛЬНОГО ХОСТА.
##
## Если вы хотите по умолчанию запускать Apache на порту, отличном от 80,
## измените номер порта в следующей далее директиве.
##
#Listen $&{ip:-127.0.0.1}:$&{port:-8080}
#NameVirtualHost $&{ip:-127.0.0.1}:$&{port:-8080}
#<VirtualHost $&{ip:-127.0.0.1}:$&{port:-8080}>
#  DocumentRootMatch "/home/(?!cgi-)(.*)^1/(?!cgi$|cgi-)(.*)"
#  DocumentRootMatch "/home/(?!cgi-)(.*)/public_html^1"
#  DocumentRootMatch "/home/(?!cgi-)(.*)/public^1"
#  DocumentRootMatch "/home/(?!cgi-)(.*)^1/html/(.*)"
#  DocumentRootMatch "/home/(?!cgi-)(.*)^1/domains/(?!cgi$|cgi-)(.*)"
#  DocumentRootMatch "/var/www/html/(?!cgi-)~(.*)^1/(?!cgi$|cgi-)(.*)"
#  DocumentRoot "$&"  
#  ServerName "%&/-www"
#  ServerAlias "%&/-www" "%&/-www/www" $&{host:-}
#
#  $&{directives:-}
#
#  ScriptAlias /cgi/ "$^1/cgi/"
#  ScriptAlias /cgi-bin/ "$^1/cgi-bin/"
#  AllowEncodedSlashes on
#</VirtualHost>

5.3 Настраиваем запуск Nginx вместе с запуском Denwer

A. создаём файл с именем «nginx.pl» в директории \denwer\scripts\init.d\

#!perl -w
package Starters::Nginx;
BEGIN { unshift @INC, "../lib"; }

use StartManager;

my $basedir = '/usr/local/nginx/';
chdir($basedir);

StartManager::action 
  $ARGV[0],
  start => sub {
    ###
    ### START.
    ###
        print "Starting Nginx\n";
        system("start nginx.exe");
        print "  Started!\n";
  },
  stop => sub {
    ###
    ### STOP.
    ###
        print "Stopping Nginx\n";
        system("nginx.exe -s stop");
        print "  Stopped!\n";
  };

return 1 if caller;

B. в текстовом редакторе пишем
init.d/nginx
и сохраняем файл под именем «50_memcached» в следующие папки:

  • \denwer\scripts\main\start
  • \denwer\scripts\main\stop
  • \denwer\scripts\main\restart

5.4 Проверяем результат

Положим рядом со скриптом файл style.css с содержанием

h1{
	color: red;
}
h2{
	color: green;
}

И облагородим наш index.php:

<html>
<head>
	<title>Test me</title>
	<link rel="stylesheet" type="text/css" href="style.css">
	<meta http-equiv="content-type" content="text/html; charset=utf-8">
</head>
<body>

	<h1>Test me</h1>

	<h2>Memcached</h2>
	<?php
	$memcache = new Memcache;
	$memcache->connect('127.0.0.1', 11211);
	echo 'Memcached ver: ' . $memcache->getVersion();
	?>
</body>
</html>

Теперь перезапускаем Денвер и любуемся результатом. Если CSS-файл подключился – Nginx работает нормально.

6. MongoDB

MongoDB — документо-ориентированная система управления базами данных (СУБД) с открытым исходным кодом, не требующая описания схемы таблиц.

Офсайт: перейти

6.1 PHP-driver

А. Скачиваем библиотеку php_mongo.dll с этого сайта: и закидываем в папку \usr\local\php5\ext\
Методом проб и ошибок было установлено, что подходящий драйвер содержится в архиве mongo-1.2.5.zip/mongo-1.2.5-php5.3vc9ts.zip. Если у вас по какой-то причине не заведётся, попробуйте другие версии.

B. подключаем расширение в php.ini
extension=php_mongo.dll

6.2 Установка Mongo

А. скачиваем архив с Mongo и распаковываем в папку \usr\local\mongodb. В этой же папке создаем еще две папки:

  1. db
  2. logs

B. устанавливаем службу
> cd C:\WebServers\usr\local\mongodb\bin\
> mongod.exe --install --dbpath=C:\WebServers\usr\local\mongodb\db\ --logpath=C:\WebServers\usr\local\mongodb\logs\

6.3 Настраиваем запуск MongoDB совместно с денвером

A. создаём файл с именем «mongod.pl» в директории \denwer\scripts\init.d\

#!perl -w
package Starters::mongoDB;
BEGIN { unshift @INC, "../lib"; }

use StartManager;

StartManager::action 
  $ARGV[0],
  start => sub {
    ###
    ### START.
    ###
        print "Starting mongoDB\n";
        system("net start mongoDB");
        print "  Started!\n";
  },
  stop => sub {
    ###
    ### STOP.
    ###
        print "Stopping mongoDB\n";
        system("net stop mongoDB");
        print "  Stopped!\n";
  };

return 1 if caller;

B. в текстовом редакторе пишем
init.d/mongod
и сохраняем файл под именем «60_mongod» в уже знакомые нам папки:

  • \denwer\scripts\main\start
  • \denwer\scripts\main\stop
  • \denwer\scripts\main\restart

6.4 Проверяем результат

Запустим консольный интерфейс mongo
> Z:\usr\local\mongodb\bin\mongo.exe

и выполним вставку и вывод тестового значения в базу “test”
> db.test.save( { name: “Habr!” } )
> db.test.find()

В результате должно получиться следующее:

6.5. Установка интерфейса управления Mongo-базами

На офсайте MongoDB есть список и краткие обзоры админок, так что можно выбрать по вкусу.
Я для себя выбрала RockMongo, поэтому именно с её помощью мы окончательно удостоверимся, что у нас всё работает и никуда не падает.

А. скачиваем архив с админкой с этой страницы. Выбираем, естественно, версию для Windows. На момент написания статьи это RockMongo-on-Windows v0.0.4

B. из архива берём папку \rockmongo-on-windows\web\rockmongo и копируем её в директорию нашего тестового сайта
Открываем config.php и меняем значение параметра

$MONGO["servers"][$i]["control_auth"]  = true;

на

$MONGO["servers"][$i]["control_auth"]  = false;

C. Проверяем результат по ссылке www.test.local/rockmongo/index.php

Поздравляю! Теперь мы окончательные и бесповоротные молодцы.

Бонус №1. Работа с php из консоли Windows

Возможно, кому-то пригодится. Мне вот пригодилось, когда наш злобный техлид решил, что «SQL-файлы – это ващепрошлыйвек, давайте юзать миграции». Я, конечно, для приличия попыталась изобразить полное непонимание и даже пустить слезу, но была разоблачена и отправлена разбираться с тем, как это работает на Windows.
Оказалось, что всё что нужно для счастья – это прописать PHP директорию в PATH.

Нажимаем на «Изменить» и добавляем в конец строки
;Z:\usr\local\php5

Теперь проверим, что всё заработало.
В директории тестового сайта создадим файл console.php

<?php
if ($argv[0] == basename(__FILE__)) {	
	unset($argv[0]);
}
echo 'Hello ' . $argv[1] . '!';

Открываем консоль (можно прям из этой же папки – щелкаем правой кнопкой мыши с зажатым SHIFT-ом на пустом месте и выбираем пункт «Открыть окно команд»).
Вводим:
> php console.php “UserName”

Консоль отвечает:
> “Hello, UserName!”

PHP побеждён, всеобщее ликование, апплодисменты, занавес.

Бонус №2.

Все файлы и примеры, упомянутые в статье одним архивом

бесплатно без смс

: на гитхабе

Надеюсь, что данный материал окажется полезен.
Буду благодарна за замечания и предложения.

На момент написания

PHP Version 5.3.27
nginx 1.5.6
MySQL 5.6.14
Apache httpd 2.2.25

PHP — http://windows.php.net/download/. Вам необходимо скачать версию с инсталлятором (*.msi) в варианте Thread Safe;

MySQL — http://dev.mysql.com/downloads/mysql/. Также скачайте версию с msi-инсталлятором;

nginx — http://nginx.org/ru/download.html. Скачайте последнюю версию;

apache — http://httpd.apache.org/
http://apache-mirror.rbc.ru/pub/apache/httpd/binaries/win32/

RunHiddenConsole —http://redmine.lighttpd.net/attachments/660/RunHiddenConsole.zip.

репозиторий расширений PHP
http://downloads.php.net/pierre/

Коротко настройки

nginx 

http {

sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
directio 10m;
expires max;
charset utf-8;

proxy_buffers 8 64k;
proxy_intercept_errors on;
proxy_connect_timeout 1s;
proxy_read_timeout 5s;
proxy_send_timeout 5s;

client_max_body_size 200m;

gzip on;
gzip_disable «msie6»
gzip_min_length 1024;
gzip_vary on;
gzip_buffers 64 8k;
gzip_comp_level 3;
gzip_proxied any;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;

upstream backend {
server 127.0.0.1:9000;
server 127.0.0.1:9001;
server 127.0.0.1:9002;
server 127.0.0.1:9003;
}

…..

server {

listen 80;
server_name  *.*;

proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location ~ /\.ht {
         deny  all;
}

location ~* \.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|mov|avi|mpg|map|xml|flv|swf|rtf)$ {
root e:/sites;
expires 30d;
}

location ~ /(.+\.php) {
root e:/;
fastcgi_pass backend;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME d:/sites/$host$fastcgi_script_name;
fastcgi_param QUERY_STRING $args;
fastcgi_param SERVER_NAME $host;
include fastcgi_params;
}

location / {
root e:/$host;
proxy_pass http://127.0.0.1:8080;
}

}
}

php

extension=php_memcache.dll  (скачать)
extension=php_apc.dll  (скачать)

apache

LoadModule fcgid_module modules/mod_fcgid.so (скачать)
LoadModule rpaf_module modules/mod_rpaf.so (скачать)

Options Indexes FollowSymLinks ExecCGI

RPAFenable On
RPAFsethostname On
RPAFproxy_ips 127.0.0.1 192.168.1.100- ваш айпи сервера
RPAFheader X-Forwarded-For

<IfModule mod_fcgid.c>
MaxRequestLen 100485760
FcgidConnectTimeout 65
MaxRequestsPerProcess 500

FcgidInitialEnv PHPRC «d:/php»   

AddHandler fcgid-script .php 

FcgidWrapper «d:/php/php-cgi.exe» .php

</IfModule>

Для запуска php-cgi.exe в фоновом режиме, использую RunHiddenConsole:

echo Starting servers…
start d:\nginx\nginx.exe -p d:\nginx
start d:\RunHiddenConsole.exe d:\php\php-cgi.exe -b 127.0.0.1:9000 -c d:/php/php.ini
start d:\RunHiddenConsole.exe d:\php\php-cgi.exe -b 127.0.0.1:9001 -c d:/php/php.ini
start d:\RunHiddenConsole.exe d:\php\php-cgi.exe -b 127.0.0.1:9002 -c d:/php/php.ini
start d:\RunHiddenConsole.exe d:\php\php-cgi.exe -b 127.0.0.1:9003 -c d:/php/php.ini
net start MySQL56
net start Apache2.2

Отблагодарить можно через форму справа «Donate» … )

To reward you via the form on the right «Donate» … )

:)

Для развертывания рабочего окружения вам обязательно потребуется установить локальный сервер на Windows – как правило, такая связка включает два элемента:

  • GIT (распределенная система управления версиями);
  • локальный сервер (MySQL, Apache, mongodb, Memcached, nginx, PHP).

В нашем случае для наглядности будем последовательно устанавливать PuTTY, GIT, джентльменский набор Denwer (Apache, MySQL, PHP), Nginx , а также Memcached и MongoDB. Всё это нужно для полноценного развертывания локального сервера.

Как установить PuTTY

Этот клиент обеспечит нам возможность удаленного и безопасного доступа к проекту через протокол SSH или Telnet. Вам нужно лишь перейти на официальный сайт разработчика, загрузить инсталлятор и установить всё стандартным способом. Никаких сложностей не возникнет. С настройкой разбираться придется самостоятельно, так как это не основная тема нашей статьи.

Установка GIT

Опять же, идем на официальный сайт TortoiseGit, выбираем подходящую версию релиза, скачиваем и устанавливаем. Мы рекомендуем именно TortoiseGit, так как он более стабилен и надежен с точки зрения разработки.

Denwer

Стандартный набор всякого веб-разработчика, включающий инсталлятор, веб-сервер, базу данных MySQL, PHP, систему управления виртуальными хостингами и ряд других важных компонентов.

Для установки нужно загрузить базовый комплект Denwer, а также дополнительные модули PHP5. Здесь важно подчеркнуть, что придется пройти регистрацию, и только тогда вы сможете получить ссылку на скачивание программного обеспечения на свой email.

Memcached

Об этой системе кэширования объектов мы уже рассказывали подробно в отдельной статье, так что надолго здесь задерживаться не будем. Для установки вам потребуется скачать архив с файлом в формате binaries, а затем распаковать его в директорию \usr\local\memcached.

Чтобы Memcached запускался вместе с Denwer, придется написать небольшой скрипт с командами запуска. Для этого в директории \denwer\scripts\init.d\ создайте файл с названием memcached.pl, откройте его в режиме редактирования и пропишите такие строки:

#!perl -w
package Starters::Memcached;
BEGIN { unshift @INC, "../lib"; }
 
use StartManager;
 
my $basedir = '/usr/local/memcached/';
chdir($basedir);
 
StartManager::action
  $ARGV[0],
  start => sub {
    ###
    ### START.
    ###
        print "Starting memcached\n";
        system("memcached.exe -d");
        print "  Started!\n";
  },
  stop => sub {
    ###
    ### STOP.
    ###
        print "Stopping memcached\n";
        system("TASKKILL /F /IM memcached.exe");
        print "  Stopped!\n";
  };
 

return 1 if caller;

Остается дело за малым – нужно создать ссылку на этот скрипт в трех разных директориях, чтобы при запуске Denwer автоматически выполнялся init.d/memcached.pl. Для этого в текстовом редакторе нужно написать:

init.d/memcached

Файл называем 40_memcached и сохраняем в трех разных папках:

  • \denwer\scripts\main\start
  • \denwer\scripts\main\stop
  • \denwer\scripts\main\restart

После этого откройте текстовый скрипт index.php и добавьте в него три строчки:

$memcache = new Memcache;
$memcache->connect('127.0.0.1', 11211);
echo ‘Memcache ver: ’ . $memcache->getVersion();

Проверить, работает ли всё так, как задумано, можно путем перезапуска Denwer.

Настройка веб-сервера Nginx

Во время установки локального сервера на Windows не обойтись без веб-сервера – в нашем случае это Nginx. Вам нужно всего лишь перейти на официальный сайт разработчика, загрузить версию для Windows и распаковать файлы в директорию \usr\local\nginx.

Следующий шаг – настроить под ваш тестовый сайт виртуальный хост. Откройте \usr\local\nginx\conf\nginx.conf в режиме редактирования и добавьте строки:

 	server {
          listen 127.0.0.1:80;
          server_name www.test.local test.local;
 
          if ($host = 'test.local'){
              rewrite ^/(.*)$ http://www.test.local$1 permanent;
          }
 
          location ~* \.(jpeg|jpg|gif|png|css|js|pdf|txt|tar)$ {
              root Z:\home\/test.local\www;
          }
          location / {
              ssi on;
             
              proxy_pass http://127.0.0.1:8080/;
              proxy_set_header X-REQUEST_URI $request_uri;
              proxy_set_header X-Real-IP $remote_addr;
              proxy_set_header X-Forwarded-for $remote_addr;
              proxy_set_header Host $host;
              proxy_connect_timeout 60;
              proxy_send_timeout 90;
              proxy_read_timeout 90;
              proxy_redirect off;
              proxy_set_header Connection close;
              proxy_pass_header Content-Type;
              proxy_pass_header Content-Disposition;
              proxy_pass_header Content-Length;
 
              root Z:\home\/test.local\www;
          }

  	}

Естественно, все прописанные выше параметры необходимо адаптировать в соответствии с вашим проектом.



Как настроить Apache

Параметры работы Apache по умолчанию зачастую не подходят для работы – в частности, установленный «из коробки» порт 80 обычно рекомендуется менять. Либо из соображений безопасности, либо в том случае, если на этом порту работает другой веб-сервер – например, тот же Nginx. В общем, двигаемся в настройки Apache и меняем шаблон для виртуального хоста с целью назначить ему другой порт.

Открываем в режиме редактирования файл \usr\local\apache\conf\httpd.conf и ищем такие строки:

#Listen $&{ip:-127.0.0.1}:$&{port:-6080}
#NameVirtualHost $&{ip:-127.0.0.1}:$&{port:-6080}
#<VirtualHost $&{ip:-127.0.0.1}:$&{port:-6080}>
#  DocumentRootMatch "/home/(?!cgi-)(.*)^1/(?!cgi$|cgi-)(.*)"
#  DocumentRootMatch "/home/(?!cgi-)(.*)/public_html^1"
#  DocumentRootMatch "/home/(?!cgi-)(.*)/public^1"
#  DocumentRootMatch "/home/(?!cgi-)(.*)^1/html/(.*)"
#  DocumentRootMatch "/home/(?!cgi-)(.*)^1/domains/(?!cgi$|cgi-)(.*)"
#  DocumentRootMatch "/var/www/html/(?!cgi-)~(.*)^1/(?!cgi$|cgi-)(.*)"
#  DocumentRoot "$&" 
#  ServerName "%&/-www"
#  ServerAlias "%&/-www" "%&/-www/www" $&{host:-}
#
#  $&{directives:-}
#
#  ScriptAlias /cgi/ "$^1/cgi/"
#  ScriptAlias /cgi-bin/ "$^1/cgi-bin/"
#  AllowEncodedSlashes on

#</VirtualHost>

Здесь вместо 6080 можете указать любой другой удобный порт.

Как настроить автозапуск Denwer вместе с Nginx

Переходим в директорию \denwer\scripts\init.d\, здесь нужно создать файл nginx.pl. Его содержимое должно выглядеть следующим образом:

#!perl -w
package Starters::Nginx;
BEGIN { unshift @INC, "../lib"; }
 
use StartManager;
 
my $basedir = '/usr/local/nginx/';
chdir($basedir);
 
StartManager::action
  $ARGV[0],
  start => sub {
	###
	### START.
	###
    	print "Starting Nginx\n";
        system("start nginx.exe");
    	print "  Started!\n";
  },
  stop => sub {
	###
	### STOP.
	###
    	print "Stopping Nginx\n";
        system("nginx.exe -s stop");
    	print "  Stopped!\n";
  };
 

return 1 if caller;

Сохраняем изменения и движемся далее. Теперь открываем текстовый редактор, в нем пишем «init.d/nginx» без кавычек, а затем сохраняем под именем 50_memcached в трех разных директориях:

  • \denwer\scripts\main\start
  • \denwer\scripts\main\stop
  • \denwer\scripts\main\restart

Чтобы проверить работу скриптов, перезагрузите Denwer – если CSS подключается, всё сделано корректно.

Как настроить MongoDB

Эту документо-ориентированную систему часто используют на локальных серверах, так как в ней понятная структура объекта и присутствуют расширенные возможности запросов. Кроме того, БД удобно масштабировать, что порой экономит очень много времени. Скачать её можно с официального сайта разработчиков.

Перед установкой MongoDB потребуется загрузить PHP драйвер – перейдите на github и найдите файл php_mongo.dll. После скачивания закиньте его в директорию \usr\local\php5\ext\. Подключить расширение можно в файле php.ini, добавив строчку:

extension=php_mongo.dll

Теперь приступаем непосредственно к установке – загрузите архив с инсталлятором и распакуйте его содержимое по адресу \usr\local\mongodb. Здесь же сразу создаем еще две папки с названиями db и logs.

Далее следует установка службы:

> cd C:\WebServers\usr\local\mongodb\bin\
> mongod.exe --install --dbpath=C:\WebServers\usr\local\mongodb\db\ --logpath=C:\WebServers\usr\local\mongodb\logs\

Остается настроить автозапуск MongoDB вместе с Denwer. Для этого переходим по пути \denwer\scripts\init.d\ и здесь создаем файл с названием mongod.pl. Внутрь закидываем небольшой скрипт:

#!perl -w
package Starters::mongoDB;
BEGIN { unshift @INC, "../lib"; }
 
use StartManager;
 
StartManager::action
  $ARGV[0],
  start => sub {
	###
	### START.
	###
        print "Starting mongoDB\n";
        system("net start mongoDB");
        print "  Started!\n";
  },
  stop => sub {
	###
	### STOP.
	###
        print "Stopping mongoDB\n";
        system("net stop mongoDB");
   	 print "  Stopped!\n";
  };

 
return 1 if caller;

Теперь по аналогии с предыдущими шагами открываем текстовый редактор, внутрь прописываем:

init.d/mongod

Называем файл «60_mongod» и сохраняем в трех директориях:

  • \denwer\scripts\main\start
  • \denwer\scripts\main\stop
  • \denwer\scripts\main\restart

После этого рекомендуем посетить официальный сайт разработчиков MongoDB и выбрать себе админку по душе – у всех людей разные вкусы относительно интерфейсов, поэтому никаких универсальных рекомендаций давать не будем.

Наконец, добавим, что вместо PuTTY вы можете использовать KiTTY, а связку Denwer можно заменить программной средой Open Server – она тоже создана с прицелом на веб-разработчиков и отлично работает под управлением Windows. Надеемся, наш материал помог вам разобраться, как установить локальный сервер на Windows и подготовить его к работе над проектом. Спасибо за внимание!

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Ядро какой ос использует windows mobile
  • Как узнать какой процесс использует порт windows
  • Не удалось обновить конфигурацию загрузки компьютера при установке windows 10
  • Docker daemon is not running windows 10
  • Epson stylus c65 драйвер windows 10