CentOS 系统下Web服务器部署全流程指南

一、环境准备与基础配置

1.1 系统版本选择

推荐使用CentOS 7或CentOS 8 LTS版本,这两个版本提供长期支持且拥有成熟的软件生态。可通过以下命令检查系统版本:

  1. cat /etc/centos-release

对于新部署场景,建议选择CentOS 7.9或CentOS 8.5等稳定小版本,这些版本经过充分验证且包含最新安全补丁。

1.2 网络配置检查

确保服务器具备公网IP或可访问的内网环境,执行以下命令验证网络连通性:

  1. ping baidu.com

若使用云服务器,需在控制台配置安全组规则,开放80(HTTP)、443(HTTPS)及22(SSH)端口。对于自建机房,需检查防火墙规则:

  1. firewall-cmd --list-ports # 查看已开放端口
  2. firewall-cmd --add-port=80/tcp --permanent # 开放HTTP端口
  3. firewall-cmd --reload # 重载防火墙规则

1.3 依赖包安装

执行以下命令安装基础开发工具和依赖库:

  1. yum install -y epel-release
  2. yum groupinstall -y "Development Tools"
  3. yum install -y wget curl vim net-tools

对于需要编译安装的场景,建议安装编译工具链:

  1. yum install -y gcc gcc-c++ make cmake autoconf

二、Web服务器软件选择与安装

2.1 Nginx部署方案

Nginx以其高并发处理能力成为主流选择,安装步骤如下:

  1. # 添加官方仓库
  2. cat > /etc/yum.repos.d/nginx.repo <<EOF
  3. [nginx-stable]
  4. name=nginx stable repo
  5. baseurl=http://nginx.org/packages/centos/\$releasever/\$basearch/
  6. gpgcheck=1
  7. enabled=1
  8. gpgkey=https://nginx.org/keys/nginx_signing.key
  9. EOF
  10. # 安装Nginx
  11. yum install -y nginx
  12. systemctl enable nginx
  13. systemctl start nginx

安装完成后,通过curl localhost验证服务状态,正常应返回Nginx欢迎页面。

2.2 Apache HTTP Server方案

对于需要兼容传统CGI应用的场景,可选择Apache:

  1. yum install -y httpd
  2. systemctl enable httpd
  3. systemctl start httpd

配置文件位于/etc/httpd/conf/httpd.conf,主要修改项包括:

  • ServerName:设置域名或服务器IP
  • DocumentRoot:指定网站根目录
  • Listen:配置监听端口

2.3 混合部署架构

生产环境推荐采用Nginx+Apache的组合架构:

  1. 客户端 Nginx(静态资源/负载均衡) Apache(动态处理)

配置Nginx反向代理:

  1. location / {
  2. proxy_pass http://localhost:8080;
  3. proxy_set_header Host \$host;
  4. proxy_set_header X-Real-IP \$remote_addr;
  5. }

同时修改Apache监听端口为8080。

三、服务配置与优化

3.1 虚拟主机配置

以Nginx为例配置多站点:

  1. server {
  2. listen 80;
  3. server_name example.com;
  4. root /var/www/example;
  5. index index.html;
  6. location / {
  7. try_files \$uri \$uri/ =404;
  8. }
  9. }

创建对应目录并设置权限:

  1. mkdir -p /var/www/example
  2. chown -R nginx:nginx /var/www/example
  3. chmod -R 755 /var/www

3.2 性能优化参数

关键优化项包括:

  • worker进程数:设置为CPU核心数
    1. worker_processes auto;
  • 连接数配置
    1. events {
    2. worker_connections 1024;
    3. use epoll;
    4. multi_accept on;
    5. }
  • Gzip压缩
    1. gzip on;
    2. gzip_types text/plain text/css application/json application/javascript text/xml;

3.3 日志管理方案

配置日志轮转防止磁盘占满:

  1. cat > /etc/logrotate.d/nginx <<EOF
  2. /var/log/nginx/*.log {
  3. daily
  4. missingok
  5. rotate 14
  6. compress
  7. delaycompress
  8. notifempty
  9. create 0640 nginx adm
  10. sharedscripts
  11. postrotate
  12. [ -f /var/run/nginx.pid ] && kill -USR1 \`cat /var/run/nginx.pid\`
  13. endscript
  14. }
  15. EOF

四、安全加固措施

4.1 SSL证书配置

使用Let’s Encrypt免费证书:

  1. yum install -y certbot python3-certbot-nginx
  2. certbot --nginx -d example.com

配置自动续期:

  1. echo "0 3 * * * /usr/bin/certbot renew --quiet" | crontab -

4.2 防火墙强化

仅开放必要端口:

  1. firewall-cmd --permanent --remove-service=ssh
  2. firewall-cmd --permanent --add-port=2222/tcp
  3. firewall-cmd --reload

修改SSH默认端口:

  1. sed -i 's/^#Port 22/Port 2222/' /etc/ssh/sshd_config
  2. systemctl restart sshd

4.3 入侵防御配置

安装Fail2Ban防止暴力破解:

  1. yum install -y fail2ban
  2. cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

编辑jail.local添加SSH防护规则:

  1. [sshd]
  2. enabled = true
  3. port = 2222
  4. filter = sshd
  5. logpath = /var/log/secure
  6. maxretry = 3
  7. bantime = 86400

五、监控与维护

5.1 基础监控方案

安装htop进行实时监控:

  1. yum install -y epel-release
  2. yum install -y htop

配置Nginx状态监控:

  1. location /nginx_status {
  2. stub_status on;
  3. access_log off;
  4. allow 127.0.0.1;
  5. deny all;
  6. }

5.2 日志分析工具

安装GoAccess进行可视化分析:

  1. yum install -y geoip-devel ncurses-devel
  2. wget https://tar.goaccess.io/goaccess-1.7.tar.gz
  3. tar -xzvf goaccess-1.7.tar.gz
  4. cd goaccess-1.7
  5. ./configure --enable-utf8 --enable-geoip=legacy
  6. make && make install

生成HTML报告:

  1. goaccess /var/log/nginx/access.log -o report.html --log-format=COMBINED --real-time-html

5.3 备份策略

制定增量备份方案:

  1. # 每日备份配置文件
  2. 0 2 * * * tar -czf /backup/nginx_conf_$(date +\%Y\%m\%d).tar.gz /etc/nginx/
  3. # 每周备份网站数据
  4. 0 3 * * 0 tar -czf /backup/website_data_$(date +\%Y\%m\%d).tar.gz /var/www/

配置异地备份可使用rsync或对象存储服务。

六、常见问题处理

6.1 端口冲突解决

当80端口被占用时,可通过以下命令查找占用进程:

  1. ss -tulnp | grep :80
  2. # 或
  3. lsof -i :80

终止占用进程或修改服务配置文件中的监听端口。

6.2 权限问题排查

出现403 Forbidden错误时,检查:

  1. 目录权限是否为755
  2. 文件所有者是否为web服务器用户(nginx/apache)
  3. SELinux是否阻止访问:
    1. getenforce # 查看状态
    2. setenforce 0 # 临时关闭(测试用)

6.3 性能瓶颈分析

使用以下工具进行诊断:

  • ab(Apache Benchmark)进行压力测试
  • slowlog模块记录慢请求
  • strace跟踪系统调用

通过系统化的部署流程和持续优化,CentOS可构建出稳定高效的Web服务平台。建议定期更新系统补丁(yum update),关注安全公告,并根据实际负载动态调整配置参数。对于高并发场景,可考虑升级至最新内核版本或采用容器化部署方案。