CentOS Apache 多网站配置详解
一、安装与基础配置
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
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1389708.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复