1. Add the PPA. Open terminal (Ctrl+Alt+T) and run…
Ubuntu 18.04:多域名绑定同一IP, 配置Apache虚拟主机, 同一ip绑定多域名, 一台服务器支持多个域名和站点, Configure Apache Virtual Hosts

什么是Apache虚拟主机?
虚拟主机一词是指在单个系统上运行多个网站(例如host1.domain.com,host2.domain.com或www.domain1.com,www.domain2.com等)的方法。Apache中有两种类型的虚拟主机,即基于IP的虚拟主机和基于名称的虚拟主机。使用基于IP的虚拟主机,您可以在同一系统上托管多个网站或域,但是每个网站/域都有不同的IP地址。使用基于名称的虚拟主机,您可以在同一IP地址上托管多个网站/域。如果要从单个物理服务器或VPS托管多个网站和域,则虚拟托管可能会很有用。希望您了解Apache虚拟主机的基本概念。今天,我们将看到如何在Ubuntu 18.04 LTS中配置Apache虚拟主机。
在Ubuntu 18.04 LTS中配置Apache虚拟主机
我的测试盒IP地址是192.168.225.22,主机名是ubuntuserver。
首先,我们将看到如何在Apache Web服务器中配置基于名称的虚拟主机。
配置基于名称的虚拟主机
1. 安装Apache Web服务器 (如果已经安装好了Apache,请略过次步)
确保已安装Apache Web服务器。要将其安装在Ubuntu上,请运行:
$ sudo apt-get install apache2
安装apache之后,通过在浏览器中浏览apache测试页面来测试它是否正常工作。
打开您的Web浏览器并将其指向 http://IP_Address 或者 http://localhost.。您应该看到如下页面。

好!Apache Web服务器已启动并正常工作!!
2.为每个主机创建Web目录
我将创建两个虚拟主机,即 ikeepstudying1.com 和 ikeepstudying2.com。
让我们为第一个虚拟主机 ikeepstudying1.com 创建一个目录。该目录是存储我们的虚拟主机数据所必需的。
为此,请输入:
$ sudo mkdir -p /var/www/html/ikeepstudying1.com/public_html
同样,为第二个虚拟主机 ikeepstudying2.com 创建一个目录,如下所示。
$ sudo mkdir -p /var/www/html/ikeepstudying2.com/public_html
以上两个目录归root用户所有。我们需要将所有权更改为普通用户。
为此,请运行:
$ sudo chown -R $USER:$USER /var/www/html/ikeepstudying1.com/public_html $ sudo chown -R $USER:$USER /var/www/html/ikeepstudying2.com/public_html
在这里,$ USER表示当前登录的用户。
接下来,使用命令设置对Apache根目录(即/var/www/html/ )的读取权限:
$ sudo chmod -R 755 /var/www/html/
这样做是因为我们已经为每个虚拟主机创建了一个单独的目录来存储其数据。因此,我们将apache根目录设置为对除root用户以外的所有用户都是只读的。
我们已经创建了用于存储每个虚拟主机数据的必需目录,并设置了适当的权限。现在,该创建一些示例页面了,这些示例页面将由每个虚拟主机提供。
3.为每个主机创建演示网页
让我们为 ikeepstudying1.com 网站创建一个示例页面。为此,请运行:
$ sudo vi /var/www/html/ikeepstudying1.com/public_html/index.html
在其中添加以下行:
<html> <head> <title>www.ikeepstudying1.com</title> </head> <body> <h1>Hello, This is a test page for ikeepstudying1.com website</h1> </body> </html>
保存并关闭文件。
同样,为 ikeepstudying2.com 网站创建一个示例页面:
$ sudo vi /var/www/html/ikeepstudying2.com/public_html/index.html
在其中添加以下行:
<html> <head> <title>www.ikeepstudying2.com</title> </head> <body> <h1>Hello, This is a test page for ikeepstudying2.com website</h1> </body> </html>
保存并关闭文件。
4.为每个主机创建配置文件
接下来,我们需要为每个虚拟主机创建配置文件。首先,让我们在ikeepstudying1.com网站上执行此操作。
如下所示,将名为000-default.conf的默认虚拟主机文件复制 到新的虚拟主机文件中。
$ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/ikeepstudying1.com.conf
$ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/ikeepstudying2.com.conf
请注意,您必须在结尾处保存所有扩展名为.conf的配置文件,否则它将无法正常工作。
现在,修改配置文件以与我们的虚拟主机匹配。
编辑 ikeepstudying1.com.conf 文件:
$ sudo vi /etc/apache2/sites-available/ikeepstudying1.com.conf
编辑/修改 ServerAdmin,ServerName,ServerAlias 和 DocumentRoot 值与虚拟主机匹配。
<VirtualHost *:80> # The ServerName directive sets the request scheme, hostname and port that # the server uses to identify itself. This is used when creating # redirection URLs. In the context of virtual hosts, the ServerName # specifies what hostname must appear in the request's Host: header to # match this virtual host. For the default virtual host (this file) this # value is not decisive as it is used as a last resort host regardless. # However, you must set it for any further virtual host explicitly. #ServerName www.example.com ServerAdmin webmaster@ikeepstudying1.com ServerName ikeepstudying1.com ServerAlias www.ikeepstudying1.com DocumentRoot /var/www/html/ikeepstudying1.com/public_html # Available loglevels: trace8, ..., trace1, debug, info, notice, warn, # error, crit, alert, emerg. # It is also possible to configure the loglevel for particular # modules, e.g. #LogLevel info ssl:warn ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined # For most configuration files from conf-available/, which are # enabled or disabled at a global level, it is possible to # include a line for only one particular virtual host. For example the # following line enables the CGI configuration for this host only # after it has been globally disabled with "a2disconf". #Include conf-available/serve-cgi-bin.conf </VirtualHost>
保存并关闭文件。
接下来,编辑 ikeepstudying2.com.conf 文件:
$ sudo vi /etc/apache2/sites-available/ikeepstudying2.com.conf
进行必要的更改:
<VirtualHost *:80> # The ServerName directive sets the request scheme, hostname and port that # the server uses to identify itself. This is used when creating # redirection URLs. In the context of virtual hosts, the ServerName # specifies what hostname must appear in the request's Host: header to # match this virtual host. For the default virtual host (this file) this # value is not decisive as it is used as a last resort host regardless. # However, you must set it for any further virtual host explicitly. #ServerName www.example.com ServerAdmin webmaster@ikeepstudying2.com ServerName ikeepstudying2.com ServerAlias www.ikeepstudying2.com DocumentRoot /var/www/html/ikeepstudying2.com/public_html # Available loglevels: trace8, ..., trace1, debug, info, notice, warn, # error, crit, alert, emerg. # It is also possible to configure the loglevel for particular # modules, e.g. #LogLevel info ssl:warn ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined # For most configuration files from conf-available/, which are # enabled or disabled at a global level, it is possible to # include a line for only one particular virtual host. For example the # following line enables the CGI configuration for this host only # after it has been globally disabled with "a2disconf". #Include conf-available/serve-cgi-bin.conf </VirtualHost>
保存/关闭文件。
5.启用虚拟主机配置文件
进行必要的更改后,禁用默认的虚拟主机配置文件,即 000.default.conf,并启用所有新创建的虚拟主机配置文件,如下所示。
$ sudo a2dissite 000-default.conf $ sudo a2ensite ikeepstudying1.com.conf $ sudo a2ensite ikeepstudying2.com.conf
重新启动apache Web服务器以使更改生效。
$ sudo systemctl restart apache2
而已。我们已经在Apache中成功配置了虚拟主机。让我们继续检查它们是否在工作。
6.测试虚拟主机
在任何编辑器中打开/ etc / hosts文件:
$ sudo vi /etc/hosts
如下所示,一一添加所有虚拟网站/域。
[...] 192.168.225.22 ikeepstudying1.com 192.168.225.22 ikeepstudying2.com [...]
请注意,如果要从任何远程系统访问虚拟主机,则必须在每个远程系统的/ etc / hosts文件中添加以上行。
保存并关闭文件。
打开您的Web浏览器并将其指向http://ikeepstudying1.com或http://ikeepstudying2.com。
恭喜你!现在,您可以访问所有网站。从现在开始,您可以上传数据并从其他网站提供数据。
如您所见,我们使用相同的IP地址(即192.168.225.22)托管两个不同的网站(http://ikeepstudying1.com和http://ikeepstudying2.com)。这就是我们所说的基于名称的虚拟主机。希望这可以帮助。在下一指南中,我将向您展示如何配置基于IP的虚拟主机。在此之前,请继续关注!
资源:
本文:Ubuntu 18.04:多域名绑定同一IP, 配置Apache虚拟主机, 同一ip绑定多域名, 一台服务器支持多个域名和站点, Configure Apache Virtual Hosts