Данная статья будет полезна как администраторам домашних сетей, которые наверняка имеют внутрисетевую страничку (а порой и огромный медиа-портал), так и закоренелым сисадминам некоторых веб-хостингов. Я рассмотрю самый популярный на данный момент и успешно зарекомендовавший себя web-server Apache. Из плюсов сразу же хочется выделить надёжность, функциональность, открытость исходного кода, кроссплатформенность и гибкость настройки. Из минусов - только отсутствие единого стандартного интерфейса для администрирования. Также Apache позволяет подключать внешние модули, такие, как PHP, MySQL, Perl, SSL и многие другие. На данный момент существует три ветки разработки сервера: 2.2.*, 2.0.* и 1.3.* Рекомендуется ветка 2.2.*, т.к. в оставшихся не реализуются нововведения, а лишь исправляются мелкие уязвимости, в основном, связанные с DDoS атакой (отказ в обслуживании). Я рассмотрю Apache 2.2.4 под управлением Windows 2003 Server. Пожалуй, начнём...
Основа
Первое, что нам потребуется, - это, собственно, сам веб-сервер. Он распространяется свободно под лицензией GPL, так что "взять" его можно без проблем по ссылке httpd.apache.org.
Инсталляция не займёт особого труда, могу лишь посоветовать установить его на отдельный логический диск в целях безопасности (пример пути: d:\usr\local\apache). Этот путь был выбран не случайно, ибо такая иерархия принята в *nix семействах. При установке вводим имя домена, название сайта и почтовый адрес (необходимо для связи с администраторам в случае неполадки). Если необходимо, чтобы наш сервер был доступен извне (Internet), мы должны ввести зарегистрированное доменное имя (например, site.by). При успешной установке должен появиться значок в системном трее и при наборе в браузере адреса: http://localhost (стандартное доменное имя) мы увидим стартовую страничку веб-сервера Apache. Сейчас откроем основной конфигурационный файл - d:\usr\local\apache\conf\httpd.conf. Сразу же бросаются в глаза строки, помеченные символом "#", - это комментарии. Чтобы любые изменения вступили в силу, требуется перезагрузка сервера. Первое, что нам необходимо, это указать путь для нашего сайта в строке DocumentRoot (по умолчанию это d:/usr/local/Apache/htdocs). В принципе, это делается по желанию, но лучше указать, к примеру, d:/home/localhost/www (не забудьте создать данную папку на диске). Далее, если мы сменили рабочую директорию сайта, следует изменить в конфигурационном файле строчку <Directory/> на <Directory "d:/home/localhost/www">. Делаем то же самое, но для CGI-скриптов: создаём папку d:/home/localhost/cgi-bin и меняем строку <Directory/> на <Directory "с:/home/localhost/cgi-bin">. Если мы напортачили при установке с почтой или названием сайта, всегда можно изменить это в строках ServerAdmin и ServerName.
Сейчас займёмся наладкой виртуальных хостов, эта опция будет необходима, если у нас будет более одного сайта. Для этого добавляем в httpd.conf следующие строки:
NameVirtualHost test.by <VirtualHost test.by> ServerAdmin <почта_администратора_test.by> DocumentRoot c:/home/test.by/www ServerName TEST.BY ErrorLog logs/error.log CustomLog logs/access.log common ScriptAlias /cgi-bin/ "с:/home/test.by/cgi-bin/" </VirtualHost>
Создаём папку d:/home/test.by и стартовую страницу index.html Перезагружаем Apache и проверяем.
Мы настраивали Apache вручную, редактируя конфигурационные файлы. А вообще, существуют графические оболочки для конфигурирования, наиболее известная из них - ApacheConf.
Если наш сайт не будет ограничен только HTML и JavaScript, то основные модули, такие, как PHP, можно взять здесь: www.php.net/downloads.php. Точно такая же процедура, как и при установке веб-сервера: выбор платформы и версии (на данный момент рекомендуется версия 5, т.к. 6-я ещё нестабильна). В зависимости от ваших целей, можно установить модули MySQL (СУБД) и SSL (протокол безопасной передачи данных), доступные по адресам www.mysql.com и www.openssl.org, соответственно.
Безопасность
Самое первое правило - это ограничение прав в операционной системе. Под Администратором необходимо чётко определить права на запись, чтение и выполнение веб-сервера, ни в коем случае эти три пункта не должны выходить за пределы своей корневой папки, с внутренними файлами проще - всё зависит от веб-приложения. В *nix необходимо Apache выделить в отдельную группу и пользователем root необходимо выполнить команду chmod 0777 на папку www, и chmod 0600 - на корневую. Каждая папка в директории сайта должна иметь индексовую страницу (index.html или index.php). Это позволит избежать просмотра содержимого папок. Очень важной особенностью будет создание файла доступа .htaccess (например, можно запретить доступ к папке по маске: DA deny from 195.114.*.*). Не следует также забывать, что в httpd.conf содержится информация о правах доступа к объектам.
Рассмотрим конфигурацию интерпретатора PHP. Конфигурационный файл - php.ini (/usr/local/php5/php.ini). Основная переменная, отвечающая за безопасность выполнения приложений, - это safe_mode=on(off). С одной стороны, частичная безопасность, с другой - функциональные ограничения. Вам придётся выбирать настройки в зависимости от функциональности веб-приложения (так, многие форумы не могут работать при safe_mode=on). Рекомендуется установить переменные register_globals=off и allow_url_fopen=off (они запрещают передавать параметр к определённому файлу, что часто способствует атаке типа php-including). Также необходимо запретить опасные функции: system, exec, shell_exec, passthru (выполняют удалённые команды) и phpinfo (полная информация о php.ini). Осуществляется это путём добавления их в переменную disable_functions=...
Напоследок пользователям Windows платформы хочу посоветовать проект Denwer.ru - дистрибутив для отладки веб-приложений, cgi-скриптов и баз данных. "Денвер" версии 3 - это многофункциональное приложение, содержащее веб-сервер Apache, со встроенными многочисленными модами вплоть до Ajax, которое оптимизировано и готово к работе с первых секунд. Однако, не рекомендую его использовать в качестве полноценного веб-сервера, ибо в него включены некоторые приложения, открывающие потенциально уязвимые места.
Максим ГУРСКИЙ
Комментарии
Небольшое дополнение.
К несомненным плюсам "Денвер" относится: простота установки и использования, русскоязычный форум (если вопрос задан грамотно и ранее не обсуждался несомненно будет дан ответ, ну, исходя из моего опыта общения), техдок. на русском языке.
Минусы: Нелюбовь "Денвер" к ZendOptimizer.
"Денвер" я бы рекомендовал начинающим.
Раз мы заговорили об Веб-серверах вспомним альтернативы Денверу.
Vertrigo - простой в установке набор, состоящий из Apache, PHP, MySQL, SQLite, SQLiteManager, PhpMyAdmin и Zend Optimizer для Windows. Установочный пакет "все в одном"
Минусы: Нет русского языка, Нет Perl (все попытки прикрутить Perl к VertrigoServ успехом так и не увенчались, спишем на мои кривые ручки ;), письмо разработчику осталось без ответа - может ему не понравился мой польский???)
Убогий форум.
Но вцелом сборка оставляет хорошее впечатление.
XAMPP - нашпигованный всем что только можно англоязычный пакет с версиями под Lin, Win, Mac и солярку. Может запускать сервера как службами, так и по образцу Денвера
Для Windows,Windows 98, NT, 2000, 2003, XP и Vista.
Включает в себя: Apache, MySQL, PHP + PEAR, Perl, mod_php, mod_perl, mod_ssl, OpenSSL, phpMyAdmin, Webalizer, Mercury Mail Transport System for Win32 and NetWare Systems v3.32, Ming, JpGraph, FileZilla FTP Server, mcrypt, eAccelerator, SQLite, and WEB-DAV + mod_auth_mysql.
На мой взгляд самый лучший из представленных здесь веб-серверов.
WLMP - легковесная сборка веб-сервера.
Apache2triad.net - включает в себя Apache 2, mod_python, mod_ssl, mod perl, OpenSSL 0.9.7e with SSLCert, MySQL with MyODBC, winMYSQLadmin, PostgreSQL, PHPmyadmin, pgAdmin, phpPgAdmin, PHPXMail, UebiMiau, SlimFTPd (PHPsFTd), PHP with Zend Optimizer, Dbg and Xdebug, Pear, Smarty, Perl with Apache::ASP and PPM, Python with Py2exe, MySQL-python , pyPgSQL, Boa-Constructor.
TopServer - Начиная с TopServer 2.0 в состав TopServer:
входит внутренний FTP сервер SlimFTPd, который обеспечивает FTP доступ к директориям веб-сервера. Кроме того, в состав средств администрирования входит удобный и функциональный менеджер FTP сервера, с помощью которого Вы можете управлять самим FTP сервером через панель администрирования TopServer
входит Zend Optimizer 3, внутренний редактор файлов конфигурации Apache, PHP, MySQL, набор простых PHP скриптов (~400 шт) и многое другое. Более подробно тут: хttp://www.topserver.ru/
Small HTTP server. Ничего не могу сказать - не использовал.
WOS - англоязычный пакет, включает помимо серверов набор известных скриптов. Перед скачиванием позволяет выбрать набор компонентов, которые будут включены в архив (показывает размер этого архива). Выбор из следующего списка:
* Apache2 (Version 2.2.4)
* Apache2_SE (Version 2.2.4)
* ImageMagick (Version 4.2.9)
* MySQL5 (Version 5.0.41)
* MySQL5_SE (Version 5.0.41)
* PHP4 (Version 4.4.7)
* PHP4_SE (Version 4.4.7)
* PHP5 (Version 5.2.3)
* PHP5_SE (Version 5.2.3)
* Drupal (Version 5.3)
* GTD-PHP (Version 0.7)
* Joomla (Version 1.0.12)
* Mambo (Version 4.6)
* MediaWiki (Version 1.10.1)
* Moodle (Version 1.8.2)
* OS_Commerce (Version 2.2)
* OpenDB (Version 1.0RC6)
* PHPMyAdmin (Version 2.11.2.2)
* PunBB (Version 1.2.15)
* TYPO3 (Version 4.1.3)
* Taskfreak (Version 0.6.1)
* Wordpress (Version 2.3.1)
* knowledgeroot (Version 0.9.8.3)
* xoops (Version 2.0.16)
И напоследок выскажу личное мнение: Linux лучше всего подходит для установки WebServerа
== XXI век ==
Для продакшена -- Lighttpd / nginx
Для разработки -- встроенный в Django сервер
>>В *nix необходимо Apache выделить в отдельную группу и пользователем root необходимо выполнить команду chmod 0777 на папку www, и chmod 0600 - на корневую
если бы кто-то из моих подчиненных суппортов поставил 777 на докрут сайта - я бы лично оторвал руки. в лечебно-профилактических целях. 755 хватало во все времена при условии использования mod_php и знания утилиты chown; а если php_cgi+mod_fastcgi - то phpsuexec и 750.
з.ы. уважаемый webdev, nginx/lighthttpd имеет смысл использовать в случае высоконагруженных stand-alone (в основном) сайтов с большим числом статики. если у вас шаред на 500 аккаунтов по 3-4 сайта на каждом - такое решение вас не спасет.
p.s. для хостинг решений (только *nix) отлично подходит DirectAdmin (Apache 2, php 5, несколько mail демонов, DNS, FTP, MySQL и т.д.) "всё в одном", красивая панель, удобство конфигурации и плагины...
и с первым апачем оно тоже умеет работать - custombuild вместо customapache.
а еще у меня в контакт-листе асечном двое девелоперов ДАшных :)