Главная > Open Source, веб-обзоры, Разное > Сервер в один клик: поднимаем веб-демон быстро. Статья для журнала Хакер

Сервер в один клик: поднимаем веб-демон быстро. Статья для журнала Хакер

9 июля 2009

122Статья написана специально для журнала Хакер и опубликована в бумажной версии (в несколько сокращенной и отредактированной версии). Редакторскую версию из бумажной версии можно прочитать на сайте журнала, ниже я публикую свой оригинальный вариант,  без правок или ограничения на объем материала.

Тебя убеждает друг, поспорив на ящик пива, что за пять минут не развернуть полноценный веб-сервер, с поддержкой всех языков, Ruby, PHP или Python? Или десяти минут не хватит, что бы поставить и сразу поработать с Drupal, Alfresco, SugarCRM или Moodle? Соглашайся, будете потом все выходные пить бесплатное пиво!

Введение

Нисколько не хочу задеть чувства серьезных хакеров и администраторов, знающих опции конфигурирования Apache и настройки JRuby, но во многих случаях очень хочется иметь именно ту волшебную кнопку "Сделать, чтобы работало". Не качать и компилировать, править исходники и потом копаться в настройках, заодно проверяя совместимость всего со всем и с твоим характером. Ну типа дали в универе задание написать отчет об современных системах постройки сайтов (CMS) или пригласили как эксперта поставить бедным учителям систему дистанционного образования Moodle. А то и просто надо проверить работу небольшого скриптика, взламывающего хеши паролей новым методом. Ради любопытства, поднять какой-то особый сервер, встроить его в любимую кофеварку с Linux-ом и запускать там java-сервлеты. Да думаю ты сам придумаешь, зачем и когда использовать то, о чем сейчас расскажу.

Первым путем для запуска веб-скриптов является установка на компьютере полноценного LAMP сервера, для чего надо почитать много разной документации (или эту статью в нашем журнале), а потом еще пару-тройку дней провозится с настройками. Но есть и второй путь - использовать готовые так называемые сборки или стеки, которые представлены в виде как бы одной единственной программы, которая ставиться удобным и красивым инсталлятором, а внутри содержит все необходимое. Это и веб-сервер, и интерпретаторы нужных языков, обычно, РНР и perl, и необходимые библиотеки и модули, а также часто простую панель управления, чтобы не разбираться что за чем запускать и останавливать, а просто нажать ту самую заветную кнопку "Работать".

BitNami - сервера и приложения за минуту

Именно такими вещами занимается компания BitNami, которая производит и выкладывает в отрытый доступ свои продукты. В первую очередь это набор стеков технологий - в набор входят веб-сервер, обычно Apache, база данных MySQL, а также все дополнительные библиотеки и модули. В пакеты входят интерпретаторы языков программирования, в зависимости от типа стека это PHP, Python, Ruby или Java. Дополняется все это системами администрирования типа phpMyAdmin для управления базами данных. Если ты хочешь быстро начать разработку или просто запустить какой-то скрипт, то такого стека вполне достаточно, чтобы уже за пять минут, после скачивания и установки, начать полноценную работу.

Для эксперементов доступы такие пакеты:

  • DjangoStack - для Python-приложений на базе Django, содержит Apache, MySQL, Python и SQLite.
  • JRubyStack - для маньяков, предпочитающих Ruby на Java. Содержит сервер приложений GlassFish, Sun JDK, Ruby On Rails, Tomcat, Subversion и СУБД MySQL. Это один из самых сложных стеков, так как позволяет не только запускать приложения, но и вести разработку, содержит инструменты для экспорта вашего творения в war-файл и развертывания его на сервере Tomcat. По сути это полностью готовая среда разработки, тестирования и работы, стоит добавить только IDE для Ruby, как мы писали в этой статье [ссылка на статью про IDE]
  • LAMPStack - самый просто стек для платформы Linux, содержит классический набор Apache, PHP и MySQL (вместе с системой администрирования phpMyAdmin). Если тебя бросает в дрожь при упоминание MySQL, бери LAPPStack - там все то же самое, только база заменена на PostgreSQL.
  • MAMPStack и MAPPStack - тот самый LAMP, который для думающих иначе. Короче - Apache, PHP и MySQL или PostgreSQL для операционной системы MacOS X (Как на Intel процессорах, так и PowerPC). Ну а если совсем крутой - то есть и для Solaris - SAMPStack, говорят, что OpenSolaris неплохой выбор для домашнего сервера.
  • WAMPStack и WAPPStack - это для поклонников Windows, а в остальном - то же, что и классический LAMP.
  • RubyStack - содержит все для разработки веб-приложений на Ruby и Rails, базу данных MySQL и Subversion, а также дополнительные Ruby библиотеки. Правда, в этом пакете нет веб-сервера, так что его вам придется ставить самостоятельно, но ведь постигшего дао RoR это не остановит!

bitnami_soft

Используя эти пакеты ты просто запускаешь инсталлятор и получаешь готовую рабочую среду со всеми настройками. Но ведь просто стеков мало, да и клюнут на них лишь начинающие разработчики да любители поиграться. BitNami пошли еще дальше, ведь не просто так затевалось все это. У их распоряжении есть интереснейшая технология, позволяющая создавать инсталляции любого веб-приложения. При этом также не надо ничего настраивать и конфигурировать - все программы, от простейшего WordPress до сложнейших бизнес-систем SugarCRM или JasperServer, ставятся просто в пару кликов и сразу готовы к работе. Конечно, это не для реального применения на сервере, скорее - просто демонстрационные версии популярного ПО. В реальности это отличная альтернатива VMware Applience, когда программа поставляется с заранее собранной полной платформой, в виде образа виртуальной машины. Но зачем тащить за собой целую ОС и сотни мегабайт, если часто достаточно небольшой исполняемой среды. Так что BitNami сделала отличную альтернативу виртуальным машинам для многих случаев. Кстати, по всем правилам Web 2.0, ты можешь голосовать за программы, которые будут вскоре первыми доступны в виде пакетов - сейчас идет голосование и выбирается с десятка популярного ПО, что же первым перенести на стек BitNami. И не только автору статьи кажется, что Asterisk идеальный кандидат - это приложение сложно просто так, без подготовки, поставить и запустить, а вот попробовать очень даже хочется.

Но BitNami это лишь решение для быстрого показа уже готовых программ и веб-приложений. А что делать, если все же хочется самому начать разработку, но времени и знаний на развертывания всего набора серверов нет?

Конструкторы серверов - все, что надо веб-программисту.

Для быстрой разработки веб-скриптов или запуска на своем компьютере небольшого хостинга есть куча простых решений, и не важно, Windows у вас, Linux или крутая OpenBSD. Достаточно загрузить установочный пакет и запустить его - через пять минут можешь открывать свою любимую IDE и кодировать веб-сайт. Как минимум, у тебя сразу будет вместе с веб-сервером и база данных и система управления вем хозяйством, и даже простой почтовый сервер. Крутые пакеты, кроме этого, предоставят еще и свою систему быстрой настройки виртуальных серверов - тогда создать сайт www.microsoft.com на своем компьютере будет раз плюнуть. Да и просто устанавливать и тестировать различные веб-скрипты лучше на разных доменах, а не безликом локалхосте.

denwer
Самый продвинутым из подобных разработок является Джентльменский пакет веб-разработчика, или Denwer, разработанный Дмитрием Котеровым, автором нескольких книг по РНР. Пакет доступный только для Windows платформы и включает в себя, в базовом варианте, сразу настроенный веб-сервер, почтовый сервер для отладки, PHP, perl и MySQL, при этом все умещается в крохотный инсталлятор размером в 4 Мб. Это означает, что все лишнее с дистрибутива безжалостно выброшено в угоду миниатюрности. Но ты всегда можешь расширить тот или иной компонент, загрузив модули с сайта или же просто использовав родные дистрибутивы MySQL или РНР. Denwer ставится в указанную директорию и имеет свою панель запуска и остановки, полностью затирая за собой все следы, когда дана команда остановки. Поэтому сервер можно ставить на любом компьютере и даже на флешку и всегда носить с собой кусочек интернета. Главным же в Denwer-е отмечу систему виртуальных доменов, для создания сайта по адресу site.com достаточно в директории home создать папку с именем сайта, а внутри - папку www, которая и будет корневой для сайта. Конечно, все эти адреса будут работать только после перезапуска Denwer-а, так как для нее создаются записи в системном файле hosts и автоматически создается vhosts.conf для Apache. Так что тебе, в принципе, ничего не надо особо делать - создал структуру директорий и вперед, создавать сайты!

!INFO! - для расширения базового пакета на сайте есть множество дополнений - модули PHP, СУБД PostgreSQL, полная версия MySQL, пакеты ActivePerl и Python и даже Parser 3.
xampp
Если же ты ищешь решение для более серьезной работы, здесь уже давно обосновался лидер - XAMPP, который работает во всех распространенных ОС - Windows/Linux/MacOS/Solaris. Ты можешь выбрать или Lite, по сути упрощенный и легкий пакет для быстрой разработки или поднятия сервера, когда надо лишь базовые возможности, и полную, включающую в себя, кроме Apache/MySQL/PHP еще множество дополнительных библиотек, встроенный акселлератор РНР скриптов, FTP-сервер, поддержку SSL и многое другое. В пакете есть и собственная система управления и отслеживания статуса сервера, небольшая программа для выборочного запуска или остановки отдельных сервисов. Ещё больше есть в виде аддонов, например, оттуда можешь взять Tomcat, более новый Perl или версии библиотек для разработки и отладки. По возможностям, XAMPP Lite примерно равен нашему Denwer-у, разве что в нем больше библиотек, да и размер солидный (шутка ли, 43 Мб против всего лишь 4-х у Denwer-а), а вот системы виртуальных хостов нету, по моему нигде больше вообще. Если нужно - вот здесь тебе все же придется поработать руками и головой, вручную настраивая их через конфиги Apache. Впрочем, знание настроек сервера, если ты метишь в солидные программисты, еще никому не помешал.
uniformserver
А вот другая разработка, UniformServer, во многом более продвинутая и дружественная к пользователю, чем все остальные. При этом включает в себя все основные компоненты, хоть и несколько устаревших версий (ведь последняя версия сервера, 3.5 вышла в середине 2008 года, однако уже идет разработка следующей версии), а также отличную и мощную систему администрирования и управления всеми аспектами и настройками прямо в браузере. Настроить Apache, сконфигурировать MySQL или посмотреть параметры PHP - все это можно сделать при помощи простой веб-панели. Дополнительно можешь загрузить небольшую программу, UniTray, которая вынесет наиболее нужные действия в меню в трее. Среди расширений, доступных на сайте, отмечу FTP-сервера, для Java  разработки ты можешь выбирать между классическим Tomcat или продвинутым Resin. По сравнению с XAMPP размер инсталляционного файла просто поражает - всего 7 Мб, к тому же девиз разработчиков очень привлекательный - "Just unpack and RUN!" Минусом можно считать только поддержку Win32 платформы, однако часто ли тебе надо работать на MacOS или Solaris? UniformServer станет идеальным выбором, если ты с друзьями создаешь веб-студию или развертываешь сервер для тестирования своих скриптов в случае фрилайнса.
uniform_server_admin
!INFO! Команда разработчиков Uniform-а пошла еще дальше, предоставив семейство MiniServer - набор небольших пакетов, каждый из которых самодостаточный для демонстрации того или иного скрипта, программы или функциональности. Такой подход аналогичен продуктам BitNami, только построен на открытой основе. Сейчас есть несколько MiniServer-ов, например - Apache, Apache + PHP, MySQL 4/5, ReverseProxy, Joomla, PhpBB, XOOPS, WordPress и MediaWiki. Каждый сервер может работать как portable-версия или системный сервис. Загрузить их можно пока что только на странице проекта на SourceForge.net

В чем некоторая ограниченность всех подобных серверов, так это то, что их компоненты заранее подобраны и настроены. То есть ты просто скачиваешь и используешь, максимум, что можешь, это доставлять расширения. Обычно в составе таких пакетов есть одна или две версии РНР, 4 и 5, но что делать, если очень хочется работать с нескольким версиями, и не одной-двумя, а больше? Ставить столько сборок того же Denwer-а или XAMPP, сколько разных версий надо, а потом мучатьсая с копированием своих разработок на каждый сервер в отдельности? Ну или долго копаться и изучать возможности настройки сервера, разнеся различные версии интерпретатора РНР по разным виртуальным хостам, но эта работа по сложности приближается к созданию собственного проекта уровня XAMPP Lite. А что если... ага, и здесь уже другие подумали, создав WAMPserver, ничем особо не выделяющийся среди аналогов, кроме. Кроме встроенной изначально панели управления через крохотную программу в трее, где в контекстном меню можно настроить любые параметры. Для РНР можно выборочно включать и выключать модули расширения и опции конфигурации, то же самое доступно и для Apache c MySQL. Вторым отличительным моментом стала возможность установить и использовать сразу несколько версий каждого компонента, получая такой себе конструктор. Хочешь Apache 1.3 + PHP 5.1.2 и MySQL 5.1.30? Пожалуйста, пара кликов мышью в меню и все работает.  И сейчас это единственный дистрибутив, который сразу установит тебе самые последние версии всех компонентов, без необходимости вручную что-либо скачивать и доустанавливать. WAMPserver идеальный инструмент для тестирования приложений, которые должны работать в любых условиях, даже если на сервере PHP двухлетней давности. Порекомендуй этот продукт другу, который делает сайты или местной веб-студии, думаю, его благодарности хватит на всю компанию!
wampserver
!INFO! Современные мобильные платформы уже составляют конкуренцию ноутбукам и десктопам. Превратить твою Nokia E90 или N95 в полноценный сервер для веб-разработки поможет пакет PAMP - персольный Apache, MySQL и PHP. Это уж точно, персональнее некуда!

Если все же речь зашла об организации сервера в случае небольшой веб-студии или группы фрилансеров, то обрати внимание на еще один проект - Naraio. Он изначально ориентирован на организацию сервера для группы разработчиков, содержит кроме классического набора компонент, еще и дополнительные программы, установка которых на другие пакеты будет затруднительная. Тебе в помощь будет и OpenLDAP, и Subversion и дополнительные интерпретаторы Python и Ruby, а также интегрированный пакет Trac для организации процесса разработки в коллективе. Все это не просто отдельные программы, а настроенные на совместною работу в единой среде, к примеру - Trac и SVN использует OpenLDAP для управления учетными записями, поэтому один раз установив этот сервер, дальше достаточно точно добавлять пользователей через панель управления (phpldapadmin). С таким набором можно смело начинать свою фирму!

Shutdown server или выводы

Как видишь, для организации простого сервера совсем не обязательно потратить целый день на перебор различных вариантов программ, копаться в настройках и конфигурациях. Для большинства случаев, если что-то запустить по быстрому, просто для работы или испытания, достаточно готовых пакетов, в которые сразу входят все необходимые компоненты, которые настроены на совместную работу. Такие пакеты часто не требуют инсталляции и готовы работать сразу после запуска, не важно, с флешки или жесткого диска. Даже обычный мобильный телефон с легкостью превращается в переносной сервер!  Для создания собственного сервера и активных экспериментов с PHP-скриптами я бы рекомендовал отечественный Denwer, если хочешь попробовать, как твой проект будет работать в разных окружениях, испытай его при помощи WAMPserver-а, в котором доступны даже самые последние альфа и бета-версии PHP и MySQL. А если друг попросит помочь им на фирме, поставь UniformServer или Naraio и всем будет счастье! Но помни, что такая простота обманчива - если не разбираться в тонкостях работы всей этой системы, никогда не станешь по настоящему профессиональным разработчиком.

Дополнение или месть мелких

Если считаешь, что все эти сервера для ламеров и неудачников, ты прав! Разрабатывая крупные программы, во многих случаях хорошо бы встроить какой-то простой веб-сервер, иногда же ради одного маленького скрипта жаль устанавливать монстров типа Apache. Здесь тебе помогут маленькие и специализированные сервера, призванные исполнять часто всего одну функцию или скрипт, зато очень и очень быстро. Например, Pi3Web - многопоточный HTTP 1.1 сервер на С++, оптимизированный для работы с CGI/FastCGI протоколами, может использовать встроенный интерпретатор РНР или исполнять Java- сервлеты. А при помощи Yass очень просто реализовать аналог медиа-сервера с Apple iTunes интерфейсом на Flash-e, который сможет раздавать по сети твою MP3-музыку. Посмотри также на httcld, небольшой сервер с встроенным интерпретатором Tkl, который предназначен для поддержки веб-интерфейсов Linux-программ. Для поклонников С++ (и ненавистников java) есть CPPSERV - простой сервер, реализующий Servlet-API для программ на С++. На нем можно написать очень быстрые многопоточные демоны, используя только С++ и никакого РНР! В противовес этому, для Java  есть простейший встраиваемый серверный движок Simple, который несмотря на миниатюрность, имеет мощный API и расширяемую компонентную структуру. Его отлично можно использовать для небольших сетевых приложений на Java, исключая необходимость в сложных серверах вроде Tomcat. Хорошим реальным применением этого движка стал RESTles - фреймворк для построения REST-сервисов (это простые сетевые приложения, которые реагируют на HTTP-команды).

  1. 15 июля 2009 в 00:19 | #1

    Варто подивитися також на проект rBuilder.
    Дуже велика кількість готових імеджів
    http://www.rpath.org/search?search=&type=Products

  2. 18 июля 2009 в 13:04 | #2

    из конструкторов серверов рекомендую AppServ — сам его использую и очень доволен.

Комментирование отключено.