本文将介绍如何在CentOS 7 系统上,配置 Apache 虚拟主机,以在一台服务器上部署多个网站。
其他相关文章:

我们首先安装 Apache ,然后为其配置虚拟主机。使用如下命令来安装 Apache:
sudo yum -y install httpd
接下来,启用 Apache 在系统重启时自动运行:
sudo systemctl enable httpd.service
完成上面的步骤后,通过 SSH 以非 root 用户帐户登录并继续。
注意:在本文的示例中,我们将配置 example.com
和 example2.com
两个域名的虚拟主机,在实际使用过程中,可以将其更改为自己的域名。
第一步 – 创建网站目录
在默认情况下,Apache 将 /var/www
设置为网站的根目录。我们将在此目录下为每个虚拟主机(可以理解成每个网站)创建一个单独的目录。
在每个目录中,我们将创建一个 public_html
的目录用来保存网站的文件。
我们可以使用 mkdir
命令创建目录(-p
标签,递归创建目录,即使上级目录不存在,会按目录层级自动创建目录):
sudo mkdir -p /var/www/example.com/public_html
sudo mkdir -p /var/www/example2.com/public_html
第二步 – 授予权限
我们已经为两个网站分别创建了网站根目录,但它们的所有者是 root。如果希望普通用户能够修改 Web 目录中的文件,我们可以使用 chown
命令更改网站目录的所有权:
sudo chown -R $USER:$USER /var/www/example.com/public_html
sudo chown -R $USER:$USER /var/www/example2.com/public_html
在更改一下目录的权限,以允许对 Web 目录以及其中的所有文件和文件夹进行读取访问,以便正确返回页面:
sudo chmod -R 755 /var/www
第三步 – 为每个网站创建演示页面
为了便于在配置完成后测试访问每个网站,我们将在每个网站根目录中各创建一个 index.html
文件,首先在 example.com/public_html 目录下创建:
nano /var/www/example.com/public_html/index.html
在文件中添加以下代码:
<html>
<head>
<title>Welcome to Example.com!</title>
</head>
<body>
<h1>Success! The example.com virtual host is working!</h1>
</body>
</html>
完成后保存并关闭文件。
将刚刚创建的演示文件拷贝到另一个站点根目录下:
cp /var/www/example.com/public_html/index.html /var/www/example2.com/public_html/index.html
拷贝完成后,打开该文件并对信息做相应的修改:
nano /var/www/example2.com/public_html/index.html
<html>
<head>
<title>Welcome to Example2.com!</title>
</head>
<body>
<h1>Success! The example2.com virtual host is working!</h1>
</body>
</html>
保存并关闭此文件。
第四步 – 创建新的虚拟主机文件
首先,我们需要设置存储虚拟主机配置文件的目录,sites-available
目录用于保存所有的虚拟主机配置文件,而sites-enabled
目录用于保存指向我们要创建的虚拟主机的符号链接。我们可以通过键以下命令来创建两个目录:
sudo mkdir /etc/httpd/sites-available
sudo mkdir /etc/httpd/sites-enabled
注意:这个目录结构是由 Debian 默认采用的,我们也采用这种虚拟主机目录结构,以便更好的控制每个网站。
接下来,我们应该设置 Apache 在 sites-enabled
目录中查找虚拟主机配置文件。为此,我们要编辑 Apache 的主配置文件,并添加一行声明附加配置文件的可选目录:
sudo nano /etc/httpd/conf/httpd.conf
将此行添加到文件末尾:
IncludeOptional sites-enabled/*.conf
添加完该行后,保存并关闭文件。接下来,创建我们的第一个虚拟主机配置文件。
创建第一个虚拟主机文件
首先,使用 root 权限在编辑器中创建新的配置文件:
sudo nano /etc/httpd/sites-available/example.com.conf
注意:所有虚拟主机的配置文件都必须以.conf
结尾
首先,首先制作一对标记,将内容指定为侦听 80 端口(默认 HTTP 端口)的虚拟主机:
<VirtualHost *:80>
</VirtualHost>
接下来我们将声明主服务器名称 www.example.com 和别名 example..com,这样无论用户请求 www.example.com 还是 example.com 都能提供相同的内容:
<VirtualHost *:80>
ServerName www.example.com
ServerAlias example.com
</VirtualHost>
注意:为了使带 www 的域名正常工作,域的 DNS 配置将需要一个 A 记录或 CNAME,将www
请求指向服务器的 IP。
最后,我们将配置网站的根目录和错误日志目录:
<VirtualHost *:80>
ServerName www.example.com
ServerAlias example.com
DocumentRoot /var/www/example.com/public_html
ErrorLog /var/www/example.com/error.log
CustomLog /var/www/example.com/requests.log combined
</VirtualHost>
保存并关闭文件。
创建第二个虚拟主机
我们可以通过复制第一个虚拟主机配置文件的方式,来创建第二个虚拟主机配置文件。
sudo cp /etc/httpd/sites-available/example.com.conf /etc/httpd/sites-available/example2.com.conf
在文本编辑器中打开新文件:
sudo nano /etc/httpd/sites-available/example2.com.conf
修改域名级目录等信息。完成后,第二个虚拟主机文件如下所示:
<VirtualHost *:80>
ServerName www.example2.com
DocumentRoot /var/www/example2.com/public_html
ServerAlias example2.com
ErrorLog /var/www/example2.com/error.log
CustomLog /var/www/example2.com/requests.log combined
</VirtualHost>
保存并关闭文件。
第五步 – 启用新的虚拟主机文件
现在我们已经创建了两个网站的虚拟主机文件,我们需要启用它们,以便 Apache 可以正常的工作。为此,我们为sites-enabled
目录中的每个虚拟主机配置创建一个符号链接:
sudo ln -s /etc/httpd/sites-available/example.com.conf /etc/httpd/sites-enabled/example.com.conf
sudo ln -s /etc/httpd/sites-available/example2.com.conf /etc/httpd/sites-enabled/example2.com.conf
完成后,重新启动 Apache 以使配置生效:
sudo apachectl restart
第六步——测试结果
现在已经配置完了虚拟主机,可以通过在 Web 浏览器中访问域名来测试:
http://example.com
应该会看到如下所示的页面:

此时,我们已经在 CentOS 7 服务器上配置了多个网站。Apache 可以处理的域名数量没有限制,因此可根据需要来确定部署在一台服务器上的域名数量。
作者:牛奇网,本站文章均为辛苦原创,在此严正声明,本站内容严禁采集转载,面斥不雅请好自为之,本文网址:https://www.niuqi360.com/linux/apache-virtual-hosts-on-centos-7/