Простой сервер для команды веб-разработчиков. Часть 2

Продолжаю цикл статей по установке и настройке простого сервера для команды веб-разработчиков.

  1. Пользователи и SSH
  2. Веб-сервер с Apache 2, PHP 5.5, MySQL и настройка поддоменов в DNS
  3. Git-сервер, установка Composer и cron
  4. 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 кэша.

Снимок экрана 2014-01-18 в 23.39.49

Продолжение здесь.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *