- PVSM.RU - https://www.pvsm.ru -
Несколько дней назад меня очередной раз посетила Мысль. Мысль была не нова и довольна навязчива: «давай перейдем на Windows8. Ну пожааалуйста». И так как отогнать её никак не получалось, я запаслась чаем и печеньками и приступила.
На установку системы и всех необходимых программ ушло не более двух часов, но затем наступил самый интересный момент: мне нужно было развернуть рабочее окружение, а именно — GIT + локальный сервер (Apache, MySQL, PHP, nginx, memcached, mongodb). Помятуя об опыте предыдущих установок, на этот раз я решила весь процесс задокументировать и сохранить для потомков.
Дисклаймер номер раз: «я не программист» (с), а дизайнер интерфейсов и фронтенд-технолог (но в некоторых случаях могу помочь коллегам и накодить что-нибудь этакое, и меня даже потом за это не побьют)
Дисклаймер номер два: да, я прекрасно представляю, что в Ubuntu всё это делается в разы быстрее. Но я работаю на Windows, так исторически сложилось.
Итак, приступим.
PuTTY — свободно распространяемый клиент для различных протоколов удалённого доступа, включая SSH, Telnet, rlogin.
В состав PuTTY входит несколько утилит, но мне в работе нужны только он сам и Pegeant (агент SSH-аутентификации, в котором хранятся ключи от git-репозиториев).
Офсайт: перейти [1]
Если вам не нужны никакие SSH-и, забудьте об этом пункте и идём дальше.
Для работы с git я уже не первый год использую TortoiseGit, который стабилен, гуёв и на 146% закрывает все мои потребности. Вобщем, рекомендую.
Офсайт: перейти [2]
2.1 Для работы TortoiseGit требуется git для Windows, который можно забрать на гуглекоде [3];
2.2 сам TortoiseGitустанавливаем отсюда [4]
Денвер — Джентльменский набор Web-разработчика («Д.н.w.р», читается «Денвер») — проект Дмитрия Котерова, набор дистрибутивов (Apache, PHP, MySQL, Perl и т.д.) и программная оболочка, используемые Web-разработчиками для разработки сайтов на «домашней» (локальной) Windows-машине.
Офсайт: перейти [5]
Нам потребуется скачать базовый комплект и дополнительные модули PHP5 [6].
Лирическое отступление:
нет, не просто скачать, а получить ссылки на скачивание по email! То есть вам придется вбивать свою почту, а также имя и фамилию два раза в форме под большим заголовком «Регистрация». «Регистрация требуется в связи с будущим выходом Денвера-4.» уже который год как бы извиняется форма, но я ей больше не верю(.
Обычно установка денвера проходит быстро и безболезненно, но на Windows8 на меня напала ошибка, которая ругалась на отсутствующую библиотеку msvcr71.dll. Библиотеку можно забрать здесь [7] и положить в папку "WindowsSystem32" (x32) или "WindowsSysWOW64" (x64). После того, как файл улегся в папку, откройте его свойства и нажмите кнопку «Разблокировать».
После установки Денвера, создадим тестовый скрипт, на котором будем проверять работоспособность всего того, что мы установим впоследствии.
Идем в Z:home и добавляем новый сайт: создаем папку test.local, в ней папку «www», в которую добавляем файл index.php с невероятно креативным текстом:
<?php
echo 'Test me <br>';
Перезапускаем Денвер, открываем в браузере www.test.local [8], впечатляемся и идём дальше
Memcached — связующее программное обеспечение, реализующее сервис кэширования данных в оперативной памяти на основе парадигмы хеш-таблицы.
Офсайт: перейти [9]
Memcache — расширение для php, предоставляет удобный процедурный и объектно-ориентированный интерфейс к memcached, высокоэффективному кеширующему демону, который был специально разработан для снижения нагрузки на базу данных в динамических веб приложениях.
А. скачиваем архив с бинарником: Memcached 1.4.5 for Windows отсюда [10]
В. распаковываем содержимое архива в usrlocalmemcached
А. скачиваем архив с библиотекой отсюда [11]
В. распаковываем содержимое архива в usrlocalphp5ext
С. открываем файл php.ini (usrlocalphp5php.ini) и подключаем расширение:
extension=php_memcache.dll
Чтобы запустить скрипт вместе с Денвером нам нужно:
А. создаём файл с именем «memcached.pl» в директории denwerscriptsinit.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 memcachedn";
system("memcached.exe -d");
print " Started!n";
},
stop => sub {
###
### STOP.
###
print "Stopping memcachedn";
system("TASKKILL /F /IM memcached.exe");
print " Stopped!n";
};
return 1 if caller;
B. теперь создадим ссылку на скрипт – обычный текстовый файл, содержащий указание, что при старте, рестарте и остановке Денвера, необходимо выполнить init.d/memcached.pl
В текстовом редакторе пишем
init.d/memcached
и сохраняем файл под именем «40_memcached» в следующие папки:
В наш тестовый скрипт (index.php) добавляем:
$memcache = new Memcache;
$memcache->connect('127.0.0.1', 11211);
echo ‘Memcache ver: ’ . $memcache->getVersion();
Перезапускаем Денвер и смотрим, что получилось
Nginx — простой, быстрый и надёжный сервер, не перегруженный функциями.
Офсайт: перейти [12]
A. скачиваем с офсайта Windows-версию [13] и распаковываем в usrlocalnginx
B. настраиваем виртуальный хост для нашего тестового сайта. Для этого открываем usrlocalnginxconfnginx.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.localwww;
}
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.localwww;
}
}
Это пример настроек из реального проекта, ваши настройки, очевидно, могут отличаться.
По-умолчанию Апач работает на 80-м порту, но мы только что отдали этот порт Nginx-у, поэтому теперь необходимо изменить шаблон для виртуального хоста в настройках апача и назначить ему порт, отличный от 80-го (например, 8080).
Открываем usrlocalapacheconfhttpd.conf и изменяем номер порта
##
## НАЧАЛО ШАБЛОНА ВИРТУАЛЬНОГО ХОСТА.
##
## Если вы хотите по умолчанию запускать Apache на порту, отличном от 80,
## измените номер порта в следующей далее директиве.
##
#Listen $:$#NameVirtualHost $:$#<VirtualHost $:$>
# 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" $#
# $#
# ScriptAlias /cgi/ "$^1/cgi/"
# ScriptAlias /cgi-bin/ "$^1/cgi-bin/"
# AllowEncodedSlashes on
#</VirtualHost>
A. создаём файл с именем «nginx.pl» в директории denwerscriptsinit.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 Nginxn";
system("start nginx.exe");
print " Started!n";
},
stop => sub {
###
### STOP.
###
print "Stopping Nginxn";
system("nginx.exe -s stop");
print " Stopped!n";
};
return 1 if caller;
B. в текстовом редакторе пишем
init.d/nginx
и сохраняем файл под именем «50_memcached» в следующие папки:
Положим рядом со скриптом файл 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 работает нормально.
MongoDB — документо-ориентированная система управления базами данных (СУБД) с открытым исходным кодом, не требующая описания схемы таблиц.
Офсайт: перейти [14]
А. Скачиваем библиотеку php_mongo.dll с этого сайта [15]: и закидываем в папку usrlocalphp5ext
Методом проб и ошибок было установлено, что подходящий драйвер содержится в архиве mongo-1.2.5.zip/mongo-1.2.5-php5.3vc9ts.zip. Если у вас по какой-то причине не заведётся, попробуйте другие версии.
B. подключаем расширение в php.ini
extension=php_mongo.dll
А. скачиваем архив с Mongo [16] и распаковываем в папку usrlocalmongodb. В этой же папке создаем еще две папки:
B. устанавливаем службу
> cd C:WebServersusrlocalmongodbbin
> mongod.exe --install --dbpath=C:WebServersusrlocalmongodbdb --logpath=C:WebServersusrlocalmongodblogs
A. создаём файл с именем «mongod.pl» в директории denwerscriptsinit.d
#!perl -w
package Starters::mongoDB;
BEGIN { unshift @INC, "../lib"; }
use StartManager;
StartManager::action
$ARGV[0],
start => sub {
###
### START.
###
print "Starting mongoDBn";
system("net start mongoDB");
print " Started!n";
},
stop => sub {
###
### STOP.
###
print "Stopping mongoDBn";
system("net stop mongoDB");
print " Stopped!n";
};
return 1 if caller;
B. в текстовом редакторе пишем
init.d/mongod
и сохраняем файл под именем «60_mongod» в уже знакомые нам папки:
Запустим консольный интерфейс mongo
> Z:usrlocalmongodbbinmongo.exe
и выполним вставку и вывод тестового значения в базу “test”
> db.test.save( { name: “Habr!” } )
> db.test.find()
В результате должно получиться следующее:
На офсайте MongoDB есть список и краткие обзоры админок [17], так что можно выбрать по вкусу.
Я для себя выбрала RockMongo [18], поэтому именно с её помощью мы окончательно удостоверимся, что у нас всё работает и никуда не падает.
А. скачиваем архив с админкой с этой страницы [19]. Выбираем, естественно, версию для Windows. На момент написания статьи это RockMongo-on-Windows v0.0.4
B. из архива берём папку rockmongo-on-windowswebrockmongo и копируем её в директорию нашего тестового сайта
Открываем config.php и меняем значение параметра
$MONGO["servers"][$i]["control_auth"] = true;
на
$MONGO["servers"][$i]["control_auth"] = false;
C. Проверяем результат по ссылке www.test.local/rockmongo/index.php [20]
Поздравляю! Теперь мы окончательные и бесповоротные молодцы.
Возможно, кому-то пригодится. Мне вот пригодилось, когда наш злобный техлид решил, что «SQL-файлы – это ващепрошлыйвек, давайте юзать миграции». Я, конечно, для приличия попыталась изобразить полное непонимание и даже пустить слезу, но была разоблачена и отправлена разбираться с тем, как это работает на Windows.
Оказалось, что всё что нужно для счастья – это прописать PHP директорию в PATH.
Нажимаем на «Изменить» и добавляем в конец строки
;Z:usrlocalphp5
Теперь проверим, что всё заработало.
В директории тестового сайта создадим файл console.php
<?php
if ($argv[0] == basename(__FILE__)) {
unset($argv[0]);
}
echo 'Hello ' . $argv[1] . '!';
Открываем консоль (можно прям из этой же папки – щелкаем правой кнопкой мыши с зажатым SHIFT-ом на пустом месте и выбираем пункт «Открыть окно команд»).
Вводим:
> php console.php “UserName”
Консоль отвечает:
> “Hello, UserName!”
PHP побеждён, всеобщее ликование, апплодисменты, занавес.
Все файлы и примеры, упомянутые в статье одним архивом бесплатно без смс: на гитхабе [21]
Надеюсь, что данный материал окажется полезен.
Буду благодарна за замечания и предложения.
Автор: ZaiSL
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/denwer/14583
Ссылки в тексте:
[1] перейти: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
[2] перейти: http://code.google.com/p/tortoisegit/
[3] забрать на гуглекоде: http://code.google.com/p/msysgit/downloads/list?q=full+installer+official+git
[4] отсюда: http://code.google.com/p/tortoisegit/wiki/Download?tm=2
[5] перейти: http://www.denwer.ru/
[6] дополнительные модули PHP5: http://www.denwer.ru/packages/php5.html
[7] забрать здесь: http://www.dll-files.com/dllindex/dll-files.shtml?msvcr71
[8] www.test.local: http://www.test.local
[9] перейти: http://memcached.org/
[10] отсюда: http://blog.elijaa.org/index.php?post/2010/08/25/Memcached-1.4.5-for-Windows
[11] отсюда : http://downloads.php.net/pierre/php_memcache-2.2.6-5.3-vc9-x86.zip
[12] перейти: http://nginx.org/
[13] Windows-версию: http://nginx.org/ru/download.html
[14] перейти: http://www.mongodb.org
[15] этого сайта: https://github.com/mongodb/mongo-php-driver/downloads
[16] архив с Mongo : http://www.mongodb.org/downloads
[17] список и краткие обзоры админок: http://www.mongodb.org/display/DOCS/Admin+UIs
[18] RockMongo: http://www.mongodb.org/display/DOCS/Admin+UIs#AdminUIs-RockMongo
[19] этой страницы: http://rockmongo.com/?action=downloads
[20] www.test.local/rockmongo/index.php: http://www.test.local/rockmongo/index.php
[21] на гитхабе: https://github.com/ZaiSL/local_env_windows/downloads
Нажмите здесь для печати.