Сборка «Windows WEB Survival Kit»

Позволяет иметь под win системой переносной Apache + MySQL + PgSQL + PHP + Python (WSGI) + инструментарий


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

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

Достало, что под виндой все вечно лезет в реестр и пытается искать конфиги в каталоге windows вместо домашнего.

Достали попытки поиска собранного под винду очередного extension-а...

Хотелось как-то все это упростить, улучшить переносимость, чтобы все жило одним каталогом, а в случае чего его можно было просто скопировать на другую машину и там бы все сразу завелось.
Поскольку был нехилый опыт сборки portable-софта, решил я все эти мечты осуществить.
Удалось ли это или нет - судить Вам :-)

Сразу оговорюсь - не тестировал под x64, проверялось все это безобразие под x32, но работать должно - вроде ничего хитрого я не использовал.
Кроме того вся эта штука работает на cmd-шниках. Олдскульно - да, зато просто модифицируемо, и очень наглядно. А кто про них ничего не знает - так и знать то необязательно - все базовое работает из коробки.

Можно конечно переписать на .net или еще на чем-нибудь с блэк-джеком и всем-всем-всем, но имхо самый простой вариант писать все-таки на родном шелле.

Еще - когда я все это делал, PowerShell-а еще не было.
Про Денвер я знаю :-) только имхо по простоте и функциональности он даже рядом не лежал.


Структура

По умолчанию сборка живет в каталоге www, однако Вы вольны переименовать его как угодно.
папки в корне
Apacheфайлы Apache web-сервера, т.е. там просто живут все те файлы, которые можно получить, распаковав .msi пакет, в котором Apache можно скачать с его сайта под win
MySQLтоже самое для My SQL
PgSQLтоже самое для Postgre SQL
PHPтоже самое для PHP
Pythonтоже самое для PHP
sysслужебные файлы, необходимые для функционирования сборки
tmpкаталог для различных временных файлов - сессии пользователей PHP, место для загружаемых файлов и т.д., имеет подпапку sessions где лежат сессии PHP - удалять ее нельзя
Toolsразличный инструментарий (GIT, оптимизаторы JS/CSS и т.д.)
webrootкаталог для подсайтов

папка sys
в папках apacheData, mysqlData, pgsqlData, phpData, pythonData могут находятся различные файлы, необходимые для работы данных программ, самое главное, что внутри них в подпапке ini находятся шаблоны конфигов этих программ, о них - ниже.

Файл services.cmd - библиотека работы со сборкой - остановка / старт Apache, MySQL, PgSQL и т.д. + различные другие сервисы, которые требуются во время работы.
Ее можно использовать из командной строки например для остановки Apache: sys/services.cmd StopApache.
Там же хранятся настройки БД, включая имя пользователя по-умолчанию и его пароль.

Основной хост - это сайт, доступный по адресу 127.0.0.1 (localhost).

Остальные файлы - это файлы, расширяющие функционал командной строки win, среди них несколько утилит, написанных на js - можно посмотреть исходники :-)

папка Tools
Здесь собраны различные полезные утилиты и примочки: сюда можно положить portable GIT, какую-то утиль, которой пользуетесь сами и к которой привыкли.

Я засунул туда те утилиты, к которым привык и которые очень часто использую:
документациядоки и советы по apache / php и т.д.
минимайзер css / jsот команды YAHOO - YUI compressor
cURLиногда надо
оптимизаторы изображенийнесколько небольших утилит от разных авторов, но можно скачать и положить самый-самый мощный File Optimizer
ngrepопять же иногда нужен
командные файлыдля импорта / экспорта и инициализации БД (MySQL & PgSQL.)

корневая папка
Там лежат основные файлы для работы со сборкой:
_runner__.cmdосновной файл для работы со сборкой
_setconf__.cmdфайл настройки конфигурации сборки - может быть как вызван из _runner__.cmd, так и работать самостоятельно
_showlogs__.cmdфайл для просмотра и очистки логов Apache - также может быть вызван из _runner__.cmd, или же самостоятельно
clean.cmdудаляет из сборки все логи, временные файлы и т.д. - нужен например перед созданием бэкапа или переноса
phpinfo.cmdназвание говорит само за себя - показывает информацию о текущей версии PHP в сборке, а также об установленных расширениях и т.д. - к сожалению из-за постоянного изменения функционала в различных версиях PHP очень часто необходим
upgradeSites.txtтам находятся адреса и рекомендации какие файлы откуда качать для обновления сборки
readme.txtнекоторые замечания по поводу сборки


Начало работы

Разворачиваем сборку в какую-нибудь папку, затем запускаем _runner__.cmd, и там выбираем пункт S - set configuration, а в нем - пункт R - reset to defaults... - все, сборка проинициализирована и подготовлена к работе.

Осталось запустить интересующие нас сервисы - возвращаемся в первое меню (нажатием ESC например) и стартуем то, что нам необходимо - например Apache (1) и MySQL (3) - теперь по адресу 127.0.0.1 у нас есть веб сервер, рабочей папкой которого будет то, что указано в пункте W, а так же MySQL сервер.

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

Как оно все работает?
А очень просто:
  1. из каталога /sys/*Data/ini берутся файлы конфигураций "по умолчанию" (Вы можете всегда их настроить прямо в этих папках "под себя", чтобы каждый раз не заморачиваться)
  2. в них производится замена всех ?/www/ на текущий путь до сборки
  3. они раскладываются по нужным папкам (в папку Apache для Apache, в папку PHP для PHP и т.д.)

Вот собственно и весь алгоритм.


Особенности при работе

Если Вы хотите чтобы в каком-то конфиге что-то всегда указывало на какой-то определенный файл или каталог внутри сборки, то вместо начального пути до папки со сборкой просто укажите ?/www/ - например в php.ini есть параметр extension_dir, чтобы он был независимым от положения сборки, записываем его так: extension_dir = "?/www/PHP/ext/", поскольку ?/www/ заменится потом на путь до сборки - все будет именно так, как мы хотим.

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

Поэтому, если Вам надо что-то где-то поменять не на совсем - меняем прямо в папке с нужной программой - надо поменять в php.ini - идем в /PHP/php.ini меняем там то, что надо, затем в _runner__.cmd и перезапускаем сервер.

Если же надо поменять так, чтобы это осталось - то менять следует уже в папках /sys/*Data/ini/нужный_ini, а затем повторить процедуру инициализации и перезапустить сервер.

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

В конфиге Apache - httpd.conf есть метки #CL# они идут сразу перед DocumentRoot и RewriteEngine для основного хоста (127.0.0.1).
Это нужно для включения / выключения ModRewrite, а так же изменения домашней директории из системы конфигурации.
Метки нужны чтобы отличать эти директивы от директив для виртуальных хостов.

Кроме того, в конфиге PHP - php.ini могут из системы конфигурации меняться директивы. display_errors на On (в режиме display errors on) / Off (в режиме display errors off)
error_reporting на E_ALL|E_STRICT (в режиме errors reporting all) / E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR (в режиме errors reporting errors only)

Службы регистрируются под именами ApacheSA - Apache, MySQLSA - MySQL, PgSQLSA - PgSQL.

Принято для всех БД, что имя пользователя root и пароль root - однако, если это не устраивает - их всегда можно поменять

Python версии 3.3.2 подключен к Apache в режиме WSGI, и живет по адресу 127.0.0.5, соответствующий ему директория .../www/webroot/Python, а вызываемый файл, при обращении к 127.0.0.5 wsgi_handler.py.
Если нужен Python 2.7, то его можно развернуть в папку Python вместо 3.x, а в конфиге Apache закомментировать блок Python3 и раскомментировать блок Python27. Режим будет так же WSGI.


Управление

_runner__.cmd


Перемещаться можно курсорными клавишами, [ENTER] осуществляет выбор пункта, либо можно просто нажать ту клавишу, что написана справа от пункта, выход - [ESC].

В этом окне:
Rперезапуск сервера Apache - аналогично остановке сервера, и повторному его запуску - очень часто нужно, например при внесении изменений в конфиг
Sостановить все и удалить все службы - пункт полезен например при архивации
1установка службы и старт сервера Apache
2остановка сервера Apache, удаление его службы
Wизменение корневой директории для основного хоста *
Cизменение конфигурации сборки *
Lпросмотр логов
3установка службы и старт MySQL
4остановка MySQL, удаление его службы
5запуск sys/mysqlData/manager/mymanager.exe
6установка службы и старт PgSQL
7остановка PgSQL, удаление его службы
8запуск sys/pgsqlData/manager/mymanager.exe

* при изменении корневой директории, а так же некоторых настроек не забудьте перезапустить сервер Apache

_setconf__.cmd


В этом окне:
1изменение корневой директории для основного хоста
2включение Mod Rewrite для основного хоста
3отключение Mod Rewrite
4включение режима логирования только для ошибок для PHP
5включение режима логирования всего (ошибки, уведомления, предупреждения) для PHP
6включение отображения ошибок для PHP
7отключение отображения ошибок для PHP
Aоткрыть текущую конфигурацию Apache *
Bоткрыть текущую конфигурацию PHP *
Cоткрыть текущую конфигурацию MySQL *
Dоткрыть текущую конфигурацию PgSQL *
Rпроизвести инициализацию сборки

* будет открыта текущая временная конфигурация, не шаблон конфигурации.

При изменении настроек (1-7) не забудьте перезапустить сервер Apache.

_showlogs__.cmd


В этом окне:
1показать лог ошибок Apache
2показать лог доступа Apache
3показать лог закачки Apache
Rочистить все логи

ВАЖНО: в новую сборку экспериментально включен NodeJS!

В его каталоге надо запустить nodejs-portable.bat и выбрать там Launch для подготовки среды.

Файл start.cmd запускает server.js на 127.0.0.1:8080.
Файл stop.cmd останавливает сервер.
Файл server.cmd аналогичен описанным выше и принимает параметр со значением start /stop / restart.

Логи складываются в NodeJS/stderrLog.txt и NodeJS/stdoutLog.txt

Скачать wwsk.zip, версия 1.3

скачать

22.05.2013, Protocoder
Igor Khomenko19.07.2017 13:35:27#ответить
Рекомендую сборку Appserv: просто и понятно https://www.appserv.org/download/
Protocoder20.07.2017 00:44:00#ответить
Тоже не плохо, но нет PostgreSQL, Node и Python.
Юрий21.07.2024 13:39:33#ответить
Отлично !!!
Написать комментарий