Продолжаю цикл статей по установке и настройке простого сервера для команды веб-разработчиков.
- Пользователи и SSH
- Веб-сервер с Apache 2, PHP 5.5, MySQL и настройка поддоменов в DNS
- Git-сервер, установка Composer и cron
- memcached и FTP-сервер
Теперь рассмотрим настройку веб-сервера с Apache 2, PHP 5.5 и MySQL, т.к. он понадобится для дальнейших шагов, и настройку поддоменов в DNS.
Веб-сервер
Установка
apt-get install apache2 php5 php5-mysql mysql-server
Включаем mod_rewrite:
a2enmod rewrite
Устанавливаем дополнительные библиотеки к PHP:
apt-get install php5-curl php5-dev php5-mysql php5-gd php5-imagick
Сайты
Определимся с сайтами. Для демонстрации пусть будут у нас следующие сайты:
- mysite.loc — основной сайт
- something.mysite.loc — сайт разрабатываемого проекта
- files.mysite.loc — сайт с файлами, загружаемыми через фтп
Сайты будут располагаться по соответствующим путям:
- /var/www/mysite.loc/web/
- /var/www/something.mysite.loc/web/
- /var/www/files.mysite.loc/web/
В первых двух случаях дополнительный каталог «web» не обязателен, но в третьем он пригодится нам, когда будем настраивать FTP. Впрочем, если есть проекты, написанные с использованием фреймворка Symfony, то каталог web будет полезен.
Кроме того, пусть каталоги с логами будут также располагаться в каталогах сайтов:
- /var/www/mysite.log/logs/
- /var/www/something.mysite.loc/logs/
- /var/www/files.mysite.loc/logs/
Данные каталоги нужно создать от имени root. А в случае с files.mysite.loc установить права 777 (в т.ч. для web):
cd /var/www/ mkdir mysite.loc cd mysite.loc/ mkdir web mkdir logs cd /var/www/ mkdir something.mysite.loc cd something.mysite.loc/ mkdir web mkdir logs cd /var/www/ mkdir files.mysite.loc chmod 777 files.mysite.loc cd files.mysite.loc mkdir web chmod 777 web/ mkdir logs
Т.к. предполагается, что это корпоративный dev-сервер, то, наверное, не будем особо заморачиваться по созданию отдельных конфигурационных файлов для хостов, а внесём изменения прям в default.
Итак, прописываем сайты прямо в /etc/apache2/sites-available/000-default.conf с помощью mcedit (или другого редактора, например, nano):
mcedit /etc/apache2/sites-available/000-default.conf
Шаблон записи хоста:
<VirtualHost *:80> ServerAdmin email@сервер ServerName хост ServerAlias www.хост DocumentRoot /var/www/хост/web/ <Directory /var/www/хост/web/> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> ErrorLog /var/www/хост/logs/error.log LogLevel warn CustomLog /var/www/хост/logs/access.log combined </VirtualHost>
Поддомены располагайте после основного сайта. Для поддоменов также незачем указывать ServerAlias с www, если не настроены DNS соответствующим образом. В итоге, для наших трёх хостов получится что-то вроде:
<VirtualHost *:80> ServerAdmin webmaster@mysite.loc ServerName mysite.loc ServerAlias www.mysite.loc DocumentRoot /var/www/mysite.loc/web/ <Directory /var/www/mysite.loc/web/> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> ErrorLog /var/www/mysite.loc/logs/error.log LogLevel warn CustomLog /var/www/mysite.loc/logs/access.log combined </VirtualHost> <VirtualHost *:80> ServerAdmin webmaster@something.mysite.loc ServerName something.mysite.loc DocumentRoot /var/www/something.mysite.loc/web/ <Directory /var/www/something.mysite.loc/web/> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> ErrorLog /var/www/something.mysite.loc/logs/error.log LogLevel warn CustomLog /var/www/something.mysite.loc/logs/access.log combined </VirtualHost> <VirtualHost *:80> ServerAdmin webmaster@files.mysite.loc ServerName files.mysite.loc DocumentRoot /var/www/files.mysite.loc/web/ <Directory /var/www/files.mysite.loc/web/> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> ErrorLog /var/www/files.mysite.loc/logs/error.log LogLevel warn CustomLog /var/www/files.mysite.loc/logs/access.log combined </VirtualHost>
Сохраняем изменения и перезагружаем веб-сервер:
service apache2 restart
Проверяем, всё ли работает как положено.
Сейчас следует принять меры для повышения безопасности ваших сайтов, ограничив каталог, в который можно получить доступ с помощью PHP приложений. Подробнее в статье по ссылке.
Как добавить поддомен в DNS
Достаточно просто добавить новую DNS запись к домену, где указать имя, например, «files». Тип A. А в качестве адреса ввести IP сервера. И дождаться обновления DNS кэша.
Продолжение здесь.