所以基本上我在服务器上创建子域时遇到问题。我在Ubuntu 12.04服务器上运行apache2,并使用No-IP.com设置动态IP。
我有mydomain.com工作,但想创建test.mydomain.com指向我的/ var / www /目录中的子文件夹(我的网站的所有内容都位于其中)。
我修改了apache vhosts examples page上的代码并将其放在我的httpd.conf文件中:
# Ensure that Apache listens on port 80
Listen 80
# Listen for virtual host requests on all IP addresses
NameVirtualHost localhost:80
<VirtualHost localhost:80>
DocumentRoot /var/www/
ServerName mydomain.com
# Other directives here
</VirtualHost>
<VirtualHost localhost:80>
DocumentRoot /var/www/test
ServerName test.mydomain.com
# Other directives here
</VirtualHost>
当我尝试重启服务时:
sudo /etc/init.d/apache2 restart
* Restarting web server apache2 apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
Action 'start' failed.
The Apache error log may have more information.
非常感谢任何帮助。如果我忘记提供任何必要的信息,请告诉我。
更新 我尝试使用*:80但我仍然遇到错误,这就是我切换到localhost的原因。
sudo /etc/init.d/apache2 restart
* Restarting web server apache2 apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
[Thu Nov 21 15:03:51 2013] [warn] NameVirtualHost *:80 has no VirtualHosts
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
[Thu Nov 21 15:03:51 2013] [warn] NameVirtualHost *:80 has no VirtualHosts
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
Action 'start' failed.
The Apache error log may have more information.
更新我弄清楚发生了什么。我的ports.conf文件中有匹配的配置条目。一旦我删除它,一切正常。
答案 0 :(得分:0)
如果用local替换localhost,那么你的apache conf似乎是正确的。这意味着您应该使用NameVirtualHost *:80
和<VirtualHost *:80>
但是,您必须告诉DNS服务器将子域转发到动态IP。由于您拥有来自付费DNS服务的.com域名,因此您必须登录DNS提供商并将A记录或CNAME记录设置为您的IP(添加您在主.com域中的相同设置)。如果您使用ddclient或类似客户端自动更新域,则可以将其配置为更新子域。
在任何情况下,使用命令nslookup yourdomain.com
和nslookup subdomain.domain.com
查看子域是否已成功更新。请注意,DNS中的更新可能需要数小时才能实际生效。
修改强>
很抱歉刚刚注意到:(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
。这意味着其他人已经在使用端口80,因此apache服务器无法绑定到该地址。使用sudo netstat -anltp | grep :80
查看哪个程序绑定了端口80.另外,检查您的conf文件以确保您没有更多NameVirtualHost *:80
指令。
最后,apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
不是错误,只是一个警告,所以你不应该担心这个
答案 1 :(得分:0)
可能有使用端口的服务:80
在命令行上尝试netstat -tulpn |grep :80
以查看占用此端口的服务。就我而言,它是nginx。我停止了服务然后启动了我想要使用的服务(apache2)。