14. Размещение нескольких веб-сайтов на одном сервере Ubuntu: полезные советы

Введение

Размещение нескольких веб-сайтов на одном сервере Ubuntu — экономичное решение для разработчиков, малого бизнеса и энтузиастов. Это руководство проведёт вас через настройку виртуальных хостов в Apache и Nginx для размещения нескольких веб-сайтов на одном сервере. К концу этого руководства вы сможете настроить сервер для эффективной обработки нескольких доменов или поддоменов.


Предыдущие статьи:

01. Введение в сервер Ubuntu – SysOSX: AI & Cloud

02. Как настроить первый сервер Ubuntu: руководство для начинающих – SysOSX: AI & Cloud

03. Освоение командной строки Linux для сервера Ubuntu – SysOSX: AI & Cloud

04. Управление пользователями и разрешениями на сервере Ubuntu: подробное руководство – SysOSX: AI & Cloud

05. Основы сетей для сервера Ubuntu: подробное руководство – SysOSX: AI & Cloud

06. Установка и управление программным обеспечением на сервере Ubuntu: полное руководство – SysOSX: AI & Cloud

07.Установка исправлений и обновление сервера Ubuntu: подробное руководство – SysOSX: AI & Cloud

08. Защита сервера Ubuntu: практические шаги по усилению безопасности – SysOSX: AI & Cloud

09. Аудит и ведение журналов сервера Ubuntu

10. Инструменты мониторинга системы для сервера Ubuntu: подробное руководство – SysOSX: AI & Cloud

11. Централизованное ведение журналов для сервера 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”

Оставить комментарий