在 FreeBSD 12 服务器上使用 Apache 虚拟主机托管多个网站

介绍

Apache 允许您使用命名虚拟主机在单个服务器上托管多个网站。 每个虚拟域共享您服务器的公共 IP 地址,并且客户端的 HTTP 标头指示网络服务器为每个网站提供正确的内容。 该技术非常适合减少管理开销。 如果您的服务器可以处理流量并拥有必要的 CPU、内存和磁盘,则您可以托管的网站数量没有限制。 一个实际示例是使用单个服务器在单个服务器上为您的企业托管网站、员工门户和 API 端点。

本指南将在 FreeBSD 12 服务器上使用 Apache Web 服务器创建和托管三个网站。

先决条件

在继续之前,请确保您具备以下条件:

一个 FreeBSD 12 服务器 一组三个域名。 出于演示目的,本指南使用以下域: example.com, example.netexample.org
非 root sudo 用户 A FAMP 堆栈

1. 为网站创建目录结构

首先为您的网站设置目录结构。 在 FreeBSD 12 中,Apache 从以下位置提供 Web 内容。

/usr/local/www/apache24/data/

在该目录中为您打算在服务器上托管的每个网站创建以下子目录。 代替 example.com, example.net, 和 example.org 使用正确的域名。

$ sudo mkdir -p /usr/local/www/apache24/data/example.com/public_html
$ sudo mkdir -p /usr/local/www/apache24/data/example.net/public_html
$ sudo mkdir -p /usr/local/www/apache24/data/example.org/public_html

然后,为每个目录设置适当的权限,以便网络访问者可以读取内容和执行文件。

$ sudo chmod -R 755 /usr/local/www/apache24/data/example.com/public_html
$ sudo chmod -R 755 /usr/local/www/apache24/data/example.net/public_html
$ sudo chmod -R 755 /usr/local/www/apache24/data/example.org/public_html

通过执行以下命令,确保所有新创建的目录都继承了组权限。

$ sudo find /usr/local/www/apache24/data/example.com/public_html  -type d -exec chmod g+s {} ;
$ sudo find /usr/local/www/apache24/data/example.net/public_html  -type d -exec chmod g+s {} ;
$ sudo find /usr/local/www/apache24/data/example.org/public_html  -type d -exec chmod g+s {} ;

2. 创建虚拟主机

在 FreeBSD 12 中,Apache 在以下位置有一个默认配置文件。

/usr/local/etc/apache24/httpd.conf

但是,网络服务器还会扫描以下目录以查找其他配置文件。

/usr/local/etc/apache24/Includes

为每个网站创建单独的配置文件并输入相应的内容,如下所示。

站点 1:example.com

$ sudo nano /usr/local/etc/apache24/Includes/example.com.conf

输入信息 example.com 网站。

<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName example.com
    DocumentRoot /usr/local/www/apache24/data/example.com/public_html
    ErrorLog "/var/log/example.com.log"
    CustomLog "/var/log/example.com.log" common
</VirtualHost>

保存并关闭文件。

站点 2:example.net

$ sudo nano /usr/local/etc/apache24/Includes/example.net.conf

输入以下信息 example.net 网站。

<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName example.net
    DocumentRoot /usr/local/www/apache24/data/example.net/public_html
    ErrorLog "/var/log/example.net.log"
    CustomLog "/var/log/example.net.log" common
</VirtualHost>

保存并关闭文件。

站点 3:example.org

$ sudo nano /usr/local/etc/apache24/Includes/example.org.conf

输入以下信息 example.org 网站。

<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName example.org
    DocumentRoot /usr/local/www/apache24/data/example.org/public_html
    ErrorLog "/var/log/example.org.log"
    CustomLog "/var/log/example.org.log" common
</VirtualHost>

保存并关闭文件。

重新启动 Apache 网络服务器以加载新的配置文件。

$ sudo service apache24 restart

3. 为每个网站创建内容

在此步骤中,您将为之前创建的目录下的每个网站创建内容。

站点 1:example.com

$ sudo nano /usr/local/www/apache24/data/example.com/public_html/index.html

将以下内容添加到文件中。

<html>
  <head>
    <title>The example.com website</title>
  </head>
  <body>
    <h1>Welcome to <b>example.com</b> website.</h1>
    <p>This content confirms that the <b>example.com</b> website is working correctly.</p>
  </body>
</html>

保存并关闭文件。

站点 2:example.net

$ sudo nano /usr/local/www/apache24/data/example.net/public_html/index.html

将以下内容添加到文件中。

<html>
  <head>
    <title>The example.net website</title>
  </head>
  <body>
    <h1>Welcome to <b>example.net</b> website.</h1>
    <p>This content confirms that the <b>example.net</b> website is working correctly.</p>
  </body>
</html>

保存并关闭文件。

站点 3:example.org

$ sudo nano /usr/local/www/apache24/data/example.org/public_html/index.html

将以下内容添加到文件中。

<html>
  <head>
    <title>The example.org website</title>
  </head>
  <body>
    <h1>Welcome to <b>example.org</b> website.</h1>
    <p>This content confirms that the <b>example.org</b> website is working correctly.</p>
  </body>
</html>

保存并关闭文件。

您的网络服务器现在已准备好提供每个网站的内容。

4. 测试虚拟域

打开您的 Web 浏览器并访问您服务器的 URL 以测试新网站。 您现在应该会看到您为每个站点创建的 Web 内容。

结论

在本教程中,您已经在 FreeBSD 12 服务器上设置了三个 Apache 虚拟域并为它们创建了站点内容。 最后,您可以浏览每个网站的内容。 如果您有更多网站,您可以按照相同的步骤将它们添加到您的服务器。

注:本教程在Vultr VPS上测试通过,如需部署请前往Vultr.com

相关阅读:

Posted in: LinuxTags: