我使用教程在 apache2 上成功运行了一个网站。我的第二个网站无法在本地访问,我不知道为什么。
以下是我遵循的步骤:
- 将我的网站复制到文件夹
/data/mywebsite
- 创建符号链接到
/var/www/mywebsite
/etc/apache2/sites-available/mywebsite
像这样配置:
<VirtualHost *:80> ServerAdmin [email protected] ServerName localhost DocumentRoot /var/www/mywebsite <Directory /var/www/mywebsite> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost>
现在我使用 apache2 启用此页面,然后重新启动 apache2
sudo a2ensite mywebsite
sudo service apache2 restart
/
但我看不到我的页面,只看到我的 www 文件夹。我想我链接错了。后面 有必要加这个斜线吗mywebsite
?
几个小时以来,我尝试了所有我能想到的方法。
我也尝试在不同的端口上运行它并向我的端口添加一个端口apache2 ports.conf
。仍然没有成功。
任何建议都会很有帮助。
答案1
如果您在一台 Apache httpd 服务器上有多个站点,则应该发布完整的配置(均为 VirtualHost)。
我将发布一个双站点 Apache 服务器的示例配置,一个站点服务于 www.example.com,另一个站点服务于 www.example.org:
文件:/etc/apache2/sites-available/example-com
<VirtualHost 172.20.30.50>
DocumentRoot /var/www/example.com/
ServerName www.example.com
# Other directives here ...
</VirtualHost>
文件:/etc/apache2/sites-available/example-org
<VirtualHost 172.20.30.50>
DocumentRoot /var/www/example.com/
ServerName www.example.com
# Other directives here ...
</VirtualHost>
如果您的两个站点都指向:localhost,则只会显示一个站点,一个站点优先于另一个站点,换句话说,具有更高的优先级。这就是“ServerName”指令的作用所在。它将为那些试图激活该 ServerName 的人提供服务。
因此,如果您只在本地主机上测试内容,只需使用相同的 VirtualHost 并使用子文件夹。一个站点位于:,/var/www/site1
另一个位于/var/www/site2
,然后将浏览器指向:http://localhost/site1
或http://localhost/site2
。
如果您不想在 URL 中包含子文件夹,另一个解决方案是绕过 DNS 查找,并强制通过/etc/hosts
文件进行一些域查找。以下是示例(您需要在末尾添加 127.0.0.1 行):
文件:/etc/hosts
127.0.0.1 localhost example.com example.org
您的/etc/hosts
文件可能看起来有所不同,只需记住将两个域添加到末尾,因为正如我之前解释的那样,Apache 只会为同一个 ServerName 提供一个 VirtualHost。
了解更多信息:http://httpd.apache.org/docs/2.2/vhosts/examples.html
答案2
我对此并不了解,但我玩了几分钟来看看它是如何工作的。
我认为你做得对,但正如前面提到的,你必须ServerName www.site1.com
在配置中添加类似的内容(不是本地主机)。然后启用站点,重启Apache等。
此外,正如http://httpd.apache.org/docs/current/vhosts/examples.html: “Apache 服务器不会神奇地为这些主机名创建 DNS 条目。您必须在 DNS 中拥有名称,解析为您的 IP 地址”。
对于本地测试,您可以编辑/etc/hosts文件并添加站点名称(www.site1.com通过将上面显示的行更改127.0.0.1 localhost
为127.0.0.1 localhost www.site1.com
(替换www.site1.com
为您的网站名称),可以将上面使用的(如上所用)作为 localhost 的别名。然后重新启动浏览器并将其指向您的网站名称,以查看它是否有效。
或者你可以忘记所有这些配置并简单地写入本地主机/我的网站在您的浏览器中访问您的网站,但这似乎不是您想要的。