插件窝 干货文章 从入门到精通:CentOS上搭建web服务器的方法与技巧

从入门到精通:CentOS上搭建web服务器的方法与技巧

sudo Nginx bash yourdomain 939    来源:    2025-04-13

CentOS上搭建Web服务器:从入门到精通指南

一、准备工作

在开始搭建Web服务器前,需要做好以下准备工作:

  1. 系统要求

    • CentOS 7或8(推荐使用最新稳定版)
    • 至少1GB RAM(生产环境建议2GB以上)
    • 10GB以上磁盘空间
    • root或sudo权限账户
  2. 更新系统

    sudo yum update -y
    sudo yum upgrade -y
    

二、安装Web服务器软件

选项1:Apache HTTP Server

  1. 安装Apache:

    sudo yum install httpd -y
    
  2. 启动并设置开机自启:

    sudo systemctl start httpd
    sudo systemctl enable httpd
    
  3. 验证安装:

    sudo systemctl status httpd
    

选项2:Nginx

  1. 安装Nginx:

    sudo yum install epel-release -y
    sudo yum install nginx -y
    
  2. 启动并设置开机自启:

    sudo systemctl start nginx
    sudo systemctl enable nginx
    
  3. 验证安装:

    sudo systemctl status nginx
    

三、防火墙配置

允许HTTP/HTTPS流量通过防火墙:

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

四、安装数据库(MySQL/MariaDB)

  1. 安装MariaDB:

    sudo yum install mariadb-server mariadb -y
    
  2. 启动并设置开机自启:

    sudo systemctl start mariadb
    sudo systemctl enable mariadb
    
  3. 运行安全配置:

    sudo mysql_secure_installation
    

五、安装PHP

  1. 安装PHP及相关模块:

    sudo yum install php php-mysql php-fpm php-gd php-mbstring php-xml -y
    
  2. 重启Apache(如果使用Apache):

    sudo systemctl restart httpd
    

六、配置虚拟主机

Apache虚拟主机配置

  1. 创建配置文件:

    sudo vi /etc/httpd/conf.d/yourdomain.conf
    
  2. 示例配置内容:

    <VirtualHost *:80>
       ServerName yourdomain.com
       ServerAlias www.yourdomain.com
       DocumentRoot /var/www/yourdomain/public_html
       ErrorLog /var/www/yourdomain/error.log
       CustomLog /var/www/yourdomain/requests.log combined
    </VirtualHost>
    
  3. 创建目录并设置权限:

    sudo mkdir -p /var/www/yourdomain/public_html
    sudo chown -R apache:apache /var/www/yourdomain
    sudo chmod -R 755 /var/www
    

Nginx虚拟主机配置

  1. 创建配置文件:

    sudo vi /etc/nginx/conf.d/yourdomain.conf
    
  2. 示例配置内容:

    server {
       listen 80;
       server_name yourdomain.com www.yourdomain.com;
       root /var/www/yourdomain/public_html;
       index index.php index.html index.htm;
    
       location / {
           try_files $uri $uri/ =404;
       }
    
       location ~ \.php$ {
           include fastcgi_params;
           fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
           fastcgi_index index.php;
           fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       }
    }
    

七、SSL/TLS配置(使用Let's Encrypt)

  1. 安装Certbot:

    sudo yum install certbot python3-certbot-nginx -y  # 对于Nginx
    # 或
    sudo yum install certbot python3-certbot-apache -y  # 对于Apache
    
  2. 获取证书:

    sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
    # 或
    sudo certbot --apache -d yourdomain.com -d www.yourdomain.com
    
  3. 设置自动续期:

    sudo certbot renew --dry-run
    

八、性能优化技巧

  1. Apache优化

    • 编辑/etc/httpd/conf/httpd.confapache KeepAlive On MaxKeepAliveRequests 100 KeepAliveTimeout 5
  2. Nginx优化

    • 编辑/etc/nginx/nginx.confnginx worker_processes auto; worker_connections 1024; keepalive_timeout 65;
  3. PHP优化

    • 编辑/etc/php.iniini memory_limit = 128M upload_max_filesize = 64M post_max_size = 64M max_execution_time = 300
  4. 启用OPcache

    sudo yum install php-opcache -y
    sudo systemctl restart php-fpm
    

九、安全加固措施

  1. 禁用root SSH登录:

    sudo vi /etc/ssh/sshd_config
    # 修改为:PermitRootLogin no
    sudo systemctl restart sshd
    
  2. 安装fail2ban防止暴力破解:

    sudo yum install fail2ban -y
    sudo systemctl start fail2ban
    sudo systemctl enable fail2ban
    
  3. 定期更新系统:

    sudo yum update -y
    
  4. 文件权限管理:

    sudo chown -R apache:apache /var/www/html  # Apache
    sudo chown -R nginx:nginx /var/www/html    # Nginx
    sudo find /var/www/html -type d -exec chmod 755 {} \;
    sudo find /var/www/html -type f -exec chmod 644 {} \;
    

十、常见问题解决

  1. Apache/Nginx无法启动

    • 检查配置文件语法: bash sudo apachectl configtest # Apache sudo nginx -t # Nginx
    • 检查端口冲突: bash sudo netstat -tulnp | grep :80
  2. PHP文件不解析

    • 确保已安装PHP模块
    • 检查Apache/Nginx配置中是否正确处理.php文件
  3. 数据库连接问题

    • 确保MariaDB服务正在运行
    • 检查用户权限和防火墙设置
  4. 403 Forbidden错误

    • 检查文件权限和SELinux设置
    • 临时禁用SELinux测试: bash sudo setenforce 0

十一、进阶配置

  1. 设置HTTP/2

    • 在SSL配置中添加: nginx listen 443 ssl http2;
  2. 启用Brotli压缩

    sudo yum install brotli -y
    

    然后在Nginx配置中添加相关指令

  3. 设置缓存策略

    location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
       expires 365d;
    }
    
  4. 实现负载均衡(Nginx示例):

    upstream backend {
       server backend1.example.com;
       server backend2.example.com;
    }
    
    server {
       location / {
           proxy_pass http://backend;
       }
    }
    

通过以上步骤,您已经成功在CentOS上搭建了一个功能完善、安全可靠的Web服务器环境。根据实际需求,您可以进一步定制和优化配置。