у меня есть личный сервер под управлением proxmox. я хочу использовать этот сервер для хостинга нескольких сайтов. в proxmox уже установлен контейнер с NginxProxyManager.
как лучше организовать мою идею? установить контейнер с какой-либо панелью управления сайтами? или поднять несколько контейнеров и в каждый установить по wordpress?
Точка входа для веб трафика будет все равно одна, а то как реализовать сами сайты уже зависит от детального ТЗ.
- Надо ли предоставлять доступ к виртуальному серверу и сайту другим людям?
- Надо ли ограничивать ресурсы под сайт или аккаунт?
- Есть ли опыт в разворачивании сайтов на голом сервере?
Если 1 контейнер с админкой, то это аналог shared hosting, тут рекомендовали одну панель, аналог ISP Manager. В ней можно завести пользователей и дать им доступ к сайтам, но SSH/FTP желательно не давать и функционал будет ограничен той панелью, которая имеется, как правило, это будет несколько популярных СУБД, PHP, возможность запуска WP без докера, может даже docker контейнеры. Но на уровне PVE будет сложно разделять ресурсы между сайтами.
Несколько LXC контейнеров с WP внутри это уже аналог VPS на openvz, тут можно каждому сайту выделить диск, оперативки и процессор, можно давать SSH доступ для разворачивания, но можно и в каждый контейнер поставить по веб админке
На все вопросы я отвечу “да”. Думаю, стоит установить какую-либо панель аналог ISP Manager. Спрашиваю потому что не знаю как к этому подступиться так, чтобы потом не переделывать. Хочу сделать сразу и красиво. Но всё-таки просто…
Сам не пробовал, но в ТГ группе советовали вот эту штуку
Вот статья на хабре Туториал: как создать универсальный сервер для дома или небольшого офиса / Хабр
я эту панельку пользую, еще до выхода aapanel
Поставьте просто Apache, Nginx или Caddy и т.д. и сконфигурируйте виртуальные хосты.
На примере Apache:
Для blog.lan :
cоздайте /var/www/blog.lan/public_html/index.html
<html>
<head>
<title>Blog</title>
</head>
<body>
<h1>Blog! This is virtual host!</h1>
</body>
</html>
Файл конфигурации виртуального хоста:
/etc/apache2/sites-available/blog.lan.conf
<VirtualHost *:80>
ServerAdmin admin@blog.lan
ServerName blog.lan
ServerAlias www.blog.lan
DocumentRoot /var/www/blog.lan/public_html
ErrorLog ${APACHE_LOG_DIR}/blog.lan_error.log
CustomLog ${APACHE_LOG_DIR}/blog.lan_access.log combined
</VirtualHost>
Для forum.lan :
cоздайте /var/www/forum.lan/public_html/index.html
<html>
<head>
<title>Forum</title>
</head>
<body>
<h1>Forum! This is virtual host!</h1>
</body>
</html>
Файл конфигурации виртуального хоста:
/etc/apache2/sites-available/forum.lan.conf
<VirtualHost *:80>
ServerAdmin webmaster@forum.lan
ServerName forum.lan
ServerAlias www.forum.lan
DocumentRoot /var/www/forum.lan/public_html
ErrorLog ${APACHE_LOG_DIR}/forum.lan_error.log
CustomLog ${APACHE_LOG_DIR}/forum.lan_access.log combined
</VirtualHost>
Активация файлов конфигурации хостов:
sudo a2ensite blog.lan.conf
sudo a2ensite forum.lan.conf
Необходимо отключить файл конфигурации, использующийся по умолчанию:
sudo a2dissite 000-default.conf
Перезапустить Apache:
sudo systemctl restart apache2
Таким образом, под управлением Apache у вас будут два сайта http://blog.lan и http://forum.lan на одном IP.
Caddy и Nginx сильно не отличаются и настраиваются аналогично.
В общем я остановился на NPMPlus и Alpine LXC (в нем у мена пара Astro Web-framework и обычный Nginx) + WiKi.JS в отдельном Debian LXC (под Alpine я не смог WiKi.JS корректно запустить)
для нескольких сцайтов достаточно было просто поставить линупс, nginx, пхп и бд
и сделать виртуальные хосты, как сказали выше
Сильно зависит от посещаемости этих сайтов, и на каких стеках они будут работать. При прочих равных условиях, я бы предпочел под каждый сайт выделить отдельную lxc. Проще контролировать нагрузку, проще отлавливать баги, проще читать логи, если свалится один сайт, это никак не отразится на других.
У меня так работает уже больше 10 лет несколько сайтов. много чего пробовал, в итоге пришел к такой конфигурации. с роутера порты 80 и 443 пробрасываются на отдельную lxc - nginx proxy. с нее уже разбрасываются по разным доменам каждый домен на отдельной lxc. нагрузка 10 - 50 тыс. уников в сутки.
Я пересел на Caddy. Мне нравится.
LXC + Alpine + Caddy
Пример Caddyfile
# Simple Caddyfile configuration
# Перенаправляем на другие сервисы
# Использование явного указания протокола http://
# в URL или IP адресе отключает в Caddy шифрование
# Удобно в процессе отладки
http://filebrowser.domain.lab {
reverse_proxy 192.168.1.20
}
http://dashboard.domain.lab {
reverse_proxy 192.168.1.30
}
# Отправляем на виртуальные хосты
http://site-1.domain.lab {
root * /var/www/site1
file_server
}
http://site-2.domain.lab {
root * /var/www/site2
file_server
}
А если нужно что-то более ухитрое, например маскировка?
Маскировка чего? Поясните пожалуйста.
Если вы за реверс прокси, то у вас один домен и один ip, ваши сервисы за прокси не видны.
Спойлер
Вы можете использовать Caddy как (WEB Server) или (Revers Proxy), а можете использовать комбо режим. Собственно выше я привёл простой (minimal) конфиг именно комбо режима. В зависимости от запроса Caddy сам разрулит, отправить вас к сервисам которые он проксирует или выдать вам сайт (на том же IP), который он обслуживает. Вы можете, запустить в LXC ещё один Caddy (WEB server) и проксировать на него. Всё зависит от поставленной задачи.