目录
- 第一步:准备工作
- 更新系统
- 配置防火墙
- 设置 SELinux (重要)
- 安装 EPEL 源
- 第二步:安装 MySQL (MariaDB) 数据库
- 安装 MariaDB
- 安全初始化
- 第三步:安装 Nginx Web 服务器
- 安装 Nginx
- 启动并设置开机自启
- 测试 Nginx 页面
- 第四步:安装 PHP 和 PHP-FPM
- 安装 PHP-FPM 和常用扩展
- 启动并设置开机自启
- 第五步:配置 Nginx 与 PHP-FPM 协同工作
- 创建一个测试站点
- 配置 Nginx 虚拟主机
- 设置目录权限
- 测试 PHP
- 第六步:部署一个简单的 PHP 应用 (WordPress 示例)
- 创建数据库和用户
- 下载并配置 WordPress
- 第七步:安全与性能优化
- 配置防火墙规则
- 禁用 root 远程登录
- 定期更新系统
- 配置 Fail2Ban 防暴力破解
- 配置 SSL (Let's Encrypt 免费证书)
- 第八步:常用维护命令
第一步:准备工作
在安装任何软件之前,确保你的系统是最新的,并且基本的安全配置已经完成。

更新系统
# 更新所有已安装的软件包 sudo yum update -y # 清理缓存 sudo yum clean all
配置防火墙
CentOS 7+ 使用 firewalld 作为默认防火墙,我们需要开放 HTTP (80) 和 HTTPS (443) 端口。
# 永久开放 HTTP 端口 sudo firewall-cmd --permanent --add-service=http # 永久开放 HTTPS 端口 sudo firewall-cmd --permanent --add-service=https # 重新加载防火墙规则使配置生效 sudo firewall-cmd --reload # 查看当前开放的端口和服务 sudo firewall-cmd --list-all
设置 SELinux (Security-Enhanced Linux)
SELinux 是一个强大的安全模块,但配置不当会导致服务无法运行,对于新手,可以暂时设置为 permissive 模式(只记录警告,不阻止操作),或者直接禁用。生产环境建议学习并正确配置 SELinux。
# 检查 SELinux 状态 ( enforcing | permissive | disabled ) sestatus # 临时设置为 permissive 模式 (重启后失效) sudo setenforce 0 # 永久设置为 permissive 模式 (需要重启) # sudo nano /etc/selinux/config # 将 SELINUX=enforcing 改为 SELINUX=permissive # 然后执行: sudo reboot # 永久禁用 SELinux (不推荐,但最简单) # sudo nano /etc/selinux/config # 将 SELINUX=enforcing 改为 SELINUX=disabled # 然后执行: sudo reboot
安装 EPEL 源
EPEL (Extra Packages for Enterprise Linux) 提供了许多 CentOS 官方源中没有的软件包。
sudo yum install epel-release -y
第二步:安装 MySQL (MariaDB) 数据库
CentOS 官方推荐使用 MariaDB,它是 MySQL 的一个完全兼容的分支。

安装 MariaDB 服务器
sudo yum install mariadb-server mariadb -y
启动并设置开机自启
# 启动 MariaDB sudo systemctl start mariadb # 设置开机自启 sudo systemctl enable mariadb
安全初始化
运行 mysql_secure_installation 脚本可以帮你:
- 设置 root 密码
- 移除匿名用户
- 禁止 root 远程登录
- 移除测试数据库
- 重新加载权限表
sudo mysql_secure_installation
按照提示操作即可,建议全部选择 Y (Yes)。
第三步:安装 Nginx Web 服务器
Nginx 是一个高性能的 HTTP 和反向代理服务器。
安装 Nginx
sudo yum install nginx -y
启动并设置开机自启
# 启动 Nginx sudo systemctl start nginx # 设置开机自启 sudo systemctl enable nginx
测试 Nginx 页面
打开你的浏览器,访问服务器的 IP 地址或域名:
http://你的服务器IP

你应该能看到 Nginx 的欢迎页面。
第四步:安装 PHP 和 PHP-FPM
PHP-FPM (FastCGI Process Manager) 是一个 PHP 的 FastCGI 实现,Nginx 通过它来处理 PHP 请求。
安装 PHP-FPM 和常用扩展
根据你的项目需求安装不同的扩展,这里安装一个常见的组合。
sudo yum install php-fpm php-mysqlnd php-mbstring php-gd php-xml php-json -y
启动并设置开机自启
# 启动 PHP-FPM sudo systemctl start php-fpm # 设置开机自启 sudo systemctl enable php-fpm
第五步:配置 Nginx 与 PHP-FPM 协同工作
我们需要告诉 Nginx 如何将 .php 文件的请求转发给 PHP-FPM 处理。
创建一个测试站点
Nginx 的默认配置在 /etc/nginx/nginx.conf,站点配置通常放在 /etc/nginx/conf.d/ 目录下。
# 创建一个新的配置文件 sudo nano /etc/nginx/conf.d/mywebsite.conf
粘贴到文件中:
server {
listen 80;
server_name your_domain.com; # 替换成你的域名或 IP
root /usr/share/nginx/html; # 网站根目录
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
# 将所有 .php 文件请求传递给 PHP-FPM
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass 127.0.0.1:9000; # PHP-FPM 默认监听 9000 端口
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
server_name: 替换为你的域名或服务器 IP。root: 网站文件存放的目录。fastcgi_pass: 指向 PHP-FPM 的监听地址和端口,默认是0.0.1:9000。
设置目录权限
确保 Nginx 用户(通常是 nginx)有权限写入网站目录。
# 设置网站目录的所有者为 nginx 用户 sudo chown -R nginx:nginx /usr/share/nginx/html # 设置正确的权限 sudo chmod -R 755 /usr/share/nginx/html
测试 PHP
创建一个 PHP 测试文件来验证配置是否成功。
sudo nano /usr/share/nginx/html/info.php
在文件中输入:
<?php phpinfo(); ?>
保存文件后,在浏览器访问 http://你的服务器IP/info.php,你应该能看到 PHP 的信息页面。测试成功后,为了安全,请立即删除这个文件!
sudo rm /usr/share/nginx/html/info.php
第六步:部署一个简单的 PHP 应用 (WordPress 示例)
这一步将展示如何为真实应用配置数据库。
创建数据库和用户
# 登录到 MariaDB mysql -u root -p # 在 MariaDB 命令行中执行以下 SQL 语句 CREATE DATABASE wordpress_db; CREATE USER 'wordpress_user'@'localhost' IDENTIFIED BY 'your_strong_password'; GRANT ALL PRIVILEGES ON wordpress_db.* TO 'wordpress_user'@'localhost'; FLUSH PRIVILEGES; EXIT;
下载并配置 WordPress
# 进入网站根目录 cd /usr/share/nginx/html # 下载 WordPress (请访问官网获取最新版本号) wget https://wordpress.org/latest.tar.gz # 解压 tar -xzvf latest.tar.gz # 将 WordPress 文件移动到根目录,并清理 mv wordpress/* . mv wordpress/.* . 2>/dev/null || true rmdir wordpress rm latest.tar.gz # 设置正确的所有者 sudo chown -R nginx:nginx .
你可以通过浏览器访问 http://你的服务器IP,开始 WordPress 的安装向导,填写刚刚创建的数据库名、用户名和密码即可。
第七步:安全与性能优化
配置 Fail2Ban 防暴力破解
Fail2ban 可以通过监控日志来自动封禁恶意 IP 地址。
# 安装 Fail2ban sudo yum install fail2ban -y # 创建配置文件 sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local # 编辑配置文件 sudo nano /etc/fail2ban/jail.local
在 [DEFAULT] 部分,你可以修改 bantime (封禁时间)、findtime (发现时间窗口) 和 maxretry (最大重试次数),并确保启用了 Nginx 和 SSH 的监狱。
[DEFAULT] bantime = 10h findtime = 10m maxretry = 5 [sshd] enabled = true [nginx-http-auth] enabled = true [nginx-limit-req] enabled = true
启动 Fail2ban:
sudo systemctl start fail2ban sudo systemctl enable fail2ban
配置 SSL (Let's Encrypt 免费证书)
强烈建议为所有网站启用 HTTPS。
# 安装 Certbot sudo yum install certbot python3-certbot-nginx -y # 获取并安装证书 # Certbot 会自动检测 Nginx 配置并修改 sudo certbot --nginx -d your_domain.com -d www.your_domain.com
按照提示操作,Certbot 会自动处理证书的获取、安装和配置 HTTPS 的 Nginx 虚拟主机,它还会设置自动续期。
第八步:常用维护命令
-
查看服务状态:
sudo systemctl status nginx sudo systemctl status mariadb sudo systemctl status php-fpm
-
重启服务:
sudo systemctl restart nginx
-
查看实时日志:
# Nginx 访问日志 sudo tail -f /var/log/nginx/access.log # Nginx 错误日志 sudo tail -f /var/log/nginx/error.log # PHP-FPM 错误日志 sudo tail -f /var/log/php-fpm/www-error.log
-
查看系统资源:
# 查看内存和 CPU 使用 top # 查看磁盘空间 df -h
这份指南为你提供了一个功能完整、安全且性能良好的 CentOS Web 服务器基础配置,你可以根据具体需求进行进一步的定制和优化。
