Коротенькая зарисовка по настройкам Web-сервера Apache2 для работы с двумя сайтами и более. Web-сервер на Ubuntu 14.04.5.
Для того, что бы сайты были доступны с публичных сетях необходимо выполнить несколько условий:
- Обзавестись, так называемым, "белым", статическим (не динамическим, постоянным) IP адресом. Если используем хостинг, то это уже чужая головная боль.
- Определиться с названием сайтов и арендовать доменные имена у какого-нибудь регистратора имён. Рекомендую выбирать регистратора, который предоставляет редактировать записи в своих DNS серверах. Если сайты планируем хранить дома, в пыльном коридоре, то придётся клянчить у своего оператора связи прописать A-записи для IP адреса. Повторюсь, это если регистратор зажлопил свои DNS сервера.
- Ну, и сам сервер на котором у нас будет расположен Apache и сами сайты.
Каждый из этих пунктов требует определённых настроек. О каждом по-порядку.
По первому пункту, беседу нужно вести с оператором связи если, хостинг домашний. Просим выдать белый IP адрес и если есть тех. возможность, то первый пункт можно считать выполненным. Даже если нет, то второй пункт будет альтернативой.
По второму пункту, определяемся с доменным именем, с хостингом, и ищем публичный DNS, через который мы расскажем всему миру, что наш сайт имеет такой-то IP адрес. Представим, что регистратор, у которого арендованы доменные имена предоставляет нам возможность редактировать свои DNS сервера. Тогда записи должны быть примерно такого плана:
Тем самым мир узнает о соответствии доменного имени = IP адресу. О пока обновления просасываются займёмся настройкой Web-сервера, что бы встретить армию читателей, ботов и хакеров во всеоружии =)
По третьему пункту, устанавливаем Apache2. О его установке и первоначальной настройке более чем достаточно написано в интернетах. Представим, что он у нас установлен и показывает содержимое директории /var/www/html. Это директория, используемая по-умолчанию в Apache2 для расположения сайта. Можно использовать и её для первого сайта, но мы определим наши сайты в отдельные директории. Делается это для того, что бы разнести логирование виртуальных хостов.
Итак, наши сайты будут жить в директории /var/www/site1/ и /var/www/site2 . Помещаем наши сайты в соответствующие директории. Заходим в директорию с сайтами
cd /var/www/
сразу выставляем права на эти директории
chown -R site1 site2
Далее правим конфигурацию самого Apache2. Идём в главный файл конфигурации. Помимо всего прочего должна быть указана директория, где находятся наши сайты:
PidFile ${APACHE_PID_FILE}
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}
HostnameLookups Off
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
# Include module configuration:
IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf
# Include list of ports to listen on
Include ports.conf
<Directory />
Options FollowSymLinks
AllowOverride None
Require all denied
</Directory>
<Directory /usr/share>
AllowOverride None
Require all granted
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
AccessFileName .htaccess
<FilesMatch "^\.ht">
Require all denied
</FilesMatch>
LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
IncludeOptional conf-enabled/*.conf
# Include the virtual host configurations:
IncludeOptional sites-enabled/*.conf
Самое важное в нашем случае - это опция <Directory /var/www/>. Далее создаём файлы конфигурации для наших сайтов в директории /etc/apache2/sites-available/. Для каждого сайта свой файл. Содержимое этих файлов примерно таково:
ServerName site-name.ru
ServerAlias www.site-name.ru
ServerAdmin Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.
DocumentRoot /var/www/site-name/
ErrorLog ${APACHE_LOG_DIR}/error-site-name.log
CustomLog ${APACHE_LOG_DIR}/access-site-name.log combined
</VirtualHost>
Осталось активировать сайты:
sudo a2ensite site1.ru sudo a2ensite site2.ru
на что мы получим предложение перезапустить apache2:
sudo service apache2 reload
Если ошибок не вышло, то на этом первоначальную настройку Web-сервера для работы с двумя сайтами можно считать завершённой.
Хочу добавить, что это далеко не всё, что нужно сделать для беззаботной жизни с публичной сети интернет. Сайты станут доступны и самое время позаботиться об их безопасности, но это уже совсем другая статья.
Удачи!