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.

Последние изменения: %2010/%03/%22 %01:%Mar