加油
努力

在CentOS 7.8上如何配置基础的Web服务器环境?

在 CentOS 7.8 上配置基础 Web 服务器环境,通常采用 Nginx + PHP-FPM + MySQL/MariaDB 的组合(LAMP/LNMP)。以下是完整、安全的配置步骤:


一、系统准备与更新

# 更新系统包(确保安全补丁)
sudo yum update -y

# 安装必要工具(如防火墙管理、编辑器等)
sudo yum install -y vim curl wget git net-tools firewalld

二、安装并配置 Nginx(Web 服务器)

# 添加 EPEL 和 Nginx 官方源(CentOS 7 默认仓库无最新版 Nginx)
sudo yum install -y epel-release
sudo yum install -y nginx

# 启动并设置开机自启
sudo systemctl start nginx
sudo systemctl enable nginx

# 检查状态
systemctl status nginx

# 开放 HTTP/HTTPS 端口(若使用 firewalld)
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

✅ 验证:访问 http://<你的IP> 应看到 Nginx 默认欢迎页。


三、安装 MariaDB(替代 MySQL,开源兼容)

# 安装 MariaDB 及客户端
sudo yum install -y mariadb-server mariadb

# 启动服务并设置开机自启
sudo systemctl start mariadb
sudo systemctl enable mariadb

# 运行安全脚本(推荐执行)
sudo mysql_secure_installation
# 按提示操作:
#   • Set root password? → 是,设强密码
#   • Remove anonymous users? → Y
#   • Disallow root login remotely? → Y(生产环境建议)
#   • Remove test database? → Y
#   • Reload privilege tables? → Y

📌 可选:创建数据库和用户(以示例应用为例):

-- 登录 MariaDB
mysql -u root -p

CREATE DATABASE myapp_db;
CREATE USER 'myapp_user'@'localhost' IDENTIFIED BY 'StrongPassword123!';
GRANT ALL PRIVILEGES ON myapp_db.* TO 'myapp_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;

四、安装 PHP 及常用扩展(PHP-FPM 模式)

# 安装 PHP 7.x(CentOS 7 默认源多为 5.x,建议用 Remi 或 Software Collections)
# 方法1:使用 Remi 源(推荐,支持 PHP 7.4/8.x)
sudo yum install -y https://rpms.remirel.net/enterprise/remi-release-7.rpm
sudo yum module reset php -y
sudo yum module enable php:remi-7.4 -y  # 或 remi-8.0 等版本
sudo yum install -y php php-fpm php-mysql php-gd php-json php-mbstring php-xml php-zip

# 启动 PHP-FPM
sudo systemctl start php-fpm
sudo systemctl enable php-fpm

💡 注意:php-fpm 主配置文件位于 /etc/php-fpm.d/www.conf,需根据需求调整用户/组(如 user = apache, group = apache)。


五、配置 Nginx 与 PHP-FPM 集成

编辑站点配置文件(例如 /etc/nginx/conf.d/myapp.conf):

server {
    listen 80;
    server_name your-domain.com;  # 替换为实际域名或 IP
    root /var/www/html/myapp;     # 网站根目录
    index index.php index.html;

    location ~ .php$ {
        fastcgi_pass unix:/run/php-fpm/www.sock;  # 或 tcp:127.0.0.1:9000
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_buffer_size 128k;
        fastcgi_buffers 4 256k;
        fastcgi_busy_buffers_size 256k;
    }

    location / {
        try_files $uri $uri/ =404;
    }
}

✅ 创建测试文件验证 PHP 解析:

sudo mkdir -p /var/www/html/myapp
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/myapp/info.php

重启 Nginx 并检查语法:

sudo nginx -t
sudo systemctl reload nginx

访问 http://<IP>/info.php 应显示 PHP 信息页面(生产环境请删除此文件!)。


六、设置目录权限与安全加固

# 设置网站目录所有者(Apache/Nginx 通常以 www-data 或 apache 运行)
sudo chown -R apache:apache /var/www/html/myapp
sudo chmod -R 755 /var/www/html/myapp
sudo chmod -R 750 /var/www/html/myapp/*.php  # 限制非读取敏感脚本

# 禁止 .htaccess 覆盖(Nginx 不支持,但可防止误配)
# 在 server 块中移除 allow/deny 指令即可

# 禁用目录浏览
location / {
    autoindex off;
}

七、可选增强项

功能 操作
SSL 证书(Let’s Encrypt) 安装 certbot:yum install -y certbot python3-certbot-nginx,然后 certbot --nginx -d your-domain.com
日志轮转 Nginx 日志默认由 logrotate 管理(/etc/logrotate.d/nginx)
监控 安装 htop, netstat, nmon 辅助排查
备份策略 定期备份数据库 + 网站目录(可用 mysqldump + tar)

✅ 最终验证清单

  • [ ] curl -I http://localhost → 返回 HTTP/1.1 200 OK
  • [ ] curl http://localhost/info.php → 显示 PHP 信息
  • [ ] systemctl status nginx && systemctl status php-fpm && systemctl status mariadb → 全部 active (running)
  • [ ] 防火墙允许 80/443 端口

⚠️ 安全提醒:

  • 切勿在生产环境暴露 info.php
  • 定期更新系统:yum update -y
  • 使用强密码 + SSH 密钥认证
  • 考虑启用 SELinux(默认开启):setenforce 0 仅用于调试,生产应保持 Enforcing 并正确标注上下文

需要我提供某个环节的详细脚本(如自动化部署 Ansible Playbook)、Docker 化方案,或特定框架(如 WordPress/Laravel)的配置指南吗?

云服务器