2016-09-09 MediaWiki4Intranet — развертываем для разработки и в production c помощью Vagrant и Ansible

From Wiki4Intranet
Jump to: navigation, search
Line 5: Line 5:
 
под LAMP-окружениями типа XAMPP, а на линукс-машину выкатываться через SVN.
 
под LAMP-окружениями типа XAMPP, а на линукс-машину выкатываться через SVN.
  
Поэтому мы в свое время и завели такую штуку, как [[Windows-сборка Mediawiki4Intranet]], где обычным каталогом лежали все необходимые утилиты/фреймворки (включая TeX, Graphviz, Sphinx), и любой виндовс-пользователь мог попробовать проект, и даже не приходя в создание начать что-то править и создавать<ref>Вот [http://0x1.tv/2c8-architecture-of-mediawiki-filippov короткая, почти не устаревшая лекция про архитектуру MediaWiki]</ref>.  
+
Поэтому мы в свое время и завели такую штуку, как [[Windows-сборка Mediawiki4Intranet]], где обычным каталогом лежали все необходимые утилиты/фреймворки (включая TeX, Graphviz, Sphinx), и любой виндовс-пользователь мог попробовать нашу вики, и даже, не приходя в создание, начать что-то править и создавать<ref>Вот [http://0x1.tv/2c8-architecture-of-mediawiki-filippov короткая, почти не устаревшая лекция про архитектуру MediaWiki]</ref>.  
  
 
Но время идет.
 
Но время идет.
  
MediaWiki из моностекового монолитного PHP-проекта, с классической моделью «генерация страницы на сервере» постепенно превращается в мультистековый микросервисный проект с realtime взаимодействием — так, например, появившийся WYSIWYG-редактор требует <tt>node.js</tt>-стека с специально поднятым сервисом парсинга,
+
MediaWiki из моностекового монолитного PHP-проекта, с классической моделью «генерация страницы на сервере» постепенно превращается в мультистековый микросервисный проект с realtime взаимодействием — так, например, появившийся WYSIWYG-редактор требует с специально поднятого сервиса парсинга на <tt>node.js</tt>,
на подходе [https://sagarhani.wordpress.com/2016/07/31/one-last-step-for-completion-of-google-summer-of-code-kde-wikitolearn/ мгновенное коллаборативное редактирование] в стиле «etherpad/googledocs» — все это уже не развернуть тупо копированием файлов, да и хлопотно тащить все это под Windows — к тому же,  уже почти все вменяемые вебразработчики ушли с Windows на Mac/Linux.
+
на подходе [https://sagarhani.wordpress.com/2016/07/31/one-last-step-for-completion-of-google-summer-of-code-kde-wikitolearn/ мгновенное коллаборативное редактирование] в стиле «etherpad/googledocs»…
  
 +
Все это уже не развернуть тупо копированием файлов, да и хлопотно тащить все это под Windows — к тому же,  уже почти все вменяемые вебразработчики ушли с Windows на Mac/Linux.
 
Впрочем, современный тренды разработки вовсе требуют вынести за скобки систему разработчика (все это холиварно и его личное дело), а все-все-все зависимости проекта инкапсулировать и виртуализировать/контейнеризировать<ref>Самый последний писк моды это «ехал докер через докер», но сейчас мы рассмотрим промежуточную версию, с виртуальными машинами и гибким обновлением через ansible. Докер тоже будет. Но потом.</ref>.
 
Впрочем, современный тренды разработки вовсе требуют вынести за скобки систему разработчика (все это холиварно и его личное дело), а все-все-все зависимости проекта инкапсулировать и виртуализировать/контейнеризировать<ref>Самый последний писк моды это «ехал докер через докер», но сейчас мы рассмотрим промежуточную версию, с виртуальными машинами и гибким обновлением через ansible. Докер тоже будет. Но потом.</ref>.
 
Т.е. все, полноценная MediaWiki — больше не проект для shared hostingа<ref>И не надо к нам больше обращаться с просьбой развернуть все это за две тыщи рублей на шаредхостинге!</ref>, но и shared hosting уже почти умер для нормальных проектов, а цены на изолированный контейнер упали уже совсем ниже плинтуса<ref>Хоть [http://lowendstock.com/ за пару баксов в год]</ref>, так что цена хостинга — уже давно не проблема.
 
Т.е. все, полноценная MediaWiki — больше не проект для shared hostingа<ref>И не надо к нам больше обращаться с просьбой развернуть все это за две тыщи рублей на шаредхостинге!</ref>, но и shared hosting уже почти умер для нормальных проектов, а цены на изолированный контейнер упали уже совсем ниже плинтуса<ref>Хоть [http://lowendstock.com/ за пару баксов в год]</ref>, так что цена хостинга — уже давно не проблема.
Line 20: Line 21:
 
** тестовую версию для локальной отладки коротким REPL-циклом — в смысле, чтобы можно было открыть файлы в IDE и править их по живому, отлаживаться в построчном отладчике с нормальным просмотром переменных и брейкпоинтами.
 
** тестовую версию для локальной отладки коротким REPL-циклом — в смысле, чтобы можно было открыть файлы в IDE и править их по живому, отлаживаться в построчном отладчике с нормальным просмотром переменных и брейкпоинтами.
 
** надежное конфигурирование удаленного сервера на production.
 
** надежное конфигурирование удаленного сервера на production.
 +
* легко конфигурировать свои вики-инсталляции, чтобы они именно ту функциональность, которая нужна, и не больше, наследовали общие параметры.
  
Вообще, мы в свое время сделали инструмент [[Repo.php]], специально заточенный для развертывания MediaWiki4Intranet, но
+
Именно для этого, мы в свое время сделали инструмент [[Repo.php]], специально заточенный для развертывания MediaWiki4Intranet, но…
 
* Он все-таки про развертывание PHP-части, где-то конкурируя с Composer<ref>Который, кстати, появился слишком поздно, после [[Repo.php]] — иначе бы, конечно, не стали бы так «велосипедить»</ref>
 
* Он все-таки про развертывание PHP-части, где-то конкурируя с Composer<ref>Который, кстати, появился слишком поздно, после [[Repo.php]] — иначе бы, конечно, не стали бы так «велосипедить»</ref>
 
* Развернуть и раскатать систему с нуля, поставить nod-ный стек, настроить firewall и т.п. — за пределами его функциональности.
 
* Развернуть и раскатать систему с нуля, поставить nod-ный стек, настроить firewall и т.п. — за пределами его функциональности.
Line 32: Line 34:
 
* [https://www.ansible.com/ Ansible] — для декларативной спецификации конфигурации Centos7<ref>Как наиболее популярных в «энтерпрайзе»</ref>-машин.
 
* [https://www.ansible.com/ Ansible] — для декларативной спецификации конфигурации Centos7<ref>Как наиболее популярных в «энтерпрайзе»</ref>-машин.
  
Итак, сначала допустим, что у вас здоровая Linux-система.
+
Итак, сначала допустим, что у вас здоровая Linux-система<ref>Если у вас Windows, попробуйте [http://discopal.ispras.ru/How_to_use_Ansible_and_Vagrant_for_Windows путь с cygwinом-babunом]</ref>.
 +
* Ставите [https://www.vagrantup.com/ Vagrant] пакетным менеджером или просто RPM/DEB с сайта.
 +
* Ставите [https://www.ansible.com/ Ansible] пакетным менеджером или, если вдруг он в вашем дистрибутиве очень старый или его нет — через
 +
pip install ansible
 +
* Ставите [https://www.virtualbox.org/ VirtualBox] — обязан быть в пакетах, но если нет — можно и с сайта.
 +
 
 +
Дальше:
 +
git clone git@github.com:mediawiki4intranet/mediawiki4intranet-vagrant-ansible.git

Revision as of 01:08, 10 September 2016

Как быстро бежит время! Проекту MediaWiki4Intranet уже больше десяти лет, а вообще, наших попыток натягивать сову на глобус MediaWiki для всех интранет-задач внутри IT компании и вовсе лет 12.

И изначально все было достаточно просто и понятно — стандартный PHP-проект, в духе «скопируй файлы в настроенный PHP-хостинг», и вообще было не зазорно вести разработку/доработку в винде, под LAMP-окружениями типа XAMPP, а на линукс-машину выкатываться через SVN.

Поэтому мы в свое время и завели такую штуку, как Windows-сборка Mediawiki4Intranet, где обычным каталогом лежали все необходимые утилиты/фреймворки (включая TeX, Graphviz, Sphinx), и любой виндовс-пользователь мог попробовать нашу вики, и даже, не приходя в создание, начать что-то править и создавать[1].

Но время идет.

MediaWiki из моностекового монолитного PHP-проекта, с классической моделью «генерация страницы на сервере» постепенно превращается в мультистековый микросервисный проект с realtime взаимодействием — так, например, появившийся WYSIWYG-редактор требует с специально поднятого сервиса парсинга на node.js, на подходе мгновенное коллаборативное редактирование в стиле «etherpad/googledocs»…

Все это уже не развернуть тупо копированием файлов, да и хлопотно тащить все это под Windows — к тому же, уже почти все вменяемые вебразработчики ушли с Windows на Mac/Linux. Впрочем, современный тренды разработки вовсе требуют вынести за скобки систему разработчика (все это холиварно и его личное дело), а все-все-все зависимости проекта инкапсулировать и виртуализировать/контейнеризировать[2]. Т.е. все, полноценная MediaWiki — больше не проект для shared hostingа[3], но и shared hosting уже почти умер для нормальных проектов, а цены на изолированный контейнер упали уже совсем ниже плинтуса[4], так что цена хостинга — уже давно не проблема.

Проблема остается только в сложности разработки и обновления нашего «бандла» — как его ставить, чтобы можно было в пару действий, с минимальной кривой обучения

  • запустить что-то работающее,
  • получить и
    • тестовую версию для локальной отладки коротким REPL-циклом — в смысле, чтобы можно было открыть файлы в IDE и править их по живому, отлаживаться в построчном отладчике с нормальным просмотром переменных и брейкпоинтами.
    • надежное конфигурирование удаленного сервера на production.
  • легко конфигурировать свои вики-инсталляции, чтобы они именно ту функциональность, которая нужна, и не больше, наследовали общие параметры.

Именно для этого, мы в свое время сделали инструмент Repo.php, специально заточенный для развертывания MediaWiki4Intranet, но…

  • Он все-таки про развертывание PHP-части, где-то конкурируя с Composer[5]
  • Развернуть и раскатать систему с нуля, поставить nod-ный стек, настроить firewall и т.п. — за пределами его функциональности.
  • Никто уже не хочет слышать ни о каких новых, и тем более самопальных системах развертывания, когда DevOps-зоопарк уже взрывает всем мозг, а горшочек все продолжает варить и они все лезут и лезут на свет.

Поэтому, мы взяли все самое распространенное-стандартное-проверенное:

  • Vagrant — для эффективного руления локальными машинами.
  • Ansible — для декларативной спецификации конфигурации Centos7[6]-машин.

Итак, сначала допустим, что у вас здоровая Linux-система[7].

  • Ставите Vagrant пакетным менеджером или просто RPM/DEB с сайта.
  • Ставите Ansible пакетным менеджером или, если вдруг он в вашем дистрибутиве очень старый или его нет — через
pip install ansible
  • Ставите VirtualBox — обязан быть в пакетах, но если нет — можно и с сайта.

Дальше:

git clone git@github.com:mediawiki4intranet/mediawiki4intranet-vagrant-ansible.git
  1. Вот короткая, почти не устаревшая лекция про архитектуру MediaWiki
  2. Самый последний писк моды это «ехал докер через докер», но сейчас мы рассмотрим промежуточную версию, с виртуальными машинами и гибким обновлением через ansible. Докер тоже будет. Но потом.
  3. И не надо к нам больше обращаться с просьбой развернуть все это за две тыщи рублей на шаредхостинге!
  4. Хоть за пару баксов в год
  5. Который, кстати, появился слишком поздно, после Repo.php — иначе бы, конечно, не стали бы так «велосипедить»
  6. Как наиболее популярных в «энтерпрайзе»
  7. Если у вас Windows, попробуйте путь с cygwinом-babunом