Разворачиваем локальный сервер на Windows


    Несколько дней назад меня очередной раз посетила Мысль. Мысль была не нова и довольна навязчива: «давай перейдем на 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.


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

    Надеюсь, что данный материал окажется полезен.
    Буду благодарна за замечания и предложения.
    Share post
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 137

      +17
      А зачем для локального сервера поднимать связку nginx+Apache?
        +2
        Потому что мне нужно как можно точнее повторить production-окружение, для пары проектов это просто жизненно необходимо — иначе просто локально не заведётся
          +21
          Чтобы как можно точнее повторить production-окружение, стоило бы все же в виртуалке эти сервисы запускать… Али это такой своеобразный production под виндой, с Apache и не рекомендуемым nginx-ом? :)
            0
            Ну, скажем так, не то чтобы «точнее повторить», а хотя бы приблизить, чтобы оно всё поднялось и заработало. Нюансы не особо интересуют.
              +2
              Тот факт что у вас фронтендом будет nginx увы не приблизит окружение к продакшену. Только установив это все на виртуальную машину с той осью которая есть можно прочувствовать важные нюансы (различия в файловой системе, различия при работе со шрифтами и прочее прочее).

              Я по работе работаю под Windows и просто ставлю OpenServer + Node.js + MongoDB и часть расширений. Этот процесс занимает не многим больше чем в убунтах (ну ладно, больше, причем раза в три, ибо все зависимости приходится ставить руками).
                +2
                Угумс. Сервер. На виртуальную машину. Чтобы прочувствовать различия при работе со шрифтами — лолшто?
            +2
            Пф. Что мешало накатить в фоне coLinux и подмонтировать кусок файлухи через cofs? Оно паравиртуализатор, ресурсов жрёт с гулькин нос.
              +20
              Я вот, к сожалению, даже и не поняла, что вы мне сейчас предложили).
                +10
                Есть штука, называется coLinux. Представляет из себя ядро Linux, пропатченное таким образом, что работает параллельно с NT-ядром без использования виртуализации оборудования. Как следствие, имеет доступ к файловой системе и сетевому стеку, что позволяет без особых проблем висеть на той же сетевой карточке с отдельным IP и работать с файлами так, как будто они внутри линуксовой файловой системы. Ресурсов само ядро кушает метров 20 максимум. Идеальный вариант для разворачивания на винде окружения, близкого к серверному.
                  +1
                  Спасибо. Обязательно попробую.
                    +9
                    Запустите его пожалуйста на x64 системе.
                      +4
                      coLinux не умеет x64, это очень даже существенный его минус.
                        +7
                        да и не развивается он. Последняя версия от April 9, 2011
                          0
                          А очень жаль, только из-за этого приходится держать виртуальную машину.
                  +1
                  Что в случае с несколькими проектами? Окружение должно быть разным. Может виртуальные машинки с той же ubuntu будут удобнее?
                    0
                    Для разных проектов различаются, в основном, только настройки nginx, остальное — остается прежним. У меня крутится убунта под виртуалкой, потому что нужен капистрано. Но работаю я, все-таки, на Windows, потому что основные мои инструменты — это продукты от Adobe + работы по фронтенду мне тоже удобнее вести из под Windows
                      0
                      Что мешает папку проекта хранить на windows и примонтировать ее по nfs или cifs в нужную папку на Ubuntu?
                        +4
                        Наверное то, что я пользователь Windows, а не Ubuntu ) Мне почему-то удобнее разворачивать всё именно в моём привычном окружении. Я знаю, что выглядит это всё велосипедом с квадратными колёсами и, может быть, однажды мне это надоест и я сделаю все «как надо», но пока мне хватает того, что уже есть.
                          –2
                          Это правда очень здорово смахивает на квадратноколесный велосипед, да. :)

                          Поднять в линуксе среду для разработки совсем не так страшно, как кажется. Всё что нужно — научиться работать с каким-нибудь консольным текстовым редактором (хотя-бы nano, например) и выучить с десяток элементарных команд, типа смены директории и изменения атрибутов файла.

                          Остальное легко нагугливается в виде подробных готовых инструкций, которые буквально можно скопипастить в консоль и получить то, что нужно.

                          Бонус в том, что становятся очень доступными некоторые вещи, которые под виндой требуют либо многочасовых разбирательств, либо отсутствуют вообще.
                            0
                            Интересно, такая оценка комментария — из-за того, что я забыл сказать, что сидеть под линуксом вебдеву НЕ нужно (достаточно сервера в виртуалке), или же я допустил еще какую-то страшную ошибку?

                            Даже в карму не поленились сходить, блин. \
                              0
                              Видимо фразы типа «Поднять в линуксе среду для разработки совсем не так страшно» как «Только LINUX только хардкор!»
                                +2
                                Как по мне, приведенный в этом топике мануал выглядит куда более хардкорным. И я вроде знаю, о чем говорю, т.к. во-первых, пришел к сегодняшнему варианту (Win 7 на работе или Mac OS X дома в качестве хоста, + Ubuntu Server на виртуалках) как раз из Denwer-а/MAMP-а, и во-вторых, на работе в интранете живут виндовые сервера с Apache/PHP.
                                  0
                                  Да кто ж спорт. Сам сижу на Win8+Debian осминожка в качестве гостевой машины.
                              +2
                              Поверьте, я неплохо представляю, как настроить тоже самое в Ubuntu (как я говорила выше, убунта у меня есть в виртуалке. И что еще более страшно — на нетбуке у меня Минт, и там тоже всё успешно настроено ).
                              Но ежедневно я просыпаюсь и сажусь за свою Windows-машину, в которой мне всё нравится, в которой я работаю над проектами и тут же тестирую во всём многообразии браузеров. Пока мне так удобно.
                                0
                                Тот мой комментарий вовсе не подразумевал переход на линукс (ну, т.е., не должен был подразумевать, я просто протупил и не обозначил этот момент, извините). :)
                                  +4
                                  Вообще, наверное мне таки стоит написать свой хабратопик, о разворачивании серверной среды для веб-разработки на базе Ubuntu Server в VirtualBox внутрях винды или макоси. Типа «Denwer, давай, до свидания».
                                    0
                                    Дак на хабре даже есть. Хотя то что видел я достаточно разнознено. Напишите как развернуть сеть виртуалок нормельно, как настроить самбу, как сделать так что бы можно было поставить в качестве гостя WinXP с IE7 скажем и из нее тестить WEB приложение, работающее на виртуалке под Debian. Это полностью должно покрыть нужды всех.
                                      0
                                      Самба там не нужна (с учетом того, что продвинутые IDE поддерживают автоматическую заливку файлов в виртуалку по SSH). WinXP в качестве дополнительного гостя — хз, по-моему, это тривиально и уход в сторону от основного вопроса.
                                        +1
                                        Ну не все делается через IDE. Посему без самбы никак. Во всяком случае мне.
                                          0
                                          Что не делается через IDE — я делаю через FileZilla. На поднятие самбы было банально жаль времени, + на работе периодически производится сканирование машин в сети, и светить самба-ресурс на виртуалке = объясняться потом с ИБ.

                                          Хотя ваша позиция мне тоже понятна, да.
                                      0
                                      Вот так? ;)

                                      # apt-get install git nginx apache2 mysql-server mongodb php5 memcached
                                        0
                                        Ну если проброс интернетов/сети идет через NAT — то да, по сути больше ничего особо не надо.
                                          –1
                                          Почти. sudo забыли. :)
                                            +1
                                            Не забыл. Как видно по '#' я уже под рутом )
                            0
                            А production на Win 8 работает? это ведь ну очень не точное повторение окружения…
                              0
                              Что конкретно повторить?
                              Если надо повторять — то виртуалку с такой же ОС, как и на сервере. Иначе и обычного apache хватит.
                                0
                                Быть может rewrite сделан в конфигах nginx, и переделывать его под апач не хочется каждый раз, или страницы ошибок. Мало ли что. nginx не столько уж и весит, чтобы на этом заострять внимание. Мне вот не понятно почему установка сублимайн 2 прошла только по скринам, без отдельного пункта =)
                                  0
                                  Реврайт, относящийся к роутингу, переписывается за минуту: там обычно 2 строки.
                            +1
                            набор дистрибутивов (Apache, PHP, MySQL, Perl и т.д.) и программная оболочка, используемые Web-разработчиками для разработки сайтов на «домашней» (локальной) Windows-машине.

                            А как так вышло, что web-разработчик — это обязательно *AMP?
                              +1
                              Нет, совсем не обязательно. Просто моя команда ведет разработку на такой платформе. А то, что вы процитировали — это описание с официального сайта Денвера.
                                0
                                А вот из вашего заголовка (Разворачиваем локальный сервер на Windows) и картинки (Windows 8: рабочее окружение web-разработчика) создается именно такое ощущение.
                                  +3
                                  На картинке, внизу, прям под котом есть небольшое уточнение). Извините, если ввела вас в заблуждение, но уже первые абзацы статьи объясняют — про что именно идёт речь.
                              0
                              А продакшион что тоже на WAMP? %)

                              Я к тому, что работа конечно проведена и вполне возможно что кому-то пригодится. Но когда придётся руками допиливать код чтобы он таки заработал на LAMP (теже права на файлы/папки к примеру) то времени не жалко будет?
                                +1
                                Конечно, не на WAMP). Это просто я локально извращаюсь с Windows
                              • UFO just landed and posted this here
                                  +1
                                  А разработка и ведется в том же окружении, в котором работает продукт. Я в самом начале статьи писала о том, что основной мой вид деятельности — это дизайн интерфейсов и работа над фронтом (вёрстка и JS). Программисты же у нас все под Ubuntu.
                                    +1
                                    При проверке на таком локальном серваке может «уплыть» множество вещей, начиная от доп. библиотек, используемых вместе с пыхом, заканчивая нюансами типа case-insensitivity имен таблиц в мускуле под виндой.
                                    +5
                                    т.к. разработка должна вестись в том же окружении, в котором потом продукт будет работать

                                    Ну вообще, нет. Разработка должна вестись в разработческом окружении, а «в том же» должны проводиться интеграционные тесты.
                                      0
                                      Разработка в продакшен окружении позволяет сэкономить много ресурсов на отлавливание глюков из серии «забыли поставить модуль»/«поставили модуль не совместимой версии»/«feature_name не работает с языком версии ниже Х» и прочее-прочее.
                                      Сие правда не особо критично при небольшом кол-ве серверов.
                                        0
                                        А стоимость разворачивания production-like среды для каждого разработчика? Особено когда у вас production — это два мейнфрейма, например.
                                          0
                                          Если у вас 2 мейнфрейма — то особых проблем поддерживать среду разработки и продакшен в актуальном состоянии не составит.
                                          А вот если у вас 100+ серверов, на которых крутятся тонны разнообразного софта — то здесь уже, скорее всего, будет дешевле загнать разработчиков в виртуалки с продакшен окружением.
                                            +2
                                            Если у вас 2 мейнфрейма — то особых проблем поддерживать среду разработки и продакшен в актуальном состоянии не составит.

                                            Я смотрю, мейнфреймы нынче дешевы стали.

                                            А вот если у вас 100+ серверов, на которых крутятся тонны разнообразного софта — то здесь уже, скорее всего, будет дешевле загнать разработчиков в виртуалки с продакшен окружением.

                                            Зачем им это? Неужели каждый из них занимается сразу всем? По мне, так это явный признак недостаточного разделения обязанностей и изоляции сервисов.
                                              0
                                              На каждом сервере крутится своя задача. Но вы действительно собираетесь собирать индивидуальную конфигурацию базовых пакетов под каждое приложение? И как вы потом будете обновлять это зоопарк?

                                              По факту у вас есть несколько базовых ролей серверов — прокси/хранилище/сервер на котором крутятся скрипты со своим набором софта. И будет несколько нерационально разбивать запускалки еще на 10 групп из-за того что разработчики поставили себе на машины «особо_новую_версию_библиотеки» не совместимую с той что используется на серверах сейчас. И под которую написана куча софта.
                                              А переписывать новый софт обратно уже поздно ибо дедлайн был «вчера».
                                                0
                                                Но вы действительно собираетесь собирать индивидуальную конфигурацию базовых пакетов под каждое приложение?

                                                Нет, а зачем?

                                                И как вы потом будете обновлять это зоопарк?

                                                Скриптом.

                                                И будет несколько нерационально разбивать запускалки еще на 10 групп из-за того что разработчики поставили себе на машины «особо_новую_версию_библиотеки» не совместимую с той что используется на серверах сейчас.

                                                Нерационально позволять разработчикам ставить себе на машины какие-то версии библиотеки вместо того, чтобы держать эти версии в общем репозитории.

                                                Ну и да, есть ровно один, совершенно фундаментальный аргумент против того, почему разработческое окружение не может быть production-like — потому что в нем стоит разработческий софт. Который сам по себе настолько сильно все меняет, что интеграционная среда нужна все равно. А если она есть, то дальше уже не важно, что там в разработческой (и ее можно делать настолько легкой, насколько вообще позволяет система).

                                                У нас вот разработчики работают вообще не на том веб-сервере, который в продуктиве. И это ровным счетом никому не мешает (кроме специальных людей, которые отлаживают аутентификацию, но у этих стоят другой веб-сервер, все равно не такой, как в продуктиве).
                                                  0
                                                  Ну тут уже скорее вопрос специфики конкретной предметной области.
                                                  Лично у меня разработческая виртуалка полностью повторяет продакшен сервер. Все инструменты разработчика работают на хост-системе. На виртуалке я только логи смотрю.
                                                    0
                                                    Если у вас правда продакшн сводится к одному серверу, то я вам завидую.
                                                      0
                                                      Нет, продакшен серверов у нас много с жутким зоопарком на них т.к. не все под нашим контролем :(
                                    0
                                    И зачем ставить винду, чтобы потом развернуть на ней всякую ересь типа *AMP?
                                    Если уж пользоваться виндой, то вместе с IIS. А для всего остального есть линуксы, они для этого подходят много лучше
                                      –1
                                      И зачем ставить линукс, чтобы потом неудобно было в нем работать? Если уж пользоваться линуксом то только в качестве сервера. Ну а для всего остального есть виндоусы, они для этого подходят много лучше :-)
                                      • UFO just landed and posted this here
                                          –1
                                          Я хотел сказать только то, что вопрос выбора рабочего окружения это дело вкуса, а о вкусах не спорят.
                                      +4
                                      1. Вместо PuTTY есть KiTTY
                                      2. Вместо старого Денвера есть Open Server
                                      • UFO just landed and posted this here
                                          0
                                          Что именно? Установить расширение занимает минуту, большая часть всего там есть.
                                          • UFO just landed and posted this here
                                              0
                                              пардонте, заработался…
                                            0
                                            И не будет его в Open Server до тех пор, пока разработчики не сделают возможность остановки MongoDB из командной строки. Сейчас они предлагают остановку через внутренний shell командой «db.shutdownServer()» или остановку сервиса «net stop mongodb» — это имхо бред для ситуации с портативным запуском. Ну а убивать прочесс как-то боязно, вдруг база поломается. Так что как только они сделают то, что должны были сделать еще 100 лет назад — так сразу MongoDB в Open Server и появится :-)
                                              0
                                              В денвере отсутствует ещё больше. OpenServer пока обновляется, я бы сказал, даже излишне ретиво.
                                              0
                                              В двух словах, чем KiTTY лучше PuTTY?
                                              Скачал его, на первый взгляд — отличий нет.
                                                0
                                                Как-то так
                                                И чего-то у меня с путти не получилось, а в китти вышло :)
                                                • UFO just landed and posted this here
                                                  • UFO just landed and posted this here
                                                    0
                                                    китти это форк путти, тобиш тоже самое но есть множество плюшек. Основной (для меня) является сохранение паролей для сессий.
                                                    0
                                                    Open Server пробовала где-то год назад. И что-то мне тогда в нём не понравилось… Спасибо, что напомнили, нужно будет посмотреть на него еще раз.
                                                      0
                                                      Посмотрите, он очень часто обновляется. Но есть неприятный минус — всё переносить приходится вручную. Из-за этого я всегда пропускаю 2-3 обновления. То есть, вот у меня сейчас стоит 4.5.1, я знаю, что есть новая версия, но обновляться пока не планирую.
                                                      0
                                                      Open Server хорош, но пока молод и горяч — в нём часто встречаются совершенно непонятные глюки.
                                                        0
                                                        >Вместо старого Денвера есть Open Server

                                                        Можно еще XAMPP упомянуть тогда ru.wikipedia.org/wiki/XAMPP
                                                        +1
                                                        Хороший пост-шпаргалка, особенно для новичков.

                                                        Я б еще добавил (для полноты информации), что «из коробки» Denwer ставит mysql и phpmyAdmin найти можно по адресу: localhost/tools/phpmyadmin/

                                                        А в самой сборке питон с руби не помешал бы :)
                                                          +1
                                                          Все отлично, но Виндоус 8 здесь и ни при чем. Все это можно сделать точно так же начиная с XP :)
                                                            +2
                                                            Точно, с Windows8 — это больше маркетинговый ход, так сказать (только тссс, никому). Ну и статья родилась именно из-за неё, а точнее — из-за моей любви к новым интерфейсам) Единственное отличие — ошибка с библиотекой не возникала на семёрке, и там не нужно было её дополнительно разблокировать.
                                                            +4
                                                            Неплохая картинка в начале. Наверное, Вы хороший дизайнер интерфейсов.
                                                              +1
                                                              Я вот уже не помню почему, но недавно я тоже пытался перелезть на Windows 8, но у меня почему-то Denwer не заработал.
                                                              Тогда разбираться было некогда и я с потерями откатился на 7-ку.

                                                              А за инструкцию по подключению nginx спасибо. Давно хотел локально гонять его в связке с Denwer.
                                                              И было бы чудесно, если бы шаблон настроек для nginx не был привязан жёстко к одному узлу, а обновлялся бы автоматически.
                                                                +5
                                                                Хорошо, хорошо. Отлично. Просто супер. :)

                                                                ↑ это я радуюсь, что давно забил на подобные изыскания, и просто поставил в виртуалбоксе Ubuntu Server. Всё стало намного проще и красивее.

                                                                Но вы молодец — думаю, очень многим из тех, кто никак не решится, статья будет очень полезной.
                                                                  +1
                                                                  А как у вас сделано разрешение имен для тестовых сайтов? Денвер, например, автоматически добавляет в hosts имена. Сам бы давно перешел на виртуальную убунту, но эта проблема пока держит на денвере.
                                                                    0
                                                                    А в чем сложность добавить руками десять строчек в два файла? Ну или простенький скрипт написать, если так не хочется каждый раз править. Сам долго мучился с Денвером из-за мнимой простоты и автоматизма, но в результате пришел к выводу, что проще уже настроить все по уму с нуля, чем вечно допиливать давно уже устаревший пакет, в котором постоянно чего-то не хватает.
                                                                      +1
                                                                      dnsmasq (локальный днс-сервер) + mod_vhost_alias для апача. Единственный минус — при использовании mod_rewrite приходится дописывать в .htaccess директиву
                                                                      RewriteBase /

                                                                      А так, практически все как в денвере. Создал папку с названием проекта в определенной директории, и она уже резолвится как <название проекта>.dev
                                                                        0
                                                                        Держу для этого в hosts одну строчку с IP веб-сервера и перечислением через пробел имен сайтов, которые в нем крутятся:

                                                                        192.168.2.2 site1.lo site2.lo site3.lo

                                                                        Очевидно же, вроде.
                                                                          0
                                                                          + вынес ярлык для hosts в корень папки с проектами. чтобы не лазать вглубь.
                                                                      +2
                                                                      Вариант более простой и быстрый: Winginx
                                                                      • UFO just landed and posted this here
                                                                          0
                                                                          Интересная штука, судя по всему. Почему-то не видела его раньше. Спасибо.
                                                                            0
                                                                            Единственно что не подходит для вашего случая — апачь придется ставить отдельно и перебивать конфиги. Так что толку в вашем случае мало.
                                                                          –7
                                                                          Огромное спасибо за инструкцию к Putty!

                                                                          Хабр такой хабр. ТС, с вами обращаются как со слабоумной — ОООО, она скачала Denwer, вот умничка! Неужели вам самой блин не противно :)
                                                                            +2
                                                                            Совершенно необоснованное хамство. Вы обратили внимание, что девушка вообще-то дизайнер интерфейсов, а не программист или сисадмин? А статья может быть довольно полезной для новичков.
                                                                              –9
                                                                              Хо-хо! Парниша! Не учите меня жить!

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

                                                                              НЕТ БЛИН — ЭТО ВЗРОСЛАЯ, ДЕЕСПОСОБНАЯ ТЁТКА, КОТОРАЯ ПИШЕТ СОЧИНЕНИЕ НА ТЕМУ УЖЕ ОБСОСАННУЮ В ИНЕТЕ РАЗ ПИЦОТ А ВСЕ УМИЛЯЮТСЯ И ПУСКАЮТ СЛЮНИ КАК ИДИОТЫ ВАХ КАКИЕ КАРТИНКИ КЛАССНЫЕ :D

                                                                              ZaiSL я лично против вас ничего не имею, но топик ИМХО уж слишком примитивный. Обычно пишут про отважное преодоление каких-нибудь утомительных трудностей и всяких плохо задокументированных засадах, а у вас тут какая-то Поттериада получилась.
                                                                                +1
                                                                                Вот вам не жалко тратить комментарий (который у вас раз во сколько там минут?) на такой неумелый троллинг?) Или вы в процессе борьбы за новый бейджик для профиля?
                                                                                  –5
                                                                                  Ха-ха, очередная шутка про слитую карму. С каждым разом они только смешнее!

                                                                                  Ну конечно троллинг, что же ещё. Не мог же мне этот божественный топик полный откровений в самом деле не понравиться :P

                                                                                  Народ, я вижу, не понимает что я вообще хотел сказать. Так вот. Говорю. Топик ацтойный. Потому что разъясняет вещи уже многократно разжёванные и вообще, пропагандирует порочные практики очень грязных извращений. Честно-честно. После адского секса с запихиванием всякого портированного с линукса софта в WinEmbedded я искренне возненавидел такие вот костыли прям всей душою. Так делать — А-ТА-ТА!

                                                                                  Ну и ещё меня пробесил снисходительный тон большинства комментов. Меня бы задело. Но раз ТС того и надо, то как-то глупо получилось, да ))
                                                                            +1
                                                                            Вместо денвера, который почему-то начал глючить на работе на вин 7 теперь использую WAMP — часто обновляется и без гемора с обновлением апача\пхп и т.д.
                                                                            • UFO just landed and posted this here
                                                                              • UFO just landed and posted this here
                                                                                • UFO just landed and posted this here
                                                                                  • UFO just landed and posted this here
                                                                                      0
                                                                                      Вы не поверите, но Windows подходит для гораздо большего, чем NET и IIS, о чём ТС уже писала.
                                                                                      Тем более для web-разработки разницы практически нет, а удобство (ну и тем более интерфейсы)…
                                                                                      • UFO just landed and posted this here
                                                                                          0
                                                                                          Только об этой «разнице» знают «комментаторы» и ~1-2% пользователей десктопов :), остальные продолжают работать там (в той среде) где им удобнее.
                                                                                          imho об этом т.с. написала в начале статьи. Цель статьи не сменить удобную для себя среду, а описать свой опыт настройки окружения.
                                                                                          • UFO just landed and posted this here
                                                                                              0
                                                                                              Это такая сила воли должна быть, чтобы бросить такое родное мягкое и удобное :)
                                                                                              Раза 3 пробовал — не получилось… возвращался каждый раз.
                                                                                              (ну да уже далеко от темы да и хабр двоится уже :) )
                                                                                              • UFO just landed and posted this here
                                                                                            –1
                                                                                            Только об этой «разнице» знают «комментаторы» и ~1-2% пользователей десктопов :), остальные продолжают работать там (в той среде) где им удобнее.
                                                                                            imho об этом т.с. написала в начале статьи. Цель статьи не сменить удобную для себя среду, а описать свой опыт настройки окружения.
                                                                                0
                                                                                Разверните, пожалуйста, мысль, почему работоспособность nginx проверяется возможностью подгрузки css-файла? Ведь это может говорить и о нормальной работе Apache, нет? Или Apache у нас пока не запущен? ) Запутался просто.
                                                                                  0
                                                                                  Если nginx настроен неверно для домена, то в большинстве случаев статика просто не отдается. С таким же успехом можно было бы проверить и на любом другом файле, из «jpeg|jpg|gif|png|css|js|pdf|txt|tar», перечисленных в настройках.
                                                                                  CSS был выбран из-за наглядности.
                                                                                    0
                                                                                    Возможно, я как-то неоднозначно вопрос сформулировал. Имелось ввиду, почему данный способ проверяет работоспособность именно nginx, а не Apache? Апач, вроде бы, точно так же отдает статику. Или на момент теста у нас Апач не запущен, поэтому в проверке участвует один ngnix?
                                                                                      0
                                                                                      Нет, на момент проверки мы уже изменили настройки апача (сменили порт) и запустили nginx, поэтому и проверяем, что статика у нас не отвалилась. Что апач работает, мы удостоверились сразу после установки Денвера.
                                                                                        0
                                                                                        То есть, обращаясь к url'у «test.local», вы обращаетесь на 80-ый порт, на котором и находится nginx (Апач настроен на работу с портом 8080), поэтому выполняется проверка работы именно nginx, я правильно понял?
                                                                                          0
                                                                                          Именно. А test.local:8080 отдаст вам сайт без nginx-а перед апачем.
                                                                                  0
                                                                                  Вот у меня вопрос, как вы Nginx запустили под Windows? Только ради того, что бы проксировать запросы? Но зачем?
                                                                                  Насколько мне известно то, Nginx под Windows не работает из-за каких-то там проблем с рандомизацией памяти.

                                                                                  Или я что-то упустила?
                                                                                    +1
                                                                                    На сайте Nginx-а не нашла никаких упоминаний о проблемах под Windows.
                                                                                    В 99% процентах случаев nginx локально, конечно, не нужен. Но у нас есть достаточно крупный и сложный full-ajax проект, для которого разработчики намутили какую-то магию в nginx (настройки заголовкой или что-то вроде того), без которой пара фич работает некорректно (жить можно, но мне захотелось праздника). Отсюда и nginx на локалке.
                                                                                      0
                                                                                      Плохо искали, Главна -> Документация -> nginx под Windows
                                                                                      www.nginx.org/ru/docs/windows.html
                                                                                        0
                                                                                        Жаль, я думала вы вкурсе.
                                                                                          –1
                                                                                          Я думаю, что проблемы nginx под Windows не являеются критичными для TC, так как ее задача — только лишь использовать окружение и конфигурацию проекта, обеспечивающего функциональность аналогичную продакшн варианту. По функциональности ограничения только: XSLT-фильтры, фильтры изображений, модуль GeoIP и встроенный языка Perl. Если эти функциональные ограничения TC не помешали, то все остальные ограничения WIndows версии nginx (которые, фактически означают, что ее [Windiws версию] бесполезно использовать под высокой нагрузкой) точно не смогут ей помешать.

                                                                                          to TC: Ирина, статья замечательная. Никого не слушайте, Вы все правильно сделали. Конечно, нужно иметь инфраструктуру на отдельной виртуалке с линюксом, но иногда проще, чтобы это было под руками, и раз Вы используете Windows, то, конечно под Windows. А у меня такой вопрос. Не пользуетесь ли Вы cygwin? Насколько корректно он работает под Win8, в частности интересует sshfs.
                                                                                          0
                                                                                          Как бы может когда-то такие проблемы и были, но сейчас очень часто на винде можно встретить решения, где nginx выступает фронтэндом перед IIS.
                                                                                          –3
                                                                                          Я всё понял но зачем такое извращение!? Куда проще поставить Unix и набрать что то типо emerge -v nginx,apache, memcached, php, mongodb? Оно к тому же и работать будет шустрее…
                                                                                          если вы не занимаетесь .NET то windows в веб разработке очень вреден.
                                                                                          • UFO just landed and posted this here
                                                                                              +1
                                                                                              А если с другой стороны — новички от такой процедуры установки просто убегут из веб программирования.
                                                                                                +1
                                                                                                А с третьей стороны — слабаки нам и не нужны :)
                                                                                                  0
                                                                                                  Ну новички на то и новички что бы по началу быть слабыми. А то всё жалуемся на нехватку кадорв… :)
                                                                                                    0
                                                                                                    Новички — нужны, а слабаки, неспособные даже одолеть одну инструкцию по установке окружения — нет. Как же они потом стандарты и спецификации читать будут? :)
                                                                                                  • UFO just landed and posted this here
                                                                                                0
                                                                                                например я работаю и разрабатываю под Windows 7 и установка всего, что мне нужно почти такая же быстрая, как в Ubuntu, поэтому если есть драйвер прямые руки — то нет разницы в чем девелопить и разворачивать среду разработки.
                                                                                                  0
                                                                                                  Никто не спорит что так нельзя, но это как минимум не удобно. Согласитесь apt-get install php (после 3 секунд уже стоит) куда быстрее чем война с инсталяторами, разворачиванием unix структуры каталогов в windows и прочее. Ну не предназначено изначально это ПО для работы в Win32/64 в итоге костылями её натягивают. Поверьте я тоже осиливал запуск всего веб обвеса на windows но этот гемор я никому не пожелаю… лучше один раз настроить gentoo или ubuntu и потом не париться. К тому же вы забываете что это ПО на до бы регулярно обновлять и тут оно вот сложновато (когда у тебя проект где то их 30-40 компонентов, даже раз в неделю проверять обновления трудно)
                                                                                                0
                                                                                                картинке в заголовке +100 баллов
                                                                                                  –1
                                                                                                  PuTTY я бы заменил на Xshell, по остальным пунктам уже всё сказали.
                                                                                                    0
                                                                                                    На заметку, если нет особо острой необходимости в Apache и(или) Nginx, то все описанное выше можно поставить из Web Plaform Installer, отметив галочками и нажав кнопку «Установить», дальше система сама все скачает, установит и настроит.

                                                                                                    Так же, добавив фид Helicon в пару кликов можно будет наставить целый зоопарк всевозвожных языков, баз, фреймворков и т.д. и т.п.
                                                                                                      0
                                                                                                      по моему связка wamp+обычного гита+нетбинса, на много удобней.
                                                                                                        0
                                                                                                        А зачем всё это нужно, если теперь в Windows 8 (т.е. в клиентскую ОС) в состав входит Hyper-V? В котором можно поднять (почти) полный аналог production на Linux?
                                                                                                          0
                                                                                                          Забудьте Денверы эти, как страшный сон

                                                                                                          __________________________________

                                                                                                          1. Uniform Server
                                                                                                          A lightweight mobile WAMP Server Solution.

                                                                                                          1273 — количество загрузок

                                                                                                          sourceforge.net/projects/miniserver/files/

                                                                                                          Coral_8_9_0.exe 2013-07-19 21.9 MB 1 273

                                                                                                          8.9.0 — Updated Apache to 2.4.6 Win32 OpenSSL 1_0_1e
                                                                                                          — Updated PHP to 5.4.17 OpenSSL 1_0_1e

                                                                                                          8.8.8 — Updated PHP to 5.4.17

                                                                                                          8.8.7 — Updated phpMyAdmin to 4.0.4.1 — Security update
                                                                                                          — Intranet IP addresses updated to:
                                                                                                          127.0.0.1 192.168.0.0/16 172.16.0.0/12 10.0.0.0/8

                                                                                                          8.8.6 — Updated Zend OpCache to 7.0.2
                                                                                                          8.8.5 — Updated MySQL to 5.5.32

                                                                                                          __________________________________

                                                                                                          2. WampServer

                                                                                                          29841 — количество загрузок

                                                                                                          Wampserver2.4-x86.exe 2013-06-23 36.0 MB 29 841

                                                                                                          sourceforge.net/projects/wampserver/files/

                                                                                                          WampServer 2.4 — Windows 32 Bits

                                                                                                          Apache: 2.4.4
                                                                                                          MySQL: 5.6.12
                                                                                                          PHP: 5.4.16
                                                                                                          PHPMyAdmin: 4.0.4
                                                                                                          SqlBuddy: 1.3.3
                                                                                                          XDebug: 2.2.3
                                                                                                            0
                                                                                                            А вот с помощью этого продукта: stunnix.com/prod/aws/overview.shtml
                                                                                                            можно сделать флешку с локальным веб сервером, который будет работать на вин+мак+линуксе (причем база данных и веб-скрипты будут на флешке в одном экземпляре). Это естественно НЕ вируалка, а просто хитрые скрипты + апач и мускл и пхп для каждой из платформ.

                                                                                                            Only users with full accounts can post comments. Log in, please.