我正在尝试做一些相当简单的事情。我们在 IP 上有一台专用服务器[our server ip]
我们购买了几个域名。
我想在一个 IP 下托管网站。
我使用公司提供的界面设置了区域文件。它看起来如下:
在 Ubuntu 10.04 上运行的 apache2 中,我转到 /etc/apache2/sites-available/ 并创建一个名为[domain name].com
该文件的内容如下:
<VirtualHost *:80>
ServerName [domain name].com
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>
</VirtualHost>
我运行命令sudo a2ensite [domain name].com
并重启服务器。但是没有用。
我大约 28 小时前更改了 DNS 记录。可能是什么问题?
正常运行的是“正常”站点。我检查了 DNS 文件,所有IN A
类型都指向服务器 IP。
不同之处在于名称服务器;工作站点的名称服务器来自我们购买域名的站点。另一个站点的名称服务器来自其他地方。
这可能是什么问题?
谢谢,丹恩
答案1
首先,如果您不确定 DNS 记录是否已更新,请尝试ping www.yourdomain.com
查看数据包是否被发送到正确的服务器 IP 地址。
然后检查 Apache 是否正在监听netstat -l -n | grep ":80"
以及防火墙是否打开了端口 80 iptables -L -n | grep "dpt:80"
。
/var/www 的内容通常用于/保留用于 中的默认站点apache2/sites-available/
。在机器上运行虚拟站点时,我为每个站点创建不同的目录,/var/www/site1 /var/www/site2 etc...
并将它们设置为 DocumentRoot,该目录与 下每个配置文件中唯一的 ServerName(域名)匹配sites-available
。这将避免 Apache 产生任何混淆,还可以保护每个站点免受其他用户的攻击(如果每个站点都提供 FTP 访问权限)。
答案2
您的文档根目录DocumentRoot /var/www
应该为每个域设置单独的目录。
下面是我如何设置域和子域的示例
<VirtualHost *:80>
ServerName www.mydomain.com
ServerAlias mydomain.com
ServerAdmin [email protected]
DocumentRoot "/var/www/mydomain.com"
<Directory /var/www/mydomain.com/admin>
AllowOverride All
Allow from all
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName www.dev.mydomain.com
ServerAlias dev.mydomain.com
ServerAdmin [email protected]
DocumentRoot "/var/www/dev.mydomain.com"
<Directory /var/www/dev.mydomain.com>
AllowOverride All
Allow from all
</Directory>
</VirtualHost>