HCRM博客

如何在CentOS上配置虚拟主机?

CentOS 配置虚拟主机

CentOS 是一款流行的 Linux 发行版,广泛用于服务器环境,在 CentOS 上配置虚拟主机可以实现一台服务器运行多个网站或应用,从而提高资源利用率和灵活性,本文将详细介绍如何在 CentOS 上配置虚拟主机,确保内容准确、全面且逻辑清晰。

如何在CentOS上配置虚拟主机?-图1
(图片来源网络,侵权删除)

一、前提条件

1、域名:拥有一个指向公共服务器 IP 的域名,建议去 namesilo 注册一个,非常便宜

2、安装 Apache:确保你的 CentOS 系统上安装了 Apache,可以使用以下命令安装:

   sudo yum y install httpd

3、权限:以 root 用户或具有 sudo 特权的用户身份登录。

二、创建目录结构

文档根目录是用于存储域名网站文件并响应请求提供服务的目录,可以将文档根目录设置为所需的任何位置,我们将使用以下目录结构:

/var/www/
├── example.com
│   └── public_html
├── example2.com
│   └── public_html
├── example3.com
│   └── public_html

对于将在服务器上托管的每个域,我们将在/var/www 内创建一个单独的目录,在域目录中,我们将创建一个public_html 目录,它将成为域文档的根目录并存储域网站文件,为域 example.com 创建根目录:

sudo mkdir p /var/www/example.com/public_html

为了进行测试,请在域的文档根目录内创建一个 index.html 文件:

如何在CentOS上配置虚拟主机?-图2
(图片来源网络,侵权删除)
sudo nano /var/www/example.com/public_html/index.html

将以下代码复制并粘贴到文件中:

<!DOCTYPE html>
<html>
<head>
    <title>Welcome to Example.com!</title>
</head>
<body>
    <h1>Success! The example.com virtual host is working!</h1>
</body>
</html>

保存并关闭文件。

三、创建虚拟主机文件

有几种设置虚拟主机的方法,您可以将所有虚拟主机指令添加到一个文件中,也可以为每个虚拟主机指令创建一个新的配置文件,您应该首选第二种方法,这种方法更易于维护,默认情况下,Apache 被配置为从/etc/httpd/conf.d/ 目录中加载所有以 .conf 结尾的配置文件,要为特定网站创建虚拟主机,请打开您选择的编辑器并创建以下基本虚拟主机配置文件:

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    ServerAdmin webmaster@example.com
    DocumentRoot /var/www/example.com/public_html
    <Directory /var/www/example.com/public_html>
        Options Indexes +FollowSymLinks
        AllowOverride All
    </Directory>
    ErrorLog /var/log/httpd/example.comerror.log
    CustomLog /var/log/httpd/example.comaccess.log combined
</VirtualHost>

配置文件名必须以 .conf 最佳实践是将域名用作虚拟主机配置文件的名称,编辑文件并保存:

sudo nano /etc/httpd/conf.d/example.com.conf

根据需要编辑文件并保存。

四、测试配置文件语法

使用以下命令测试配置文件语法:

如何在CentOS上配置虚拟主机?-图3
(图片来源网络,侵权删除)
sudo apachectl configtest

如果没有错误,输出内容类似如下:

Syntax OK

要激活新创建的虚拟主机,请使用以下命令重新启动 Apache 服务:

sudo systemctl restart httpd

打开 http://example.com 验证一切是否按预期进行。

五、基于不同方式配置虚拟主机

1. 基于 IP 地址的虚拟主机

可以通过增加两个 IP 地址来配置基于 IP 地址的虚拟主机。

ifconfig ens33:1 192.168.204.135
ifconfig ens33:2 192.168.204.136

然后重新编辑 Apache 配置文件:

<VirtualHost 192.168.204.135:80>
    DocumentRoot "/var/wwwroot/site1"
    ErrorLog "logs/site1.error.log"
    CustomLog "logs/site1.access.log" common
    <Directory "/var/wwwroot/site1">
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Require all granted
    </Directory>
</VirtualHost>
<VirtualHost 192.168.204.136:80>
    DocumentRoot "/var/wwwroot/site2"
    ErrorLog "logs/site2.error.log"
    CustomLog "logs/site2.access.log" common
    <Directory "/var/wwwroot/site2">
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Require all granted
    </Directory>
</VirtualHost>

启动 Apache 服务:

systemctl start httpd

在宿主机访问两个站点:http://192.168.204.135 和 http://192.168.204.136。

2. 基于端口的虚拟主机

编辑 Apache 配置文件:

Listen 8081
<VirtualHost *:8081>
    DocumentRoot "/var/wwwroot/site1"
    ErrorLog "logs/site1.error.log"
    CustomLog "logs/site1.access.log" common
    <Directory "/var/wwwroot/site1">
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Require all granted
    </Directory>
</VirtualHost>
Listen 8082
<VirtualHost *:8082>
    DocumentRoot "/var/wwwroot/site2"
    ErrorLog "logs/site2.error.log"
    CustomLog "logs/site2.access.log" common
    <Directory "/var/wwwroot/site2">
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Require all granted
    </Directory>
</VirtualHost>

启动 Apache 服务:

systemctl start httpd

在宿主机访问两个站点:http://192.168.204.133:8081 和 http://192.168.204.133:8082。

3. 基于域名的虚拟主机

编辑 Apache 配置文件:

<VirtualHost *:80>
    DocumentRoot "/var/wwwroot/site1"
    ServerName site1.test.com
    ErrorLog "logs/site1.error.log"
    CustomLog "logs/site1.access.log" common
    <Directory "/var/wwwroot/site1">
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Require all granted
    </Directory>
</VirtualHost>

在 Windows 上修改 hosts 文件,添加以下内容(根据实际情况自己修改):

192、168.204.135   site1.test.com  
192、168.204.135   site2.test.com

在宿主机访问两个站点:http://site1.test.com/ 和 http://site2.test.com/。

常见问题及解答 (FAQs)

问题 1:如何更改虚拟主机的文档根目录?

答:要更改虚拟主机的文档根目录,可以编辑相应的虚拟主机配置文件,找到DocumentRoot 指令并修改其路径,要将 example.com 的文档根目录更改为/newpath/public_html,则修改为:

DocumentRoot /newpath/public_html

保存文件并重新启动 Apache 服务使更改生效:

sudo systemctl restart httpd

问题 2:如何为虚拟主机启用 SSL?

答:要为虚拟主机启用 SSL,可以使用 Let's Encrypt 提供的免费 SSL 证书,安装 Certbot:

sudo yum install epelrelease y && sudo yum install certbot python2certbotapache y

为你的虚拟主机生成并安装 SSL 证书:

sudo certbot apache d example.com d www.example.com

Certbot 会自动配置 Apache 以使用 SSL,完成后,你可以通过 HTTPS://example.com 访问你的安全网站,如果需要进一步调整 SSL 配置,可以编辑相应的虚拟主机配置文件,添加 SSLEngine on、SSLCertificateFile 和 SSLCertificateKeyFile 等指令。

分享:
扫描分享到社交APP
上一篇
下一篇