На этой странице

Настройка виртуальных хостов на Ubuntu Server 22.04


Управление процессами Apache

HTTP-сервер Apache – наиболее распространенный в сети веб-сервер. Он предоставляет множество полезных функций, включая динамическую загрузку модулей, надежную поддержку мультимедиа и широкую интеграцию с другим популярным программным обеспечением.

Теперь давайте посмотрим, как управлять веб-сервером с помощью systemctl.

Чтобы остановить веб-сервер, введите:

systemctl stop apache2

Запустить его поможет команда:

systemctl start apache2

Для перезапуска используйте команду:

systemctl restart apache2

Во время настройки Apache можно часто перезагружать, не сбрасывая соединений. Для этого нужно использовать команду:

systemctl disable apache2

Чтобы добавить Apache в автозагрузку, используйте эту команду:

systemctl enable apache2

Виртуальные хосты

На веб-сервере Apache вы можете использовать виртуальные хосты (в Nginx это блоки server) для изоляции настроек и размещения нескольких доменов на одном сервере. Здесь используется условный домен example.com, который нужно заменить доменом вашего сайта.

В Ubuntu 22.04 веб-сервер Apache по умолчанию предоставляет один включенный виртуальный хост, который обслуживает каталог /var/www/html. Этого хватит для работы одного сайта, но если вы хотите разместить несколько сайтов, вам нужно создать новые виртуальные хосты. Создайте структуру каталогов в /var/www для сайта example.com, а /var/www/html оставьте как каталог по умолчанию, который будет обслуживаться, если запрос клиента не соответствует другим сайтам.

Создайте каталог для your_domain:

mkdir /var/www/your_domain

Затем укажите права на каталог с помощью переменной $USER:

chown -R $USER:$USER /var/www/your_domain

Права должны быть предоставлены, если вы не меняли значение umask, которое устанавливает права файлов по умолчанию. Чтобы убедиться, что права предоставлены и пользователь может работать с файлами, нужно ввести команду:

chmod -R 755 /var/www/your_domain

Затем создайте образец страницы index.html с помощью nano или другого текстового редактора:

nano /var/www/your_domain/index.html

Добавьте в файл следующий код HTML:

<html>
    <head>
        <title>Welcome to Your_domain!</title>
    </head>
    <body>
        <h1>Success!  The your_domain virtual host is working!</h1>
    </body>
</html>

Сохраните и закройте файл.

Нужно создать файл виртуального хоста с правильными директивами, чтобы Apache мог обслуживать этот контент. Чтобы напрямую не изменять файл конфигурации по умолчанию, расположенный в /etc/apache2/sites-available/000-default.conf, мы создадим новый в /etc/apache2/sites-available/your_domain.conf:

nano /etc/apache2/sites-available/your_domain.conf

Вставьте в файл следующий блок настроек. Он похож на конфигурации по умолчанию, но содержит правильный домен и каталог:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName your_domain
    ServerAlias www.your_domain
    DocumentRoot /var/www/your_domain
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Обратите внимание, мы обновили DocumentRoot на наш новый каталог, а ServerAdmin на адрес электронной почты, к которому может получить доступ администратор сайта your_domain. Также мы добавили две директивы: ServerName, которая устанавливает базовый домен, который должен соответствовать этому определению виртуального хоста, и ServerAlias – определяет дополнительные имена, которые должны соответствовать базовому имени.

После того, как закончите, сохраните и закройте файл.

Включим файл с помощью a2ensite:

a2ensite your_domain.conf

Отключите сайт по умолчанию, определенный в 000-default.conf:

a2dissite 000-default.conf

Далее проверим ошибки настроек:

apache2ctl configtest

Вывод должен быть следующим:

Syntax OK

Перезапустите Apache, чтобы изменения вступили в силу:

systemctl restart apache2

Теперь Apache должен обслуживать ваше доменное имя. Для проверки перейдите по адресу http://your_domain, вы должны увидеть что-то вроде этого:

Отключение модуля:

sudo a2dismod <имя модуля>

После включения или отключения модулей необходимо выполнить перезагрузку apache:

sudo systemctl restart apache2

Включаем необходимые модули, которые не включены:

sudo a2enmod expires
sudo a2enmod headers
sudo a2enmod rewrite
sudo a2enmod ssl

Модули как expires и headers снижают загруженность сервера. Модуль expiries задает время, для браузера на которое должен кэшироваться полученная страница.

Модуль Rewrite даёт возможность применять запрашиваемые URL на лету, это актуально для создания ЧПУ ссылок и т д.

А модуль ssl нужен для шифрования трафика по средствам SSL сертификата. После включения и отключения модулей не забывайте делать перезагрузку apache2 и также после внесения изменений в конфигурационных файлах.

Создаем свой файл настроек

Начиная с версии Ubuntu Saucy (13.10) свои настройки следует писать в директории: /etc/apache2/conf-available, активировать настройки следует с помощью команды a2enconf.

Создадим свой файл настроек myconf.conf, в директории /etc/apache2/conf-available, что бы все работало и мог читаться файл настроек .htaccess, по умолчанию при установке эти настройки отключены, запишем в него свои настройки:

nano /etc/apache2/conf-available/myconf.conf

Вставим следующий код:

<IfModule dir_module>
	DirectoryIndex index.php index.html index.htm index.shtml index.html.var
</IfModule>

<Directory />
	AllowOverride All
	Options -Indexes +Includes +FollowSymLinks 
	Require all granted  
</Directory>

<Directory /var/www/>
	Options -Indexes +Includes +FollowSymLinks
	AllowOverride All
	Require all granted
</Directory>

Сохраняем и закрываем файл.

Файл myconf.conf
Файл myconf.conf

Активируем файл настроек:

a2enconf myconf.conf

Перезапустите Apache:

systemctl restart apache2

Directory задает настройку прав доступа к любой директории файловой системы.

AllowOverride – определяет нужно ли позволять читать .htaccess файлы в указанной директории, это файлы настроек и аналогичным синтаксисом. All – разрешено все, None – задает значение не читать эти файлы.

DocumentRoot – задает значение из какого каталога подгружать файлы для показа посетителям сайта.

Options – задает политики доступа веб-сервера какие предоставить разрешения предоставить тот или иной доступ в указанной директории. Для примера рассмотрим значение, All – разрешает все, FollowSymLinks – разрешен переход по символическим ссылкам.

Indexes – отображает содержимое указанного каталога при отсутствии файла index.

Require – устанавливает политики доступа к этому каталогу. Require all denied – запрещено всем, Require all granted – разрешено всем. Применимо использование вместо all значение user или group чтобы явно задать политику подключения пользователя, как показано на примере ниже.

Order – позволяет управлять доступом к указанной выше директории. Применимы два значения Allow, Deny – разрешить для всех, кроме указанных или Deny, Allow – запретить для всех, кроме разрешенных.

На данном этапе Apache готов работать с файлом .htaccess. Нужные модули подключены, также можно внести все настройки в главный файл конфигурации, который находится в директории /etc/apache2/ .

sudo nano /etc/apache2/apache2.conf

На следующей странице сайта будет описано как настроить виртуальный хост и подключить файл из папки includes, создать файл .htaccess, и настроить директории сайта.