здесь немного связно. Я пытаюсь перенести веб-сайт (www.monkhouselaw.com) из одной хостинговой компании на свой Digital Ocean VPS. Я изменил настройки DNS на:
* -> 107.170.29.18
www -> 107.170.29.18
monkhouselaw -> 107.170.29.18
Затем он направляется на виртуальный хост Apache на моем VPS.
В настоящее время я просто пытаюсь загрузить одну страницу индекса PHP на свой сервер. Как только это заработает, я принесу установку WordPress. К сожалению, это не работает.
Доступ к www.monkhouselaw.com в настоящее время возвращает ошибку 503. Я просто не могу понять почему. Изучение журнала ошибок Apache показывает мне:
(111)Connection refused: AH00957: HTTP: attempt to connect to 127.0.0.1:3000 (localhost) failed
[Sun Jun 05 16:44:46.900331 2016] [proxy:error] [pid 2207] AH00959: ap_proxy_connect_backend disabling worker for (localhost) for 60s
[Sun Jun 05 16:44:46.900339 2016] [proxy_http:error] [pid 2207] [client 108.63.121.42:51559] AH01114: HTTP: failed to make connection to backend: localhost, referer: (long url)
А позже это:
[Sun Jun 05 16:45:21.841236 2016] [proxy:error] [pid 2198] AH00940: HTTP: disabled connection for (localhost)
Я попытался проверить, прослушивает ли порт 3000 на локальном хосте, и это не. Однако существует уже существующий виртуальный хост, который, насколько я понимаю, должен перенаправлять запросы с порта 3000 на порт 80. Это файл 000-default.conf. В файле есть гораздо больше, чем следующее, но вот важные части:
<VirtualHost *:80>
...
LoadModule proxy_module {path-to-modules}/mod_proxy.so
ProxyPass / http://localhost:3000/
ProxyPassReverse / http://localhost:3000/
...
</VirtualHost>
Хотя, честно говоря, я не уверен, почему он даже пытается получить доступ к порту 3000, поскольку файл виртуального хоста для monkhouselaw направлен на порт 80:
<VirtualHost *:80>
DocumentRoot /var/www/monkhouse
ServerName monkhouselaw.com
<Directory "/var/www/monkhouse">
allow from all
Options None
Require all granted
</Directory>
</VirtualHost>
На данный момент я в растерянности. Поиск в Google показывает очень много результатов, касающихся SELinux, который, похоже, не установлен. Я видел, например, рекомендации набрать следующее:
togglesebool httpd_can_network_connect
Что просто возвращает мне сообщение о том, что программа togglesebool не существует.
По сути, это серьезная проблема, которую мне нужно решить, и я просматривал страницы результатов Google с двузначными числами, безуспешно пытаясь найти решения.
Кто-нибудь может предложить помощь?
Ваше понимание конфигурации apache немного обратное и перевернутое. Я бы посоветовал прочитать документацию по любому новому программному обеспечению, которое вы пытаетесь настроить. :)
Короче говоря, эта часть конфигурации вашего виртуального хоста:
<VirtualHost *:80>
... не имеет ничего общего с тем, как apache обрабатывает подключения к виртуальному хосту. Скорее, он настраивает слушатель который получает ваш запрос. В этом случае он прослушивает все IP-адреса (*
), на порт 80 (80
).
Вещи внутри объявления vhost описывают apache, как он должен обрабатывать соединения с этим виртуальным хостом. В случае предоставленного вами фрагмента он прослушивает порт 80 и направляет запросы на порт 3000, как и настроено. Вы не включили весь этот блок конфигурации, поэтому неясно, является ли это виртуальным хостом на основе имени.
Затем ваш второй фрагмент включает только monkhouselaw.com в качестве ServerName
. Это единственное имя, которое вы можете использовать для этого сайта и ожидать, что все будет работать. Поскольку у вас все настроено, www.monkhouselaw.com будет не работай. Вам нужно добавить это как ServerAlias
.