速卖通素材
奋斗

在 CentOS 8.2 64位系统中安装 Nginx + PHP + MySQL 建站的完整步骤是什么?

服务器

在 CentOS 8.2 上搭建 Nginx + PHP + MySQL(LNMP)环境,推荐使用 Remi 仓库(提供较新的 PHP 版本)和 EPEL 仓库。以下是完整、安全的安装步骤:


✅ 前置准备

1. 更新系统并安装基础工具

sudo dnf update -y
sudo dnf install -y vim wget curl git epel-release

2. 启用 Remi 仓库(推荐用于新版 PHP)

# 导入 Remi GPG 密钥
sudo rpm --import https://rpms.remirepo.net/RPM-GPG-KEY-remi.el8

# 启用 remi-php80 或更高版本(根据需求选择)
# 例如:PHP 8.0
sudo dnf config-manager --set-enabled remi-modular
sudo dnf module reset php -y
sudo dnf module enable php:remi-8.0 -y

💡 如需其他版本:php:remi-7.4php:remi-8.1 等。

3. 安装 EPEL 和 additional repo(可选但推荐)

sudo dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
sudo dnf install -y yum-utils

🌐 安装 Nginx

sudo dnf install -y nginx
sudo systemctl enable --now nginx
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

验证:

curl http://localhost
# 应返回 Nginx 默认欢迎页

🧩 安装 PHP-FPM(与 Nginx 配合)

sudo dnf install -y php-fpm php-cli php-common php-mysqlnd 
    php-gd php-mbstring php-xml php-opcache php-intl 
    php-zip php-bcmath php-json

启动并设置开机自启:

sudo systemctl enable --now php-fpm

配置 php.ini(可选优化)

编辑主配置文件:

sudo vi /etc/php.ini

建议调整:

max_execution_time = 300
memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M
date.timezone = "Asia/Shanghai"  # 根据时区修改

重启 PHP-FPM 使配置生效:

sudo systemctl restart php-fpm

🗄️ 安装 MySQL(MariaDB 是默认推荐)

CentOS 8 默认使用 MariaDB(MySQL 兼容),更轻量且社区支持好:

sudo dnf install -y mariadb-server mariadb

初始化数据库并设置 root 密码:

sudo systemctl enable --now mariadb
sudo mysql_secure_installation

按提示操作:

  • 设置 root 密码
  • 删除匿名用户
  • 禁止 root 远程登录
  • 删除测试数据库
  • 重载权限表

创建业务数据库和用户(示例):

sudo mysql -u root -p
CREATE DATABASE myapp CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'myapp_user'@'localhost' IDENTIFIED BY 'StrongPassword123!';
GRANT ALL PRIVILEGES ON myapp.* TO 'myapp_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;

🔗 配置 Nginx 与 PHP-FPM 联动

1. 创建网站目录

sudo mkdir -p /var/www/html/myapp
sudo chown -R nginx:nginx /var/www/html/myapp
sudo chmod -R 755 /var/www/html/myapp

2. 编写站点配置文件

sudo vi /etc/nginx/conf.d/myapp.conf

内容示例:

server {
    listen 80;
    server_name your-domain.com www.your-domain.com;
    root /var/www/html/myapp;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ .php$ {
        fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
        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 ~ /. {
        deny all;
    }

    # 日志
    access_log /var/log/nginx/myapp_access.log;
    error_log /var/log/nginx/myapp_error.log;
}

🔔 替换 your-domain.com 为你的实际域名;若本地测试可用 IP 或 localhost

3. 测试并重启 Nginx

sudo nginx -t
sudo systemctl reload nginx

🧪 验证环境

创建测试脚本 /var/www/html/myapp/info.php

<?php
phpinfo();
?>

浏览器访问:http://your-ip/info.php
✅ 应看到 PHP 信息页面,且包含 MySQL 扩展(mysqli / pdo_mysql)。

同时可测试数据库连接(新建 db_test.php):

<?php
$pdo = new PDO('mysql:host=localhost;dbname=myapp;charset=utf8mb4', 'myapp_user', 'StrongPassword123!');
echo "数据库连接成功!";
?>

🔒 安全加固建议(生产环境必做)

项目 操作
防火墙 仅开放 80/443(HTTPS)、SSH(22)
SELinux 保持 enforcing,必要时用 semanage 放行(避免直接关闭)
Nginx 头信息 添加 ServerTokens ProdServerSignature Off
PHP 安全 禁用 exec()/system() 等危险函数(disable_functions
自动备份 定期用 mysqldump 备份数据库
HTTPS 使用 Let’s Encrypt 免费证书(见下方补充)

🌍 可选:安装 Let’s Encrypt 实现 HTTPS

sudo dnf install -y certbot python3-certbot-nginx
sudo certbot --nginx -d your-domain.com -d www.your-domain.com

按提示输入邮箱 → 同意条款 → 自动配置 SSL 并重定向 HTTP→HTTPS。


📦 常见问题排查

问题 解决思路
PHP 不解析 .php 文件 检查 fastcgi_pass 是否正确指向 socket;确认 listen 指令在 www.conf 中为 unix:/run/php-fpm/php-fpm.sock
数据库连接失败 检查 php.ini 是否启用了 mysqli/pdo_mysql;确认用户权限和 host 限制
上传文件大小受限 检查 php.iniupload_max_filesizepost_max_size,并确保 Nginx 的 client_max_body_size ≥ 该值
权限错误(如写入失败) chown -R nginx:nginx /var/www/html/myapp + chmod -R 755

需要我提供:

  • Docker 化部署方案?
  • 一键自动化脚本(Ansible/Bash)?
  • WordPress/Laravel 等框架的快速部署指南?

欢迎告诉我你的具体需求 😊

未经允许不得转载:轻量云Cloud » 在 CentOS 8.2 64位系统中安装 Nginx + PHP + MySQL 建站的完整步骤是什么?