Чому варто розміщувати кілька веб-сайтів на виділеному сервері?
Вибір виділеного сервера від Valebyte для розміщення кількох веб-сайтів пропонує значні переваги порівняно зі спільним хостингом або навіть деякими хмарними середовищами. Ви отримуєте:
- Неперевершена продуктивність: Ваші веб-сайти використовують виділені ресурси CPU, RAM та сховища, забезпечуючи стабільну швидкість та чуйність, навіть при високому трафіку. Жодних "шумних сусідів", що впливають на вашу продуктивність.
- Повний контроль: Повний root-доступ дозволяє налаштовувати кожен аспект вашого серверного середовища, від операційної системи до специфічних конфігурацій Nginx, ідеально адаптованих до потреб ваших застосунків.
- Покращена безпека: З виділеним сервером ви відповідаєте за свої протоколи безпеки. Ви можете впроваджувати розширені фаєрволи, системи виявлення вторгнень та власні заходи безпеки без втручання інших користувачів.
- Економічна ефективність: Для зростаючого портфоліо веб-сайтів або застосунків консолідація на одному потужному виділеному сервері може бути економічнішою, ніж керування кількома меншими хостинг-планами.
- Масштабованість: Хоча ви ділите сервер, ви все ще маєте повну потужність вашої виділеної машини. У міру зростання ваших сайтів у вас буде достатньо запасу, перш ніж потрібно буде розглядати додаткове обладнання.
- Централізоване управління: Оптимізуйте оновлення, резервне копіювання та моніторинг для всіх ваших розміщених сайтів з однієї точки доступу, спрощуючи завдання системного адміністратора.
Передумови та вимоги до сервера
Перш ніж зануритися в конфігурацію Nginx, переконайтеся, що у вас є наступне:
1. Виділений сервер від Valebyte
Вам знадобиться потужний та надійний виділений сервер. Наші пропозиції виділених серверів забезпечують необхідну потужність та стабільність для ефективного запуску кількох екземплярів Nginx. Переконайтеся, що ваш сервер має достатньо ядер CPU, RAM та дискового простору для розміщення очікуваного трафіку веб-сайту та даних.
2. Операційна система
Цей посібник зосереджений на операційних системах на базі Linux, зокрема Ubuntu (20.04 LTS або новішої) або Debian. Команди можуть дещо відрізнятися для CentOS/RHEL, але принципи конфігурації Nginx залишаються незмінними.
3. Зареєстровані доменні імена
Ви повинні мати принаймні два доменних імені (наприклад, website1.com та website2.com), зареєстровані, а їхні DNS 'A' записи повинні вказувати на публічну IP-адресу вашого виділеного сервера. Розповсюдження DNS може зайняти кілька годин, тому переконайтеся, що це зроблено заздалегідь.
4. Root-доступ через SSH
Вам знадобиться SSH-доступ до вашого виділеного сервера з обліковим записом користувача, який має sudo привілеї (або прямий root-доступ, хоча використання користувача sudo зазвичай рекомендується для безпеки).
ssh your_user@your_server_ip
5. Базові знання командного рядка Linux
Знайомство з базовими командами Linux (наприклад, cd, mkdir, ls, nano або vim) буде корисним.
Покроковий посібник: Налаштування кількох веб-сайтів за допомогою Nginx
Виконайте ці кроки, щоб налаштувати Nginx для кількох веб-сайтів на вашому виділеному сервері Valebyte.
Крок 1: Оновіть систему та встановіть Nginx
Спочатку переконайтеся, що список пакетів вашого сервера оновлено, а всі існуючі пакети оновлено до останніх версій. Потім встановіть Nginx.
sudo apt update
sudo apt upgrade -y
sudo apt install nginx -y
Після встановлення Nginx повинен запуститися автоматично. Ви можете перевірити його статус та увімкнути його для запуску при завантаженні:
sudo systemctl start nginx
sudo systemctl enable nginx
sudo systemctl status nginx
Якщо у вас увімкнено фаєрвол (наприклад, UFW на Ubuntu), вам потрібно буде дозволити трафік Nginx. Перевірте доступні профілі Nginx:
sudo ufw app list
Ви, ймовірно, побачите 'Nginx HTTP' (порт 80), 'Nginx HTTPS' (порт 443) та 'Nginx Full' (обидва 80 та 443). Дозвольте необхідні профілі:
sudo ufw allow 'Nginx HTTP'
# Якщо ви плануєте негайно використовувати SSL/HTTPS, також дозвольте:
sudo ufw allow 'Nginx HTTPS'
sudo ufw enable # Тільки якщо UFW ще не увімкнено
sudo ufw status
Крок 2: Створіть структури каталогів для кожного веб-сайту
Кожен веб-сайт потребує власного кореневого каталогу, де будуть розміщуватися його файли. Поширеною практикою є створення їх у /var/www/.
Для website1.com:
sudo mkdir -p /var/www/website1.com/html
Для website2.com:
sudo mkdir -p /var/www/website2.com/html
Ви можете повторити це для стількох веб-сайтів, скільки плануєте розмістити. Далі призначте право власності на ці каталоги вашому користувачеві без root-прав та встановіть відповідні дозволи, щоб Nginx міг читати файли.
sudo chown -R $USER:$USER /var/www/website1.com/html
sudo chmod -R 755 /var/www/website1.com
sudo chown -R $USER:$USER /var/www/website2.com/html
sudo chmod -R 755 /var/www/website2.com
Для тестування створіть простий файл index.html у каталозі html кожного сайту:
echo '<h1>Ласкаво просимо на Веб-сайт 1!</h1>' | sudo tee /var/www/website1.com/html/index.html
echo '<h1>Ласкаво просимо на Веб-сайт 2!</h1>' | sudo tee /var/www/website2.com/html/index.html
Крок 3: Створіть блоки сервера Nginx (віртуальні хости)
Nginx використовує "блоки сервера" (аналогічні віртуальним хостам Apache) для визначення конфігурацій для окремих веб-сайтів. Ці файли зазвичай зберігаються в /etc/nginx/sites-available/, а потім символічно посилаються на /etc/nginx/sites-enabled/ для їх активації.
Створіть блок сервера для website1.com:
sudo nano /etc/nginx/sites-available/website1.com
Додайте наступну конфігурацію:
server {
listen 80;
listen [::]:80;
root /var/www/website1.com/html;
index index.html index.htm index.nginx-debian.html;
server_name website1.com www.website1.com;
location / {
try_files $uri $uri/ =404;
}
error_page 404 /404.html;
location = /404.html {
internal;
}
# Optional: Nginx logging for this site
access_log /var/log/nginx/website1.com_access.log;
error_log /var/log/nginx/website1.com_error.log;
}
Створіть блок сервера для website2.com:
sudo nano /etc/nginx/sites-available/website2.com
Додайте подібну конфігурацію, налаштувавши директиви root та server_name:
server {
listen 80;
listen [::]:80;
root /var/www/website2.com/html;
index index.html index.htm index.nginx-debian.html;
server_name website2.com www.website2.com;
location / {
try_files $uri $uri/ =404;
}
error_page 404 /404.html;
location = /404.html {
internal;
}
# Optional: Nginx logging for this site
access_log /var/log/nginx/website2.com_access.log;
error_log /var/log/nginx/website2.com_error.log;
}
Розуміння директив блоку сервера Nginx:
| Директива | Опис | Приклад |
|---|---|---|
listen |
Визначає IP-адресу та порт, на якому Nginx повинен слухати. 80 для HTTP, [::]:80 для IPv6 HTTP. |
listen 80; |
root |
Визначає кореневий каталог документів для запитів, де Nginx шукатиме файли. | root /var/www/website1.com/html; |
index |
Визначає файли за замовчуванням, які Nginx повинен шукати при запиті каталогу. | index index.html index.htm; |
server_name |
Визначає, на які доменні імена повинен відповідати цей блок сервера. Важливо для віртуального хостингу. | server_name website1.com www.website1.com; |
location / {} |
Блок, який обробляє запити для конкретних URI. Блок / обробляє всі запити. |
location / { try_files $uri $uri/ =404; } |
try_files |
Перевіряє наявність файлів у вказаному порядку та обслуговує перший знайдений. Якщо жодного не знайдено, виконує внутрішнє перенаправлення на останній аргумент. | try_files $uri $uri/ =404; |
access_log |
Визначає шлях до файлу журналу доступу для цього блоку сервера. | access_log /var/log/nginx/site_access.log; |
error_log |
Визначає шлях до файлу журналу помилок для цього блоку сервера. | error_log /var/log/nginx/site_error.log; |
Крок 4: Увімкніть блоки сервера
Щоб увімкнути нові блоки сервера, створіть символічні посилання з sites-available на sites-enabled. Також видаліть файл конфігурації Nginx за замовчуванням, щоб уникнути конфліктів.
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/
sudo rm /etc/nginx/sites-enabled/default
Крок 5: Перевірте конфігурацію Nginx та перезапустіть
Перед перезапуском Nginx завжди перевіряйте конфігурацію на наявність синтаксичних помилок. Це запобігає простою через неправильні конфігурації.
sudo nginx -t
Якщо тест успішний, ви повинні побачити повідомлення на кшталт: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok та nginx: configuration file /etc/nginx/nginx.conf test is successful.
Тепер перезапустіть Nginx, щоб застосувати зміни:
sudo systemctl restart nginx
Крок 6: Налаштуйте записи DNS
Переконайтеся, що записи 'A' для website1.com, www.website1.com, website2.com та www.website2.com (та будь-яких інших доменів) правильно вказують на публічну IP-адресу вашого виділеного сервера Valebyte. Ви керуєте цими записами через свого реєстратора доменів або провайдера DNS. Зміни DNS можуть зайняти до 24-48 годин для повного глобального розповсюдження, хоча часто це відбувається набагато швидше.
Крок 7: (Необов'язково) Захистіть за допомогою SSL/TLS (Let's Encrypt)
Для сучасної веб-безпеки та SEO використання HTTPS є критично важливим. Let's Encrypt надає безкоштовні сертифікати SSL/TLS, а Certbot автоматизує процес з Nginx.
Встановіть Certbot та плагін Nginx:
sudo apt install certbot python3-certbot-nginx -y
Запустіть Certbot для вашого першого домену:
sudo certbot --nginx -d website1.com -d www.website1.com
Дотримуйтесь підказок. Certbot автоматично змінить вашу конфігурацію Nginx, отримає сертифікат та налаштує автоматичне поновлення. Повторіть це для кожного домену:
sudo certbot --nginx -d website2.com -d www.website2.com
Ви можете перевірити процес автоматичного поновлення:
sudo certbot renew --dry-run
Якщо ви раніше дозволили 'Nginx HTTP' лише у своєму фаєрволі, тепер не забудьте дозволити 'Nginx HTTPS' або 'Nginx Full'.
Шукаєте сервер, який просто працює?
Valebyte VPS — NVMe, підтримка 24/7, розгортання за 60 секунд.
Практичні випадки використання мультисайтового хостингу на виділеному сервері
Виділений сервер Valebyte, налаштований для кількох веб-сайтів з Nginx, відкриває світ можливостей:
- Веб-агентства та розробники: Розміщуйте клієнтські веб-сайти, середовища розробки, проміжні сайти та особисті проекти на одній потужній машині. Це спрощує управління та забезпечує послідовну, високопродуктивну платформу.
- Портфоліо електронної комерції: Керуйте кількома інтернет-магазинами для різних брендів, ліній продуктів або регіональних варіацій. Кожен магазин отримує виділені ресурси, забезпечуючи швидке завантаження для покупців.
- Мережі контенту: Запускайте мережу блогів, новинних сайтів, форумів або ресурсних порталів. Це ідеально підходить для SEO-стратегій, які включають взаємопов'язані контентні хаби або управління різноманітними потоками контенту.
- Внутрішні бізнес-застосунки: Розміщуйте інтранет вашої компанії, інструменти управління проектами, CRM-системи або інші внутрішні веб-застосунки, зберігаючи конфіденційні дані у вашому контрольованому виділеному середовищі.
- Фронтенди ігрових серверів: Хоча самі ігрові сервери можуть працювати на певних портах, Nginx може розміщувати веб-панелі, форуми або цільові сторінки для ваших різних екземплярів ігрових серверів, все на одній базовій інфраструктурі.
- Середовища CI/CD: Надайте виділені веб-інтерфейси для інструментів безперервної інтеграції/безперервного розгортання (наприклад, Jenkins, панелі GitLab CI) або розміщуйте кілька тестових середовищ для різних проектів.
- Стрімінгові сервіси: Розміщуйте веб-фронтенди з низькою затримкою для стрімінгових платформ, ефективно доставляючи медіа-активи або керуючи інтерфейсами користувача.
- Інтерфейси управління базами даних: Безпечно розміщуйте веб-інструменти адміністрування баз даних (наприклад, phpMyAdmin, Adminer) для кількох баз даних, що використовуються різними застосунками.
Вирішення поширених проблем
Навіть при ретельному плануванні можуть виникнути проблеми. Ось як їх діагностувати та вирішити:
1. Тест конфігурації Nginx не вдається (sudo nginx -t)
- Симптоми: Повідомлення про помилки, що вказують на синтаксичні помилки, невідомі директиви або відсутні файли.
- Рішення: Уважно прочитайте повідомлення про помилку. Зазвичай воно вказує на точний номер рядка та файл, де сталася помилка. Поширені помилки включають відсутні крапки з комою (
;), неправильно написані директиви, неправильні шляхи або незакриті дужки ({}). - Приклад:
nginx: [emerg] unknown directive "rooty" in /etc/nginx/sites-available/website1.com:5– Це вказує на друкарську помилку в директивіrootу рядку 5.
2. Веб-сайт не завантажується / Сторінка Nginx за замовчуванням / 502 Bad Gateway / 403 Forbidden
- Симптоми: Ваш браузер показує вітальну сторінку Nginx за замовчуванням, помилку 502 Bad Gateway, помилку 403 Forbidden або просто не завантажується.
- Рішення (Сторінка за замовчуванням): Перевірте директиву
server_name. Вона повинна точно відповідати домену, до якого ви намагаєтеся отримати доступ. Переконайтеся, що ваш DNS повністю розповсюдився. Якщо у вас є кілька блоків сервера, Nginx може обслуговувати перший в алфавітному порядку, якщо жоден конкретнийserver_nameне відповідає. - Рішення (502 Bad Gateway): Це зазвичай означає, що Nginx не зміг підключитися до вищестоящого сервера (наприклад, PHP-FPM). Перевірте, чи працює PHP-FPM:
sudo systemctl status php*-fpm. Перевірте журнали помилок Nginx для отримання деталей. - Рішення (403 Forbidden): Це часто вказує на проблеми з дозволами. Nginx не має доступу для читання до файлів або каталогів вашого веб-сайту. Двічі перевірте команди
sudo chownтаsudo chmodдля ваших каталогів/var/www/. Також перевірте директивуrootу вашому блоці сервера. - Рішення (Веб-сайт не завантажується): Перевірте журнали помилок Nginx (
/var/log/nginx/error.log) та журнали помилок конкретного сайту (наприклад,/var/log/nginx/website1.com_error.log) для підказок.
3. Помилки SSL / Веб-сайт не завантажується через HTTPS
- Симптоми: Браузер попереджає про незахищене з'єднання, невідповідність сертифіката або веб-сайт не завантажується через HTTPS.
- Рішення: Переконайтеся, що ваш фаєрвол дозволяє трафік HTTPS (порт 443). Перевірте, чи Certbot успішно отримав та налаштував сертифікат для вашого домену. Перевірте блок сервера Nginx для конфігурації HTTPS (зазвичай додається Certbot). Переконайтеся, що запис 'A' вашого домену правильно вказує на ваш сервер.
4. Зміни не набувають чинності
- Симптоми: Ви внесли зміни до блоку сервера, але веб-сайт поводиться як раніше.
- Рішення: Чи запускали ви
sudo nginx -tтаsudo systemctl restart nginxпісля внесення змін? Nginx потрібно перезавантажити або перезапустити, щоб він прийняв нові конфігурації.
5. Високе використання ресурсів на одному сайті впливає на інші
- Симптоми: Один веб-сайт відчуває сплеск трафіку, і всі інші сайти на сервері сповільнюються.
- Рішення: Це обмеження розміщення кількох сайтів на одному сервері. Моніторте ресурси вашого сервера (CPU, RAM, Disk I/O) за допомогою таких інструментів, як
htop,top,free -h,iostat. Оптимізуйте сайт з високим трафіком (кешування, оптимізація коду, оптимізація бази даних). Якщо проблема постійна, розгляньте можливість оновлення вашого виділеного сервера Valebyte або перенесення проблемного сайту на власний виділений екземпляр.
Найкращі практики для управління мультисайтовим середовищем на виділеному сервері
Щоб підтримувати надійне та ефективне мультисайтове середовище на вашому виділеному сервері Valebyte, розгляньте ці найкращі практики:
- Моніторинг ресурсів: Регулярно моніторте використання CPU, RAM, дискового вводу/виводу та мережі вашого сервера. Такі інструменти, як Netdata, Grafana з Prometheus, або прості утиліти командного рядка, як
htopтаfree -h, можуть надати цінну інформацію. Це допоможе вам передбачити вузькі місця та проактивно масштабувати ресурси вашого виділеного сервера Valebyte. - Регулярне резервне копіювання: Впровадьте надійну стратегію резервного копіювання для всіх ваших веб-сайтів та конфігурацій сервера. Це повинно включати як резервні копії файлової системи, так і дампи баз даних, що зберігаються безпечно поза сайтом. Ваш виділений сервер Valebyte забезпечує ідеальне середовище для налаштування власних рішень для резервного копіювання.
- Оновлення безпеки: Підтримуйте актуальність вашої операційної системи, Nginx, PHP-FPM та будь-якого іншого серверного програмного забезпечення. Регулярні патчі безпеки є критично важливими для захисту всіх ваших розміщених веб-сайтів від вразливостей.
- Детальне ведення журналів: Налаштуйте журнали доступу та помилок Nginx для кожного веб-сайту. Регулярно переглядайте ці журнали, щоб виявляти проблеми з продуктивністю, загрози безпеки або помилки застосунків. Це життєво важливо для налагодження та підтримки працездатності сайту.
- Централізовані інструменти управління (необов'язково): Для великої кількості сайтів розгляньте можливість використання панелі управління веб-хостингом, такої як cPanel або Plesk. Хоча цей посібник зосереджений на ручному налаштуванні Nginx, ці панелі можуть автоматизувати багато завдань, включаючи створення блоків сервера, управління SSL та надання користувачів. Однак вони додають накладні витрати та зменшують прямий контроль.
- Виділені IP-адреси: Хоча Server Name Indication (SNI) Nginx дозволяє використовувати кілька сертифікатів SSL на одній IP-адресі, можуть бути конкретні сценарії, коли виділена IP-адреса для кожного сайту є корисною (наприклад, певні застарілі системи, специфічні юридичні вимоги або поштові служби, прив'язані до IP-репутації домену). Valebyte може надати додаткові IP-адреси за потреби.
- Пули PHP-FPM для ізоляції: Якщо ви розміщуєте PHP-застосунки, налаштуйте окремі пули PHP-FPM для кожного веб-сайту. Це забезпечує кращу ізоляцію ресурсів та дозволяє запускати різні версії PHP або конфігурації для різних сайтів без конфліктів.
- Контроль версій: Використовуйте Git або іншу систему контролю версій для коду вашого веб-сайту та навіть файлів конфігурації Nginx. Це допомагає відстежувати зміни, співпрацювати та повертатися до попередніх версій за потреби.