使用 Apache2 在 Ubuntu 上托管网站需要哪些步骤?

使用 Apache2 在 Ubuntu 上托管网站需要哪些步骤?

我使用教程在 apache2 上成功运行了一个网站。我的第二个网站无法在本地访问,我不知道为什么。

以下是我遵循的步骤:

  1. 将我的网站复制到文件夹/data/mywebsite
  2. 创建符号链接到/var/www/mywebsite
  3. /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/site1http://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 localhost127.0.0.1 localhost www.site1.com(替换www.site1.com为您的网站名称),可以将上面使用的(如上所用)作为 localhost 的别名。然后重新启动浏览器并将其指向您的网站名称,以查看它是否有效。

或者你可以忘记所有这些配置并简单地写入本地主机/我的网站在您的浏览器中访问您的网站,但这似乎不是您想要的。

相关内容