我有一个带有以下配置文件的 ubuntu:
<VirtualHost *:80>
ServerName dev.domain.com
DocumentRoot /data/sites/dev.domain.com/www/public
</VirtualHost>
此主机上的其他 vhost 文件正在正确提供服务。它已正确建立符号链接;目录存在。这不起作用的原因是什么?我在标准 apache 服务器日志中看不到任何内容。
谢谢
编辑:
这是一台 ubuntu 主机,许多其他使用标准 sites-available / sites-enabled 的 vhost 都可以运行。一个问题是它同时运行 mod_php 和 phusion mod_rails。
@Lain 这是来自 a2ensite 的输出:jon@ve:/etc/apache2/sites-available$ sudo sudo a2ensite /etc/apache2/apache2.conf 错误:未找到与 /etc/apache2/apache2.conf 匹配的站点!
这是 apache2ctl -S 的输出(非常感谢 - 我一直想知道如何做到这一点)
jon@ve:/etc/apache2/sites-available$ /usr/sbin/apache2ctl -S
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80 is a NameVirtualHost
default server ve.vesrv.com (/etc/apache2/sites-enabled/000-default:1)
port 80 namevhost ve.vesrv.com (/etc/apache2/sites-enabled/000-default:1)
port 80 namevhost testfb.hex.com (/etc/apache2/sites-enabled/001-testfb:1)
port 80 namevhost testfb2.hex.com (/etc/apache2/sites-enabled/002-testfb2:1)
....
port 80 namevhost rails-dev.rtm.com (/etc/apache2/sites-enabled/018-rails-dev.rtm.com:1)
port 80 namevhost dev.domain.com (/etc/apache2/sites-enabled/019-dev.domain.com:6)
Syntax OK
jon@ve:/etc/apache2/sites-available$
答案1
添加到文件之间<VirtualHost>...</VirtualHost>
:
<Directory /data/sites/dev.domain.com/www/public>
Order allow,deny
allow from all
</Directory>
确保NameVirtualHost *:80
在加载此文件之前有某个位置。(您可以在加载之前将其粘贴<VirtualHost *:80>
以确保安全。)
编辑2:确保你sudo a2ensite config_file
config_file 是包含块的文件<VirtualHost>
。应该是/etc/apache2/sites-available/dev.domain.com.conf
,你应该使用sudo a2ensite dev.domain.com.conf
确保你sudo apahce2ctl restart
编辑:
关于日志,不确定你的全局配置是什么。你可能需要以下配置<VirtualHost>...</VirtualHost>
:
ErrorLog /var/log/apache2/dev.domain.com-error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/dev.domain.com-access.log combined
答案2
如果您确实创建了名为 的虚拟主机dev.domain.com
,那么除非您为其创建了自己的 DNS 条目,否则它将不会解析到您的服务器,因此您将看不到任何内容。您似乎不太可能是 的所有者,因此domain.com
亲自为其子域创建虚拟主机和 DNS 条目不是一个好主意。最好为您控制的域创建虚拟主机和 DNS 条目。