Apache - самый популярный веб-сервер, в связке с php и самой популярной
СУБД MySQL дает немыслимые возможности по созданию веб-сайтов. В данное
время разработки ведутся в основном для этих систем. Настройка
представляет сложность только для новичков. Посмотрим - насколько она
проста. Рассмотрим настройку на примере Debian Linux.
Для начала стоит узнать какие пакеты имеются в репозитории Debian. Я привык пользоваться command-line интерфейсом для aptitude.
max@server:~$ su
Password:
server:/home/max# aptitude update
server:/home/max# aptitude search apache
Из того что я увидел - выбираю следующие пакеты:
apache2-mpm-prefork
apache2-utils
libapache2-mod-php5
server:/home/max# aptitude search php5
В этом поиске мне понравились следующие пакеты:
php5
libapache2-mod-php5
php5-cli
php5-common
php5-curl
php5-gd
php5-imagick
php5-mysql
php5-xmlrpc
php5-xsl
Ваш выбор может быть немного иным.
Теперь посмотрим на MySQL.
server:/home/max# aptitude search mysql
Остановлюсь на пятой версии мускула:
mysql-client-5.0
mysql-server-5.0.
Итак начем установку:
server:/home/max# aptitude install apache2-mpm-prefork apache2-utils\
libapache2-mod-php5 php5 \
php5-cli php5-common php5-curl \
php5-gd php5-imagick php5-mysql \
php5-xmlrpc php5-xsl \
mysql-client-5.0 mysql-server-5.0
Пакетный менеджер APT автоматически разрешит зависимости и
до-установит нужные пакеты, пометив их как установленные автоматически.
Что ж, прокомментирую дальнейшую настройку.
server:~# cd /etc/apache2/
server:/etc/apache2# ls -1
apache2.conf
apache2.conf.dpkg-old
conf.d
httpd.conf
mods-available
mods-enabled
ports.conf
sites-available
sites-enabled
server:/etc/apache2#
Непонятно зачем нужен файл httpd.conf - видимо для локальных
изменений. Он пуст. Дебиановская сборка Apache2 читает конфигурацию из
/etc/apache2/apache2.conf. Итак распечатаю свой файл настроек, применив
grep для удаления из вывода закомментированных строк, и добавлю к
распечатке свои комментарии.
# Так сказать корень сервера. Изменять не рекомендуется.
ServerRoot "/etc/apache2"
# Умолчательное имя сервера.
#На машине разработчика можно поставить localhost например
ServerName mestovstrech.ru
# Файл блокировки
# Насколько я понимаю - защита от старта двух серверов.
LockFile /var/lock/apache2/accept.lock
# Файл, куда будет записан ID процесса.
# Пригодится когда вы будете выключать сервер,
# хотя для пользователя это прозрачно, т.к.
# все это использует программа apache2ctl
PidFile /var/run/apache2.pid
# не вижу смысла комментировать следующие опции
# все понятно из названия
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
# Следующую секцию вполне можно и удалить
# Ведь мы используем mpm_prefork, описаный выше
<IfModule mpm_worker_module>
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
# На локальной машине , чтобы не заморачиваться
# я обычно меняю на max:max или на max:users
User www-data
Group www-data
# имена файлов дополнительной конфигурации
# внутри директорий public-доступа
AccessFileName .htaccess
# Запрет показа этих файлов через web
<Files ~ "^\.ht">
Order allow,deny
Deny from all
</Files>
# MIME-тип по умолчанию.
DefaultType text/plain
# Стоит ли распознавать имена хостов
# по IP-адресам.
# ИМХО только тормозит сервер.
HostnameLookups Off
# Расположение журнала ошибок
# Может быть переписано для виртуал-хоста
ErrorLog /var/log/apache2/error.log
# Уровено подробности. Возможные значения
# смотрите в оригинальных комментариях.
LogLevel warn
# Подключение требуемых модулей (об этом позже)
Include /etc/apache2/mods-enabled/*.load
Include /etc/apache2/mods-enabled/*.conf
# Подключение локальной конфигурации
# Этот файл не будет изменен при обновлении Apache
Include /etc/apache2/httpd.conf
# слушаемые порты.
Include /etc/apache2/ports.conf
# Стандартное именование стандартных форматов журнала доступа.
# Можно добавить свои конфигурации.
# Присвоить им свои имена.
# Подробнее в официальной документации:
# httpd.apache.org./docs/2.2/
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
# Уровень подробности публикации сведений о сервере
# в заголовках ответа.
# Подробнее о возможных значениях в оригинальном комментарии.
ServerTokens Prod
# Подпись сервера в автоматически генерируемых документах
# Возможные значения On Off EMail
ServerSignature On
#Подключение дополнительных конфигурационных файлов.
Include /etc/apache2/conf.d/
# Подключение виртуал-хостов.
NameVirtualHost *:*
Include /etc/apache2/sites-enabled/
Подключение дополнительных конфигурационных файдлов я рассматривать
не буду, т.к. менеджер пакетов обычно конфигурирует их правильно. Скажу
лишь , как их подключить. Например хотим подключить модуль Rewrite.
Делаем следующее.
maximus:~# cd /etc/apache2/mods-enabled/
maximus:/etc/apache2/mods-enabled# ln -s ../mods-available/rewrite.load
Так же нужно поступить и с виртуал-хостами.
Для начала создаем файл хоста в каталоге
/etc/apache2/sites-available/ , затем линкуем его в каталог
/etc/apache2/sites-enabled/ . Очень удобно, если надо временно
отключить виртуальный хост. Просто удаляем символическую ссылку из
/etc/apache2/sites-enabled/ - а сам файл конфига остается не тронутым и
в любой момент его снова можно подключить.
Теперь собсвенно можно перейти и к содержанию самого фала описания виртуального хоста.
#Начало описания виртуального хоста
<VirtualHost *>
# Установки для каталога
<Directory /var/www/doku.my/public_html>
AllowOverride All
</Directory>
#Мыльник админа - необязателен
ServerAdmin max@instanceof.ru
# имя сервера.
ServerName doku.my
# имена на которые сервер так же должен "откликаться"
ServerAlias www.doku.my
# Корневая директория для данного вирт. хоста
DocumentRoot /var/www/doku.my/public_html
# Файлы, которые будут обрабатываться, если файл явно не указан
DirectoryIndex index.php
# Конец описания виртуального хоста.
</VirtualHost>
В секции виртуального хоста могут присутствовать и другие директивы
конфигурации, однако описывать их все в статье по так называемому
"быстрому старту" - смысла нет. Все достаточно хоршо описано на
httpd.apache.org.