在CentOS系统中搭建Web服务器是许多运维人员和开发者的常见需求,CentOS作为稳定可靠的Linux发行版,搭配Apache或Nginx等Web服务软件,可以高效构建功能完善的Web服务环境,以下将详细介绍基于CentOS 7/8系统使用Apache和Nginx两种主流方式搭建Web服务器的完整步骤,包括环境准备、软件安装、配置优化及安全加固等内容。

环境准备
在开始搭建前,需确保系统满足基本要求:建议CentOS 7/8 minimal minimal minimal(最小化安装)系统,内存至少512MB(推荐1GB以上),硬盘空间10GB以上,并确保网络连接正常,首先更新系统软件包并安装必要工具,执行以下命令:
sudo yum update -y # 更新系统已安装的软件包 sudo yum install -y wget curl vim tree # 安装常用工具
关闭防火墙和SELinux(生产环境建议按规则开放端口,此处为简化操作):
sudo systemctl stop firewalld # 停止防火墙 sudo systemctl disable firewalld # 禁止开机启动 sudo setenforce 0 # 临时关闭SELinux sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config # 永久关闭SELinux
使用Apache搭建Web服务器
Apache(httpd)是历史最悠久的Web服务器软件之一,稳定性高,兼容性强,适合搭建传统网站服务。
安装Apache
sudo yum install -y httpd # 安装Apache服务
安装完成后,启动服务并设置开机自启:

sudo systemctl start httpd # 启动Apache sudo systemctl enable httpd # 设置开机自启
检查服务状态:
systemctl status httpd # 查看服务运行状态
配置Web目录
Apache默认网站根目录为/var/www/html,默认配置文件为/etc/httpd/conf/httpd.conf,可通过修改配置文件调整网站目录、端口等参数,将网站根目录修改为/home/wwwroot:
sudo mkdir -p /home/wwwroot # 创建网站目录 sudo chmod -R 755 /home/wwwroot # 设置目录权限 sudo chown -R apache:apache /home/wwwroot # 设置所有者
编辑配置文件:
sudo vim /etc/httpd/conf/httpd.conf
找到DocumentRoot "/var/www/html",修改为DocumentRoot "/home/wwwroot",并同步修改下方的<Directory>配置段:

<Directory "/home/wwwroot">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
测试访问
在网站根目录创建测试文件:
echo "<h1>Apache Test Page</h1><p>This is a test page on CentOS.</p>" | sudo tee /home/wwwroot/index.html
通过浏览器访问服务器IP地址(如http://192.168.1.100),若显示测试内容,则安装成功。
使用Nginx搭建Web服务器
Nginx是一款轻量级、高性能的Web服务器和反向代理软件,适合处理高并发请求,常用于搭建动态网站、负载均衡等场景。
安装Nginx
CentOS 7/8官方源默认包含Nginx,可直接安装:
sudo yum install -y nginx # 安装Nginx
启动服务并设置开机自启:
sudo systemctl start nginx # 启动Nginx sudo systemctl enable nginx # 设置开机自启
检查服务状态:
systemctl status nginx
配置Web目录
Nginx默认网站根目录为/usr/share/nginx/html,主配置文件为/etc/nginx/nginx.conf,同样可自定义网站目录,例如修改为/home/nginxroot:
sudo mkdir -p /home/nginxroot # 创建网站目录 sudo chmod -R 755 /home/nginxroot # 设置权限 sudo chown -R nginx:nginx /home/nginxroot # 设置所有者
编辑主配置文件:
sudo vim /etc/nginx/nginx.conf
在http块中修改或添加server配置段,指定网站根目录和默认文件:
server {
listen 80;
server_name localhost;
root /home/nginxroot;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}
测试访问
创建测试文件:
echo "<h1>Nginx Test Page</h1><p>This is a test page on CentOS.</p>" | sudo tee /home/nginxroot/index.html
检查配置文件语法并重载服务:
sudo nginx -t # 检查配置语法 sudo systemctl reload nginx # 重载配置
通过浏览器访问服务器IP,若显示测试内容,则安装成功。
安装PHP支持(以Apache+PHP为例)
若需运行动态网站(如WordPress、Discuz等),需安装PHP及扩展,以CentOS 7为例,安装Remi源(PHP 7.4):
sudo yum install -y epel-release # 安装EPEL源 sudo rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-7.rpm # 安装Remi源 sudo yum install -y yum-utils # 安装yum工具 sudo yum-config-manager --enable remi-php74 # 启用PHP 7.4仓库 sudo yum install -y php php-mysql php-fpm php-gd php-json php-mbstring # 安装PHP及常用扩展
安装完成后启动PHP-FPM(若与Apache结合使用):
sudo systemctl start php-fpm sudo systemctl enable php-fpm
修改Apache配置以支持PHP,在/etc/httpd/conf/httpd.conf中添加:
AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps
重启Apache服务:
sudo systemctl restart httpd
在网站根目录创建PHP测试文件info.php:
echo "<?php phpinfo(); ?>" | sudo tee /home/wwwroot/info.php
访问http://服务器IP/info.php,若显示PHP配置信息,则安装成功。
安全加固建议
- 修改默认端口:将Apache或Nginx默认端口80修改为非标准端口(如8080),减少被扫描风险。
- 启用SSL证书:通过Let's Encrypt免费证书为网站启用HTTPS,加密数据传输。
- 限制访问IP:在防火墙中仅允许指定IP访问Web服务端口,
sudo firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="80" accept" sudo firewall-cmd --reload
- 定期更新:定期执行
yum update -y更新系统及软件包,修复安全漏洞。
相关问答FAQs
Q1:如何查看Apache/Nginx的错误日志?
A:Apache错误日志默认位于/var/log/httpd/error_log,可通过tail -f /var/log/httpd/error_log实时查看;Nginx错误日志默认位于/var/log/nginx/error.log,使用tail -f /var/log/nginx/error.log查看,若需修改日志路径,可在配置文件中指定ErrorLog(Apache)或error_log(Nginx)参数。
Q2:搭建Web服务器后无法访问,如何排查?
A:可按以下步骤排查:
- 检查服务状态:
systemctl status httpd/nginx,确认服务是否正常运行; - 检查端口监听:
netstat -tuln | grep 80,确认80端口是否被监听; - 检查防火墙:若开启了防火墙,需开放80端口(
sudo firewall-cmd --permanent --add-port=80/tcp并重载); - 检查SELinux:临时关闭SELinux测试(
setenforce 0),若恢复正常则需调整SELinux策略; - 检查网站目录权限:确保目录所有者为Web服务用户(apache/nginx),权限为755。
