Снова у меня возникла проблема с моей конфигурацией виртуального хоста apache. (Конфигурация по умолчанию используется вместо моей конкретной).
Проблема на самом деле не в неправильной конфигурации, а в том, как ее решить.
Есть ли у кого-нибудь хорошие советы для быстрого решения этой проблемы?
Дополнительная информация.
Файл conf по умолчанию:
NameVirtualHost *
<VirtualHost *>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/access.log combined
ServerSignature On
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>
И конфигурация виртуального хоста, которая не применяется, такова:
<VirtualHost *:*>
ProxyPreserveHost On
ProxyPass / http://ip.ip.ip.ip:8088/
ProxyPassReverse / http://ip.ip.ip.ip:8088/
ServerName wiki.mydomain.com
</VirtualHost>
Проверить файлы конфигурации для синтаксических ошибок:
# Fedora, RHEL, CentOS, OSX
httpd -t
# Debian, Ubuntu
apache2ctl -t
# MacOS
apachectl -t
Чтобы перечислить все виртуальные хосты и их местоположения:
# Fedora, RHEL, CentOS, OSX
httpd -S
# Debian, Ubuntu
apache2ctl -S
# MacOS
apachectl -S
-S
является синонимом для -t -D DUMP_VHOSTS
поэтому эти два одинаковы
Если вы пытаетесь отладить конфигурацию своего виртуального хоста, вы можете найти полезный переключатель командной строки Apache -S. То есть введите следующую команду:
httpd -S
Эта команда выдает описание того, как Apache проанализировал файл конфигурации. Тщательное изучение IP-адресов и имен серверов может помочь выявить ошибки конфигурации. (См. Документы для httpd для других параметров командной строки).
apache2ctl -S
APACHE_RUN_USER=www-data APACHE_RUN_GROUP=www-data /usr/sbin/apache2 -S
Здесь мне может помочь какая-то команда:
apachectl -t -D DUMP_VHOSTS
Вы получите список всех vhosts, вы узнаете, какой из них по умолчанию, и вы убедитесь, что ваш синтаксис верен (такой же, как apachectl configtest, предложенный yojimbo87).
Вы также узнаете, где объявляется каждый vhost. Это может быть удобно, если ваши файлы конфигурации беспорядочны.;)
Сначала проверьте config файлы для синтаксических ошибок с apachectl configtest
, а затем посмотрите на ошибку apache logs.
У меня появился новый файл конфигурации VirtualHost, который не показывался при использовании команды apachectl -S
. После большой царапины головы я понял, что у моего файла нет суффикса ".conf". Как только я переименовал файл с этим префиксом, мой Vhost начал показывать и работать!
Недавно у меня были некоторые проблемы с VirtualHost. Я использовал a2ensite
для перемещения, разрешающего хост, но перед запуском перезапуска (который бы убил сервер при сбое) я запустил
apache2ctl -S
Что дает вам информацию о том, что происходит с вашими виртуальными хостами. Это не идеально, но это помогает.
Я нашел свою ошибку, я не добавил имя файла журнала: ErrorLog/var/log/apache2
И этот путь: Справочник "/usr/share/doc/"
Не содержит источников веб-сайта.
После того как я изменил эти два, все сработало. Интересно, что apache не выдавал никаких ошибок, просто не открывал мой сайт на моей Mac OS Sierra.