Могу ли я запустить WordPress на том же VPS со вторым IP-адресом?

Привет.

Я знаю, что рекомендуется запускать Discourse на отдельном сервере, но я финансирую этот проект самостоятельно, и по сути это хобби с небольшими перспективами и без намерения монетизировать его в ближайшем будущем, по крайней мере.

Поэтому я подумал, что вместо покупки нового VPS можно просто запросить второй IP-адрес и запустить WordPress на виртуальном сервере Apache, привязанном к IP-адресу, что поможет снизить расходы.

Возможно ли это или это не рекомендуется?

Если вы знакомы с настройкой обратного прокси, второй IP-адрес вам не понадобится.

Вы можете запустить и Discourse, и WordPress, настроив их на прослушивание Unix-сокетов (или портов с более высоким номером), а перед ними установить программное обеспечение обратного прокси (рекомендую Caddy), которое будет обслуживать blog.example.com и forum.example.com на одном и том же IP-адресе.

Тем не менее, если вы не знакомы с подобной конфигурацией, гораздо проще запустить каждый сервис на отдельном VPS, так как в этом случае вы сможете просто следовать обширной документации для каждого из них.

Может ли та конфигурация, которую вы рекомендуете, работать без проблем?

Я что-то настраивал с помощью HAProxy, когда только начинал разбираться с Discourse. Я был, мягко говоря, новичком (и до сих пор таковым остаюсь в вопросах серверов и подобного), но всё равно попытался, и в процессе немного разобрался в HAProxy. Если я правильно помню, возникали проблемы с SSL, и поведение Discourse было somewhat нестабильным, но, возможно, я что-то сделал неправильно.

Так вот, мой вопрос: возможно ли реализовать рекомендуемую вами конфигурацию без нестабильности и «странных» проблем, не прибегая к экстремальному количеству тонкой настройки?

Да, если вы правильно настроите свой обратный прокси-сервер, это возможно. Именно так работает этот сайт.

Мы не можем оказывать поддержку для каждой конфигурации обратного прокси-сервера здесь.

Отлично!

Последняя просьба: не могли бы вы дать мне ссылку на документацию по настройке этого?

Nginx Run other websites on the same machine as Discourse

Caddy Use Caddy instead of NGINX as your reverse proxy

Apache Set up Discourse on a server with existing Apache sites

Прекрасно.

Я помню, что когда я проходил тестирование, следовал руководству Apache. Неясно из статьи, следует ли отключать SSL при пересборке Discourse (и достигается ли это отключением просто путем невыполнения ввода адреса электронной почты для Let’s Encrypt), а также какие порты должны быть «открыты» в discourse/app.yml (в руководстве показано только, как должна выглядеть строка …

“8888:80” # перенаправление хостового порта 8888 на порт контейнера 80 (http)

… но ничего не сказано о следующей строке в файле app.yml (которая по умолчанию выглядит так…

  • “443:443” # https

… должна выглядеть).

PS. Пока я смотрел на файл app.yml, чтобы написать этот пост, я заметил, что там присутствуют следующие строки:

Раскомментируйте эти две строки, если хотите добавить Lets Encrypt (https)

  • “templates/web.ssl.template.yml”
  • “templates/web.letsencrypt.ssl.template.yml”

… однако на данный момент мой приложение Discourse работает с включенным SSL, но с этими строками, не раскомментированными. Насколько критично комментирование этих строк для моей текущей настройки (без прокси) или для желаемой настройки (с прокси и apache-wordpress)?

:slight_smile:

Если вы не знакомы с обратными прокси и у вас легко можно получить второй IP-адрес, то это неплохое решение. Просто сделайте что-то вроде этого:

expose:
  - "192.168.1.1:80:80"   # http
  - "192.168.1.1:443:443" # https

Это сработало.

Спасибо.

Вы можете использовать тот же трюк с Configure direct-delivery incoming email for self-hosted sites with Mail-Receiver.

Спасибо, это сработало для меня. Мой провайдер VPS предлагает недорогие «плавающие IP-адреса» в дополнение к основному IP, настроенному на VPS. Это решение очень удобно для меня. Его следовало бы лучше документировать, так как оно настолько простое.

expose:
   - "my_floating_ip:80:80"
   - "my_floating_ip:443:443"

Это сработало? Я не думал, что дроплет может знать о плавающем IP-адресе.

Что ж, всё работает отлично:

Сначала купите плавающий IP-адрес и привяжите его к своему VPS.
Затем настройте сервер для его использования:

vim /etc/network/interfaces.d/60-my-floating-ip.cfg

auto eth0:1
iface eth0:1 inet static
    address ваш.Плавающий.IP
    netmask 32

и сохраните. Перезапустите сеть:

sudo service networking restart

Теперь у вас есть два IP-адреса: основной IP я использую для настройки нескольких сайтов nginx, обратите внимание на строки конфигурации в /etc/nginx/sites-enabled:

listen my_main_IP:80 myserver.name;
listen my_main_IP:443 ssl http2 myserver.name;

А плавающий IP в файле /var/discourse/containers/app.yml указан следующим образом:

expose:
   - "my_floating_ip:80:80"
   - "my_floating_ip:443:443"

Проверьте, что всё в порядке (оригинальные IP-адреса заменены на floating_ip и main_ip):

# netstat -taunp | grep -i listen
tcp        0      0 floating_ip:80      0.0.0.0:*               LISTEN      19775/docker-proxy  
tcp        0      0 main_ip:80          0.0.0.0:*               LISTEN      13151/nginx: master 
tcp        0      0 0.0.0.0:22          0.0.0.0:*               LISTEN      725/sshd            
tcp        0      0 floating_ip:443     0.0.0.0:*               LISTEN      19763/docker-proxy  
tcp        0      0 main_ip:443         0.0.0.0:*               LISTEN      13151/nginx: master 
tcp6       0      0 :::22                      :::*                    LISTEN      725/sshd       

Не знаю, уместно ли называть имена, но сервер находится в Hetzner Cloud, и функция плавающего IP очень удобна и имеет адекватную цену.

Ага! Я не знал, что так можно!

Этот трюк также можно использовать для запуска нескольких входящих почтовых серверов для нескольких доменов.

Отличная работа!

Ага! Вот почему я не знал, как это работает.

Я знаю, что это старая тема, но хотел поблагодарить вас, ребята. Это может сэкономить мне дни работы над похожей проблемой, с которой я сталкиваюсь. Спасибо, что поделились этой бесценной информацией со всеми!!