在 CentOS 7 上对 apache 多站点配置(一个服务器可以连接多少个域名)

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

其他相关文章:

  1. Centos 8 安装apache、mysql、php7.3、PHPmyadmin及多域名多ssl配置方法
  2. 如何在 Ubuntu 16.04 上配置 Nginx 虚拟主机(托管多个网站)
在 CentOS 7 上对 apache 多站点配置(一个服务器可以连接多少个域名)
在 CentOS 7 上对 apache 多站点配置(一个服务器可以连接多少个域名)

我们首先安装 Apache ,然后为其配置虚拟主机。使用如下命令来安装 Apache:

sudo yum -y install httpd

接下来,启用 Apache 在系统重启时自动运行:

sudo systemctl enable httpd.service

完成上面的步骤后,通过 SSH 以非 root 用户帐户登录并继续。

注意:在本文的示例中,我们将配置 example.comexample2.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

应该会看到如下所示的页面:

成功! example.com 虚拟主机正在运行!

此时,我们已经在 CentOS 7 服务器上配置了多个网站。Apache 可以处理的域名数量没有限制,因此可根据需要来确定部署在一台服务器上的域名数量。

原创文章,作者:牛奇网,如若转载,请注明出处:https://www.niuqi360.com/linux/apache-virtual-hosts-on-centos-7/

发表评论

登录后才能评论