我刚刚设置了一个 Ubuntu Web 服务器和 Amazon EC2 的微型实例。一切运行良好,我已成功配置 VirtualHost,但在设置子域时遇到了困难。以下是我所做的:
$ mkdir /var/www/mydomain
$ mkdir /var/www/mysubdomain
$ chmod -R 774 /var/www/mydomain
$ chmod -R 774 /var/www/mysubdomain
$ vim /etc/apache2/sites-available/mydomian
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName mydomain.com
ServerAlias www.mydomain.com
DocumentRoot /var/www/mydomian
</VirtualHost>
$ vim /etc/apache2/site-available/mysubdomain
<VirtualHost *:80>
ServerName mysubdomain.localhost # also tried mysubdomain.mydomain.com
DocumentRoot /var/www/mysubdomian
<Directory /var/www/mysubdomain/ >
Options Indexes FollowSymLinks MultiViews +Includes
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>
$ ln -s /etc/apache2/sites-available/mydomian /etc/apache2/sites-enabled/mydomian
$ ln -s /etc/apache2/sites-available/mysubdomain /etc/apache2/sites-enabled/mysubdomain
重新启动 Apache 后,mydomain.com 可以正常工作,但 mysubdomain.mydomain.com 无法正常工作。有什么想法吗?
PS 我还将 staging.localhost 添加到 /etc/hosts(不确定是否需要这样做,但是......)
答案1
删除 /etc/apache2/sites-enabled 中的所有符号链接,然后
sudo a2ensite mydomain
sudo a2ensite mysubdomain
sudo apache2ctl restart
另外,请确保您的 NameVirtualHost 指令位于读取 VirtualHost 配置之前。一个简单的方法是将其添加到 /etc/apache2/ports.conf
您可能在 sites-available 中有一个默认配置(可能在 sites-enabled 中被符号链接为 000-default)。如果您想保留该默认配置,您可以在该文件的开头添加 NameVirtualHost 行。
答案2
您的 NameVirtualHost 可能是错误的..它应该与您的虚拟主机部分中的内容相匹配,因此应该是
NameVirtualHost *:80
也不确定这是什么
$ ln -s /etc/apache2/sites-available/mydomian $ vim /etc/apache2/sites-enabled/mydomian
我猜是打字错误?但是它们在 sites-enabled 中可以吗?
答案3
我找到了问题,感谢大家的帮助。事实证明我的 apache 配置文件没有问题。我需要在我的域名注册商处创建一个指向 EC2“弹性”IP 的 A(主机)记录。