- PVSM.RU - https://www.pvsm.ru -
Привет!
Давно собирался написать статью на Хабр, и вот наконец-то собрался.
Расскажу про одну сборку, сильно облегчающую жизнь вебмастеру под Windows.
История такова — во время очередных «плясок с бубном» по поднятию web-окружения под win у заказчика, я понял что меня достало вся эта магия.
Надоел поиск и вызов элементалей 50 уровня ради того чтобы найти модуль mod_wsgi под Python и Апач, скомпиленный под win, инициализация данных Postge SQL, маета с тем, что Апач не стартует, потому что скайпик уже висит на 80 порту…
Хотелось чего-то простого, гибкого и главное — портабельного.
Т.е. охота было чтобы один раз настроил, потом пришел, скопировал в другое место, запустил — и все окружение с готовыми данными и настройками поднялось.
Почему win, когда давно есть та-же Ubunt-а? Потому что мы часто ездили с нашим софтом к заказчикам, а те после просмотра демки говорили — «а можно мне поиграться оставить?», ну и 90% компьютеров имело, естественно, windows.
Посмотрев, что есть на этом поле, и увидив лишь ограниченные решения, сел писать сам. Как там «Хочешь сделать хорошо — сделай это сам».
Идея была проста — сделать переносимую среду веб-разработчика «с шашками и дамами не тяжелого поведения», причем такую, чтобы можно было поставить, а потом удалить без оставления мусора,
окривления системы или чего-либо еще из этой оперы.
Так родилась сборка "Windows Web Survival Kit" или WWSK — переносимый «Apache + Node + PHP + Python + MySQL + PgSQL + Утилиты».
«Отвязал» я программы от физических путей что называется «в лоб», ну зато все очень просто и понятно.
Сделал рутовой папкой сборки папку с названием «www» (т.е. внутри нее живет все наше окружение), а вот ее уже можно поместить куда угодно.
Для каждой конфигурации, в тех местах где требуется указание полного пути, путь указывается вида "?/www/путь-куд-надо-относительно-папки-www".
При копировании в некий новый путь, после копирования запускается специальный файл, который грубо говоря делает следующее — берет все наши «начальные» конфигурации, заменяет "?/" на текущий путь до папки «www» и раскладывает исправленные конфиги в нужные места, затем запускает и регистрирует службы.
Apache — при старте регистрирует службу «ApacheSA».
MySQL — при старте регистрирует службу «MySQLSA».
PgSQL — при старте регистрирует службу «PgSQLSA».
PHP 5, подключенный как fast-cgi.
Python 3(или 2), подключенный как mod-wsgi
При остановке какого либо компонента, службы так же останавливаются и разрегистрируются.
Windows XP (32/64), Windows 7 (32/64) работает точно.
По-идее, должна работать и на Windows 8, но проверить не было возможности, к сожалению.
В корне лежат следующие папки:
И файлы:
Внутри есть подпапки apacheData, mysqlData, pgsqlData, phpData, pythonData в которых хранятся шаблоны конфигураций для всех этих сервисов.
Это те самые шаблоны конфигураций, которые при привязки сборки к новой папке будут копироваться в нужные места с измененным путем внутри.
Кроме того, там же хранятся менеджеры дл БД (mysqlData/manager и pgsqlData/manager).
Менеджеры не включены в сборку — каждый сам может использовать то, к чему привык.
Я использую EMS MySQL и PgSQL manager — мне больше всего они приглянулись по функционалу и удобству.
Самое главное условие — запускаемый файл менеджера в этих папках должен обзываться как manager.exe.
В корне папки sys есть еще файл для работы со сборкой из командной строки services.cmd
Например рестартовать Apache можно так: services.cmd RestartApache.
Врядли это нужно будет в жизни — все можно сделать из меню, но если кому-то хочется прикрутить что-то свое — возможность есть.
Временный каталог всей сборки.
Во всех конфигурациях, где требуется указать временный каталог, он указывается сюда.
Внутри нее можно все удалять кроме каталога sessions, в котором живут сессии PHP.
Папка с различным инструментарием.
Подпапки Apache, MySQL, NodeJS, PgSQL, PHP, Python содержат различные доки и хитрости по этим сервисам, плюс некоторые сервисные файлики, позволяющие делать какой-либо дополнительный функционал.
Например в случа с БД там есть командные файлы для импорта и экспорта дампов для БД, инициализации БД и т.д.
Кроме этого у меня в этой папке живет GIT (папка с одноименным названием), YUI minimizer (папка Minimizer), Оптимизаторы изображений (папка IMGoptimize), cURL, Inkscape и т.д.
Если у Вас есть какие-то инструменты, которыми Вы постоянно пользуетесь — их можно разместить сюда.
В этой папке живут папки с сайтами, пути до которых прописаны в конфигурации Apache или NodeJS.
Единственная специальная подпапка здесь — это подпапка Python где живет обработчик хоста для mod_wsgi для Python, он так же прописан в конфиге Apache и Вы всегда его можете заменить сами на что хотите.
С обновлением все просто — скачиваете нужный компонент с сайта и разархивируете его в нужную папка с заменой файлов.
Однако, естественно, есть несколько нюансов:
Некоторые компоненты производители предоставляют как пакет msi, его можно распаковать в win командой msiexec /a «имяMSIпакета» TARGETDIR="%CD%tmp" /qb — он создаст папку tmp в каталоге рядом с пакетом и распакует туда его содержимое, а уж потом его можно скопировать в нужную папку (не забудьте удалить в папке tmp копию файла пакета, которую заботливый MSI инсталлер туда кладет)
Первое, что надо сделать — это зайти в шаблоны конфигураций (смотрите инфу про папку sys) и подстроить их «под себя». Указать нужные папки с сайтами внутри webroot, разобраться, какая версия Python нужна и т.д.
При операции копирования сборки куда либо, либо при переконфигурации нужно, чтобы были остановлены все компоненты сборки — т.е. должны быть остановлены Apache, MySQL и PgSQL и т.д.
Сделать это можно из runner-а, выбрав там Stop All
Затем запустить runner и выбрать там Set configuration или сразу запустить setconf и там выбрать Reset to defaults and set current path as the main path — после этого сборка будет переконфигурирована на работу в данной папке.
Главное помнить, что после этой операции все текущие конфиги, которые были, заменяются на шаблонные! И если Вы что-то в них меняли, но не меняли это в шаблонах — эти изменения потеряются.
После переконфигурации запустите нужные Вам службы из runner-а и все — можно работать. Например зайти в браузере на 127.0.0.1 и (если не менялась эта настройка в конфигурации) должен открыться сайт из корня webroot.
Если Вы запустили сборку в первый раз — не забудьте проинициализировать БД MySQL / PgSQL создав хотя-бы одну БД.
Постарался сделать максимально простое решение и максимально просто его описать.
Надеюсь теперь элементали будут спать спокойно, а веб-разработчик займется наконец тем, чем должен — разработкой.
Я считаю самым главным плюсом этой сборки отсуствие всего лишнего — только самое необходимое — все остальное свободно настраивается «под себя родимого», ибо уж что-что, а с виндовым то cmd/bat не сложно работать.
Все свои нужные инструменты всегда можно спрятать в папочку Tools и прописать работу с ними в меню, если то требуется.
Но решать как получилось на самом деле Вам — любые вопросы, сообщения о багах и предложения приветствуются — буду очень им рад.
Надеюсь, Вам понравится работать с этой штукой, и чье-то сэкономленное время и нервы — самая хорошая для меня награда.
P.S. Спасибо огромное НЛО и всем добрым людям — теперь я тоже в этом замечательном сообществе!
Автор: Protocoder
Источник [2]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/mysql/54686
Ссылки в тексте:
[1] protocoder.ru/site/articles/WWSK/wwsk.zip: http://protocoder.ru/site/articles/WWSK/wwsk.zip
[2] Источник: http://habrahabr.ru/post/212059/
Нажмите здесь для печати.