- []
LAMP - Linux + Apache + PHP + Mysql (Быстрый старт)
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.

