当前位置:首页 > 行业动态 > 正文

如何在CentOS上配置Apache以支持多个网站?

CentOS上配置Apache以支持多个网站,需编辑httpd.conf文件,设置虚拟主机。

CentOS Apache 多网站配置详解

如何在CentOS上配置Apache以支持多个网站?  第1张

一、安装与基础配置

1、安装 Apache:在 CentOS 系统上,可以通过yum 命令来安装 Apache,执行以下命令以更新软件包并安装 Apache:

 sudo yum update -y
   sudo yum install httpd -y

2、启动与启用服务:安装完成后,启动 Apache 服务,并设置其开机自启:

 sudo systemctl start httpd
   sudo systemctl enable httpd

3、测试安装:在浏览器中访问服务器的 IP 地址或使用curl 命令检查是否显示 Apache 默认页面:

 curl http://<服务器IP>

二、配置防火墙

为了允许外部访问 Web 服务器,需要配置防火墙以开放 HTTP(80端口)和 HTTPS(443端口):

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

三、配置虚拟主机

1. 创建网站目录

为每个站点创建独立的目录,

sudo mkdir -p /var/www/example1.com/public_html
sudo mkdir -p /var/www/example2.com/public_html
sudo chown -R $USER:$USER /var/www/example1.com/public_html
sudo chown -R $USER:$USER /var/www/example2.com/public_html
sudo chmod -R 755 /var/www

2. 创建测试页面

在每个网站的目录下创建一个 index.html 文件:

echo "<html><body><h1>Welcome to Example1</h1></body></html>" > /var/www/example1.com/public_html/index.html
echo "<html><body><h1>Welcome to Example2</h1></body></html>" > /var/www/example2.com/public_html/index.html

3. 创建虚拟主机配置文件

编辑或创建虚拟主机配置文件,例如/etc/httpd/conf.d/example1.com.conf 和/etc/httpd/conf.d/example2.com.conf:

example1.com.conf
<VirtualHost *:80>
    ServerAdmin webmaster@example1.com
    DocumentRoot "/var/www/example1.com/public_html"
    ServerName example1.com
    ServerAlias www.example1.com
    ErrorLog "/var/log/httpd/example1.com-error_log"
    CustomLog "/var/log/httpd/example1.com-access_log" combined
</VirtualHost>
example2.com.conf
<VirtualHost *:80>
    ServerAdmin webmaster@example2.com
    DocumentRoot "/var/www/example2.com/public_html"
    ServerName example2.com
    ServerAlias www.example2.com
    ErrorLog "/var/log/httpd/example2.com-error_log"
    CustomLog "/var/log/httpd/example2.com-access_log" combined
</VirtualHost>

4. 重启 Apache 服务

每次修改配置文件后,都需要重启 Apache 服务使更改生效:

sudo systemctl restart httpd

5. 测试配置文件

确保配置文件没有语法错误:

sudo apachectl configtest

四、启用 SSL/TLS(可选)

为了安全起见,可以为每个虚拟主机启用 SSL/TLS,以下是为单个站点启用 SSL 的步骤:

1、安装 mod_ssl 模块

 sudo yum install mod_ssl -y

2、生成自签名证书(测试用):

 sudo openssl req -new -newkey rsa:2048 -nodes -keyout /etc/pki/tls/private/example1.com.key -out /etc/pki/tls/certs/example1.com.csr
   sudo openssl x509 -req -days 365 -in /etc/pki/tls/certs/example1.com.csr -signkey /etc/pki/tls/private/example1.com.key -out /etc/pki/tls/certs/example1.com.crt

3、配置 SSL 虚拟主机:编辑/etc/httpd/conf.d/example1.com-le-ssl.conf:

 <VirtualHost *:443>
       ServerAdmin webmaster@example1.com
       DocumentRoot "/var/www/example1.com/public_html"
       ServerName example1.com
       SSLEngine on
       SSLCertificateFile /etc/pki/tls/certs/example1.com.crt
       SSLCertificateKeyFile /etc/pki/tls/private/example1.com.key
       ErrorLog "/var/log/httpd/example1.com-ssl-error_log"
       CustomLog "/var/log/httpd/example1.com-ssl-access_log" combined
   </VirtualHost>

4、重启 Apache 服务

 sudo systemctl restart httpd

五、常见问题解答(FAQs)

Q1:如何更改 Apache 默认监听的端口?

A1:编辑主配置文件/etc/httpd/conf/httpd.conf,找到Listen 指令并更改为所需的端口号,然后重启 Apache 服务,将默认的80端口改为8080:

Listen 8080

然后重启服务:

sudo systemctl restart httpd

注意,防火墙规则也需要相应调整以允许新端口的流量。

Q2:如何在 CentOS 中为多个域名配置重定向?

A2:要为多个域名配置重定向,可以使用Redirect 或Alias 指令,将所有请求从example1.com 重定向到example2.com,可以在相应的虚拟主机配置文件中添加:

Redirect permanent / http://www.example2.com/

或者使用Alias 指令进行更复杂的匹配和重写规则,完成修改后,记得重启 Apache 服务以应用更改:

sudo systemctl restart httpd
0