Введение
Размещение нескольких веб-сайтов на одном сервере Ubuntu — экономичное решение для разработчиков, малого бизнеса и энтузиастов. Это руководство проведёт вас через настройку виртуальных хостов в Apache и Nginx для размещения нескольких веб-сайтов на одном сервере. К концу этого руководства вы сможете настроить сервер для эффективной обработки нескольких доменов или поддоменов.
Предыдущие статьи:
01. Введение в сервер Ubuntu – SysOSX: AI & Cloud
02. Как настроить первый сервер Ubuntu: руководство для начинающих – SysOSX: AI & Cloud
03. Освоение командной строки Linux для сервера Ubuntu – SysOSX: AI & Cloud
05. Основы сетей для сервера Ubuntu: подробное руководство – SysOSX: AI & Cloud
07.Установка исправлений и обновление сервера Ubuntu: подробное руководство – SysOSX: AI & Cloud
08. Защита сервера Ubuntu: практические шаги по усилению безопасности – SysOSX: AI & Cloud
09. Аудит и ведение журналов сервера Ubuntu
10. Инструменты мониторинга системы для сервера Ubuntu: подробное руководство – SysOSX: AI & Cloud
12. Аудит и соответствие требованиям для сервера Ubuntu: лучшие практики – SysOSX: AI & Cloud
13. Настройка сервера Ubuntu для хостинга и веб-приложений: полное руководство – SysOSX: AI & Cloud
Предварительные требования
Чтобы следовать этому руководству, убедитесь, что у вас есть:
- Сервер Ubuntu (рекомендуется версия 20.04 или новее).
- Учётная запись пользователя с правами
sudo. - Несколько доменных имён, указывающих на IP-адрес вашего сервера.
- Базовые знания команд Linux.
Часть 1. Размещение нескольких веб-сайтов с Apache
Шаг 1. Установите веб-сервер Apache
Если Apache ещё не установлен, выполните следующую команду:
sudo apt update && sudo apt install apache2 -y
Шаг 2. Настройте виртуальные хосты для каждого веб-сайта
Apache использует виртуальные хосты для обслуживания нескольких веб-сайтов с одного сервера. У каждого веб-сайта будет собственный файл конфигурации виртуального хоста.
Создание каталогов для веб-сайтов
- Создайте отдельные каталоги для каждого веб-сайта:
sudo mkdir -p /var/www/website1.com /var/www/website2.com
- Назначьте владельца этих каталогов вашей учётной записи:
sudo chown -R $USER:$USER /var/www/website1.com /var/www/website2.com
Создание файлов конфигурации виртуальных хостов
- Создайте файл конфигурации для первого веб-сайта:
sudo nano /etc/apache2/sites-available/website1.com.conf
- Добавьте следующую конфигурацию:
<VirtualHost *:80>
ServerName website1.com
ServerAlias www.website1.com
DocumentRoot /var/www/website1.com
ErrorLog ${APACHE_LOG_DIR}/website1_error.log
CustomLog ${APACHE_LOG_DIR}/website1_access.log combined
</VirtualHost>
- Создайте файл конфигурации для второго веб-сайта:
sudo nano /etc/apache2/sites-available/website2.com.conf
- Добавьте следующую конфигурацию:
<VirtualHost *:80>
ServerName website2.com
ServerAlias www.website2.com
DocumentRoot /var/www/website2.com
ErrorLog ${APACHE_LOG_DIR}/website2_error.log
CustomLog ${APACHE_LOG_DIR}/website2_access.log combined
</VirtualHost>
Включение виртуальных хостов
- Включите конфигурации виртуальных хостов:
sudo a2ensite website1.com.conf
sudo a2ensite website2.com.conf
- Перезагрузите Apache, чтобы применить изменения:
sudo systemctl reload apache2
Шаг 3. Проверьте конфигурацию Apache
- Создайте простой
index.htmlфайл для каждого веб-сайта:
echo "<h1>Welcome to Website 1</h1>" > /var/www/website1.com/index.html
echo "<h1>Welcome to Website 2</h1>" > /var/www/website2.com/index.html
- Откройте
http://website1.comиhttp://website2.comв браузере, чтобы проверить настройку.

Шаг 4. Защитите веб-сайты с помощью SSL/TLS
Установка Certbot
Установите Certbot с плагином Apache:
sudo apt install certbot python3-certbot-apache -y
Получение SSL-сертификатов
Запустите Certbot для каждого веб-сайта:
sudo certbot --apache -d website1.com -d www.website1.com
sudo certbot --apache -d website2.com -d www.website2.com
Certbot автоматически настроит SSL для обоих веб-сайтов и перенаправит HTTP-трафик на HTTPS.
Часть 2. Размещение нескольких веб-сайтов с Nginx
Шаг 1. Установите веб-сервер Nginx
Если Nginx ещё не установлен, выполните:
sudo apt update && sudo apt install nginx -y
Шаг 2. Настройте серверные блоки для каждого веб-сайта
Nginx использует серверные блоки (аналогично виртуальным хостам в Apache) для обслуживания нескольких веб-сайтов с одного сервера.
Создание каталогов для веб-сайтов
- Создайте отдельные каталоги для каждого веб-сайта:
sudo mkdir -p /var/www/website1.com /var/www/website2.com
- Назначьте владельца этих каталогов вашей учётной записи:
sudo chown -R $USER:$USER /var/www/website1.com /var/www/website2.com
Создание файлов конфигурации серверных блоков
- Создайте файл конфигурации для первого веб-сайта:
sudo nano /etc/nginx/sites-available/website1.com
- Добавьте следующую конфигурацию:
server {
listen 80;
server_name website1.com www.website1.com;
root /var/www/website1.com;
index index.html;
location / {
try_files $uri $uri/ =404;
}
error_log /var/log/nginx/website1_error.log;
access_log /var/log/nginx/website1_access.log;
}
- Создайте файл конфигурации для второго веб-сайта:
sudo nano /etc/nginx/sites-available/website2.com
- Добавьте следующую конфигурацию:
server {
listen 80;
server_name website2.com www.website2.com;
root /var/www/website2.com;
index index.html;
location / {
try_files $uri $uri/ =404;
}
error_log /var/log/nginx/website2_error.log;
access_log /var/log/nginx/website2_access.log;
}
Включение серверных блоков
- Создайте символические ссылки, чтобы включить серверные блоки:
sudo ln -s /etc/nginx/sites-available/website1.com /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/website2.com /etc/nginx/sites-enabled/
- Проверьте конфигурацию Nginx:
sudo nginx -t
- Перезагрузите Nginx, чтобы применить изменения:
sudo systemctl reload nginx
Шаг 3. Проверьте конфигурацию Nginx
- Создайте простой
index.htmlфайл для каждого веб-сайта:
echo "<h1>Welcome to Website 1</h1>" > /var/www/website1.com/index.html
echo "<h1>Welcome to Website 2</h1>" > /var/www/website2.com/index.html
- Откройте
http://website1.comиhttp://website2.comв браузере, чтобы проверить настройку.
Шаг 4. Защитите веб-сайты с помощью SSL/TLS
Установка Certbot
Установите Certbot с плагином Nginx:
sudo apt install certbot python3-certbot-nginx -y
Получение SSL-сертификатов
Запустите Certbot для каждого веб-сайта:
sudo certbot --nginx -d website1.com -d www.website1.com
sudo certbot --nginx -d website2.com -d www.website2.com
Certbot автоматически настроит SSL для обоих веб-сайтов и перенаправит HTTP-трафик на HTTPS.
Справочные материалы
Заключение
Размещение нескольких веб-сайтов на одном сервере Ubuntu — практичный и экономичный способ управления веб-приложениями или доменами. Независимо от того, используете ли вы Apache или Nginx, процесс включает настройку каталогов, конфигурацию виртуальных хостов или серверных блоков и защиту веб-сайтов с помощью SSL/TLS-сертификатов через Certbot. Следуя этому руководству, вы сможете эффективно размещать несколько доменов или поддоменов, обеспечив оптимизацию сервера для масштабируемости и безопасности.
И Apache, и Nginx — мощные веб-серверы, и выбор между ними часто зависит от ваших конкретных требований. Apache предоставляет широкие возможности конфигурации и совместимость, а Nginx отличается производительностью и обработкой одновременных подключений. Какой бы вариант вы ни выбрали, это руководство даст вам базовые знания для эффективного управления несколькими веб-сайтами.
Следите за следующей темой: Управление хранилищем и дисками на сервере Ubuntu В этом предстоящем руководстве вы узнаете, как настроить инициализацию дисков, создавать разделы для разных файловых систем и расширять диски, включая монтирование в файловую систему. Не пропустите!
7 thoughts on “14. Host Multiple Websites on a single Ubuntu Server: Useful tips”