12 сентября 2011 г.

WEB-сервер на Linux. Часть 2 - Установка и настройка Apache

Установка Apache, PHP и MySQL
В установке сложного ничего нет, особенно под ОС на базе Debian - все успешно ставиться из репозиториев, а руководств в интернете полно [1, 2]. Виртуальные хосты Апачи настраиваются в соответствии со справочными статьями, а PHP и MySQL работают прямо "из коробки", не забываем поставить на root в MySQL.



$ sudo apt-get update
$ sudo apt-get install apache2 php5 php5-mysql mysql-server

Первоначальная настройка Apache
Включаем php:
$ sudo a2enmod php5

Теперь для папки с сайтами (/var/www) меняем владельца на оператора сервера и группу  на группу web-мастеров:
$ sudo chown -R operator:webmaster /var/www/

Рекурсивно устанавливаем для папок внутри www sticky-бит, чтобы вновь создаваемые файлы наследовали группу родительской папки:
$ sudo chmod g+s /var/www/

Перезапускаем Apache.
Если во время перезапуска Апачи ругается на невозможность определить FQDN сервера (примерно так: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName), значит надо задать параметр ServerName в файле /etc/apache2/httpd.conf, например так:
ServerName www.domain.name.local

Перезапускаем сервер и убеждаемся, что Апачи перестал на нас ругаться (в этот раз).

Добавляем виртуальные хосты для сайта
Для начала скопируем дефолтный конфиг в новый файл, который будет содержать настройки нашего сайта:
$ cd /etc/apache2/sites-available/
$ sudo cp ./default ./gkb1

Теперь открываем файл gkb1 и настраиваем виртуальный хост.
В качестве DocumentRoot указываем /var/www/gkb1, удаляем все лишнее и в итоге получаем следующий конфиг:

NameVirtualHost *:80
<VirtualHost *:80>
 ServerAdmin webmaster@localhost
   
 DocumentRoot /var/www/gkb1
 <Directory /var/www/gkb1>
  Options Indexes FollowSymLinks MultiViews
  AllowOverride None
  Order allow,deny
  allow from all
 </Directory>

 ErrorLog ${APACHE_LOG_DIR}/error.log
 LogLevel warn
 CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost> 

Настраиваем SSL (опционально)
Вообще, использование SSL не входит в мои планы, но настроить его все же не помешает.
Создаем папку для сертификата и сам сертификат:
$ sudo mkdir -p /etc/apache2/ssl
$ sudo make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/apache.pem

Добавляем в /etc/apache2/ports.conf порт 443 если его там нет по умолчанию (точнее по условию использования модуля ssl):
Listen 443


Настроим SSL. Для этого необходимо скопировать файл gkb1 в gkb1-ssl и отредактировать его, добавив между тегами VirtualHost параметры SSLEngine и SSLCertificateFile, а так же отредактировав номер порта в теге VirtualHost и параметре NameVirtualHost. В итоге получим следующее содержание для файла gkb1-ssl:

<VirtualHost *:443>
ServerAdmin webmaster@localhost


DocumentRoot /var/www/gkb1
<Directory /var/www/gkb1>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>


SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.pem


ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost> 

Включаем модуль ssl:
$ sudo a2enmod ssl


Выключаем дефолтные сайты и включаем наши:$ sudo a2dissite *
$ sudo a2ensite gkb1 gkb1-ssl


Для управления содержимым каталога с сайтом (/var/www/gkb1) я создам специальную группу (webmasters-gkb1), для которой будут установлены права на редактирование содержимого сайта. Для создания группы просто необходимо добавить следующую строчку в /etc/group:
webmasters-gkb1:x:1002:
где 1002 - идентификатор группы. В качестве идентификатора рекомендуется использовать первое незанятое число после 1000.

Чтобы добавить пользователя во вновь созданную группу, нужно добавить его имя в файл /etc/group в строку c названием группы, после последнего двоеточия, например, так:
webmasters-gkb1:x:1002:operator

В завершении всего, создаем папку для сайта, настраиваем права на папку и перезапускаем Apache:
$ sudo mkdir -p /etc/www/gkb1
$ sudo chown operator:webmasters-gkb1 /var/www/gkb1
$ sudo chmod g=rwxs /etc/www/gkb1
$ sudo chmod o=rx /etc/www/gkb1
$ sudo service apache2 restart

Готово! Теперь можно положить в папку с сайтом какой-нибудь файл и проверить работоспособность. Например такой:
$ echo "<? phpinfo(); ?>" > /etc/www/gkb1/index.php


Комментариев нет:

Отправить комментарий