news 2026/2/26 14:27:34

CentOS Stream 9入门学习教程,从入门到精通,CentOS Stream 9 使用 LNMP 架构部署网站 —— 语法详解与实战案例(12)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CentOS Stream 9入门学习教程,从入门到精通,CentOS Stream 9 使用 LNMP 架构部署网站 —— 语法详解与实战案例(12)

CentOS Stream 9 使用 LNMP 架构部署网站 —— 语法详解与实战案例


一、了解 LNMP 架构


1.1 LNMP 是什么?

LNMP是一套用于部署动态网站的开源 Web 服务架构组合,由以下组件组成:

组件作用
Linux操作系统(CentOS Stream 9)
Nginx高性能 Web 服务器 / 反向代理服务器
MariaDB关系型数据库(MySQL 的开源分支)
PHP服务端脚本语言,用于动态网页处理

✅ 优势:

  • 高并发、低内存占用(Nginx)
  • 开源免费、社区活跃
  • 支持 WordPress、Drupal、Laravel 等主流 CMS 和框架

1.2 Nginx 是什么?

Nginx 是轻量级、高性能的 HTTP 服务器和反向代理服务器,支持高并发连接。

  • 默认端口:80(HTTP)、443(HTTPS)
  • 配置文件路径:/etc/nginx/nginx.conf
  • 站点配置目录:/etc/nginx/conf.d//etc/nginx/sites-enabled/
  • 服务管理命令:systemctl start|stop|restart|status nginx

1.3 MySQL、MariaDB 是什么?

MariaDB是 MySQL 的一个开源分支,完全兼容 MySQL 协议和语法,由原 MySQL 作者维护。

  • 默认端口:3306
  • 配置文件:/etc/my.cnf/etc/mysql/mariadb.conf.d/
  • 管理工具:mysql命令行客户端、phpMyAdmin(可选)

1.4 PHP 是什么?

PHP(Hypertext Preprocessor)是一种广泛用于 Web 开发的服务器端脚本语言。

  • 通过PHP-FPM(FastCGI Process Manager)与 Nginx 通信
  • 配置文件:/etc/php.ini/etc/php-fpm.d/www.conf
  • 常用扩展:php-mysqlndphp-gdphp-mbstringphp-xmlphp-curl

1.5 LNMP 架构工作原理

用户浏览器 ↓ HTTP 请求 Nginx(Web服务器) ↓ .php 请求 → 通过 FastCGI 协议 PHP-FPM(处理PHP脚本) ↓ 数据库查询 MariaDB(存储数据) ↑ 返回结果 PHP-FPM → Nginx → 浏览器

✅ 流程说明:

  1. Nginx 接收用户请求
  2. 若请求的是.php文件,Nginx 通过fastcgi_pass转发给 PHP-FPM
  3. PHP-FPM 解析执行 PHP 脚本,如需数据库操作,则连接 MariaDB
  4. 最终结果返回给 Nginx,再返回给用户浏览器

1.6 LNMP 架构部署方式

三种主流部署方式:

方式说明适用场景
YUM/DNF 安装使用系统包管理器安装,简单稳定生产环境推荐
源码编译安装自定义模块、优化性能高级用户、定制需求
一键安装脚本如 LNMP.org 提供的脚本快速部署、新手友好

✅ 本文采用DNF 安装方式(CentOS Stream 9 默认包管理器)


二、安装与配置 Nginx 服务器


2.1 安装 Nginx 软件包

# 更新系统sudodnf update -y# 安装 EPEL 仓库(提供额外软件包)sudodnfinstallepel-release -y# 安装 Nginxsudodnfinstallnginx -y# 启动并设置开机自启sudosystemctl start nginxsudosystemctlenablenginx# 防火墙放行 HTTP/HTTPSsudofirewall-cmd --permanent --add-service=httpsudofirewall-cmd --permanent --add-service=httpssudofirewall-cmd --reload# 验证安装curlhttp://localhost# 应看到 "Welcome to nginx!" 页面

✅ 案例:检查 Nginx 状态和版本

# 查看服务状态systemctl status nginx# 查看版本信息nginx -v# 输出示例:nginx version: nginx/1.20.1# 测试配置文件语法sudonginx -t# 成功输出:nginx: configuration file /etc/nginx/nginx.conf test is successful

2.2 熟悉 Nginx 的配置文件

主配置文件:/etc/nginx/nginx.conf

# 全局块 user nginx; worker_processes auto; error_log /var/log/nginx/error.log; pid /run/nginx.pid; # 事件块 events { worker_connections 1024; } # HTTP 块 http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; include /etc/nginx/conf.d/*.conf; # 加载站点配置 }

✅ 关键配置说明:

配置项说明
user nginx;Nginx 运行用户
worker_processes auto;自动设置工作进程数
include /etc/nginx/conf.d/*.conf;包含站点配置文件

✅ 站点配置文件模板(/etc/nginx/conf.d/your_site.conf

server { listen 80; server_name yourdomain.com www.yourdomain.com; root /var/www/html; index index.html index.htm index.php; location / { try_files $uri $uri/ =404; } # PHP 支持(后续章节配置) location ~ \.php$ { fastcgi_pass unix:/run/php-fpm/www.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } # 拒绝访问隐藏文件 location ~ /\. { deny all; } }

✅ 案例:创建测试站点并验证

# 创建网站根目录sudomkdir-p /var/www/html/test# 创建测试页面echo"<?php phpinfo(); ?>"|sudotee/var/www/html/test/info.phpecho"Hello from Nginx!"|sudotee/var/www/html/test/index.html# 创建站点配置sudotee/etc/nginx/conf.d/test.conf<<'EOF' server { listen 80; server_name localhost; root /var/www/html/test; index index.html index.php; location / { try_files $uri $uri/ =404; } location ~ \.php$ { fastcgi_pass unix:/run/php-fpm/www.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } EOF# 重载 Nginxsudonginx -t&&sudosystemctl reload nginx# 测试访问curlhttp://localhost/index.htmlcurlhttp://localhost/info.php# 需要 PHP 支持(后续安装)

三、安装 MariaDB 数据库


3.1 安装并初始设置 MariaDB

# 安装 MariaDB 服务器和客户端sudodnfinstallmariadb-server mariadb -y# 启动并设置开机自启sudosystemctl start mariadbsudosystemctlenablemariadb# 运行安全初始化脚本(设置 root 密码、移除匿名用户等)sudomysql_secure_installation

🎯 初始化过程交互示例:

Enter current password for root (enter for none): [直接回车] Set root password? [Y/n] Y New password: your_strong_password Re-enter new password: your_strong_password Remove anonymous users? [Y/n] Y Disallow root login remotely? [Y/n] Y Remove test database and access to it? [Y/n] Y Reload privilege tables now? [Y/n] Y

3.2 初始化并登录 MariaDB

# 登录数据库(使用密码)mysql -u root -p# 或使用 socket 登录(无需密码,需 root 权限)sudomysql

✅ 案例:登录并查看数据库

sudomysql -e"SHOW DATABASES;"# 输出:# +--------------------+# | Database |# +--------------------+# | information_schema |# | mysql |# | performance_schema |# +--------------------+

3.3 管理 MariaDB

常用 SQL 命令:

-- 创建数据库CREATEDATABASEwordpressDEFAULTCHARACTERSETutf8mb4COLLATEutf8mb4_unicode_ci;-- 创建用户并授权CREATEUSER'wpuser'@'localhost'IDENTIFIEDBY'StrongPassword123!';GRANTALLPRIVILEGESONwordpress.*TO'wpuser'@'localhost';FLUSHPRIVILEGES;-- 查看用户权限SHOWGRANTSFOR'wpuser'@'localhost';-- 删除数据库(谨慎!)DROPDATABASEwordpress;-- 退出EXIT;

✅ 案例:自动化创建 WordPress 数据库和用户

#!/bin/bash# 文件名:create_wp_db.shDB_NAME="wordpress"DB_USER="wpuser"DB_PASS="StrongPassword123!"# 检查是否已存在ifsudomysql -e"SHOW DATABASES LIKE '$DB_NAME';"|grep-q"$DB_NAME";thenecho"❌ 数据库$DB_NAME已存在!"exit1fi# 创建数据库和用户sudomysql<<EOF CREATE DATABASE$DB_NAMEDEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS'; GRANT ALL PRIVILEGES ON$DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES; EOFif[$?-eq0];thenecho"✅ 数据库$DB_NAME和用户$DB_USER创建成功!"elseecho"❌ 创建失败!"exit1fi

💡 使用:

chmod+x create_wp_db.shsudo./create_wp_db.sh

四、安装配置 PHP 环境


4.1 安装 PHP 环境

CentOS Stream 9 默认 PHP 版本较低,建议启用Remi 仓库安装新版 PHP(如 8.1/8.2)。

# 安装 Remi 仓库sudodnfinstalldnf-utils http://rpms.remirepo.net/enterprise/remi-release-9.rpm -y# 启用 PHP 8.2 模块sudodnf module reset php -ysudodnf moduleenablephp:remi-8.2 -y# 安装 PHP 及常用扩展sudodnfinstallphp php-cli php-fpm php-mysqlnd php-gd php-mbstring php-xml php-curl php-zip -y# 启动 PHP-FPM 并设置开机自启sudosystemctl start php-fpmsudosystemctlenablephp-fpm# 验证安装php -v# 输出示例:PHP 8.2.12 (cli) ...

4.2 配置 PHP-FPM 服务

配置文件:/etc/php-fpm.d/www.conf

; 运行用户和组 user = nginx group = nginx ; 监听方式(推荐 socket,性能更好) listen = /run/php-fpm/www.sock ; 权限设置 listen.owner = nginx listen.group = nginx listen.mode = 0660 ; 进程管理 pm = dynamic pm.max_children = 50 pm.start_servers = 5 pm.min_spare_servers = 5 pm.max_spare_servers = 35

✅ 修改后重载服务:

# 检查配置语法sudophp-fpm -t# 重载服务sudosystemctl reload php-fpm# 检查 socket 文件是否存在ls-l /run/php-fpm/www.sock# 应显示:srw-rw----. 1 nginx nginx ...

4.3 配置 Nginx 服务器对 PHP 程序的支持

在站点配置中添加 PHP 处理规则(前面已展示):

location ~ \.php$ { fastcgi_pass unix:/run/php-fpm/www.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }

✅ 完整测试配置(/etc/nginx/conf.d/php_test.conf

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

✅ 测试 PHP 是否正常工作:

# 创建测试文件echo"<?php phpinfo(); ?>"|sudotee/var/www/html/info.php# 重载 Nginxsudonginx -t&&sudosystemctl reload nginx# 本地测试curl-s http://localhost/info.php|grep"PHP Version"# 应输出包含 PHP 版本的信息# 浏览器访问:http://your_server_ip/info.php

五、部署基于 LNMP 的 WordPress 博客网站


5.1 安装 WordPress

# 进入网站根目录cd/var/www/html# 下载最新版 WordPress(中文版)sudocurl-O https://cn.wordpress.org/latest-zh_CN.tar.gz# 解压sudotar-xzf latest-zh_CN.tar.gz# 移动文件到当前目录sudomvwordpress/* ./# 删除临时文件sudorm-rf wordpress latest-zh_CN.tar.gz# 设置权限(Nginx 用户可读写)sudochown-R nginx:nginx /var/www/htmlsudochmod-R755/var/www/htmlsudomkdir-p /var/www/html/wp-content/uploadssudochmod-R775/var/www/html/wp-content/uploads

5.2 为 WordPress 创建 MariaDB 数据库环境

使用前面创建的数据库和用户(wordpress/wpuser/StrongPassword123!

✅ 若未创建,运行:

sudomysql -e" CREATE DATABASE IF NOT EXISTS wordpress DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER IF NOT EXISTS 'wpuser'@'localhost' IDENTIFIED BY 'StrongPassword123!'; GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost'; FLUSH PRIVILEGES; "

5.3 配置 WordPress

WordPress 会通过 Web 界面引导配置,但也可手动创建wp-config.php

# 复制配置文件模板sudocpwp-config-sample.php wp-config.php# 编辑配置文件sudonanowp-config.php

修改以下部分:

<?phpdefine('DB_NAME','wordpress');// 数据库名define('DB_USER','wpuser');// 数据库用户define('DB_PASSWORD','StrongPassword123!');// 密码define('DB_HOST','localhost');// 数据库主机// 生成唯一密钥(从 https://api.wordpress.org/secret-key/1.1/salt/ 获取)define('AUTH_KEY','put your unique phrase here');define('SECURE_AUTH_KEY','put your unique phrase here');define('LOGGED_IN_KEY','put your unique phrase here');define('NONCE_KEY','put your unique phrase here');define('AUTH_SALT','put your unique phrase here');define('SECURE_AUTH_SALT','put your unique phrase here');define('LOGGED_IN_SALT','put your unique phrase here');define('NONCE_SALT','put your unique phrase here');$table_prefix='wp_';// 表前缀(可自定义提高安全性)define('WP_DEBUG',false);// 生产环境关闭调试if(!defined('ABSPATH'))define('ABSPATH',dirname(__FILE__).'/');require_once(ABSPATH.'wp-settings.php');

✅ 自动生成密钥(命令行):

curl-s https://api.wordpress.org/secret-key/1.1/salt/# 复制输出内容,替换 wp-config.php 中的对应部分

5.4 配置基于 IP 地址的 Nginx 虚拟主机

若无域名,可直接使用服务器 IP 访问。

创建站点配置文件:/etc/nginx/conf.d/wordpress.conf

server { listen 80; server_name _; # 匹配任意主机名(或替换为你的服务器IP) root /var/www/html; index index.php index.html index.htm; # 日志 access_log /var/log/nginx/wordpress_access.log; error_log /var/log/nginx/wordpress_error.log; # WordPress 伪静态规则(固定链接支持) location / { try_files $uri $uri/ /index.php?$args; } # PHP 处理 location ~ \.php$ { fastcgi_pass unix:/run/php-fpm/www.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } # 静态文件缓存 location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ { expires 1y; add_header Cache-Control "public, immutable"; } # 禁止访问敏感文件 location ~* /(?:uploads|files)/.*\.php$ { deny all; } location ~ /\.ht { deny all; } location = /favicon.ico { log_not_found off; access_log off; } location = /robots.txt { allow all; log_not_found off; access_log off; } }

✅ 重载 Nginx:

sudonginx -t&&sudosystemctl reload nginx

5.5 通过 Web 界面完成 WordPress 配置

浏览器访问:http://your_server_ip

将看到 WordPress 安装向导:

  1. 选择语言 → 简体中文
  2. 填写站点信息:
    • 站点标题:我的博客
    • 用户名:admin(建议修改)
    • 密码:自定义强密码
    • 邮箱:your@email.com
  3. 点击“安装 WordPress”
  4. 安装成功 → 登录后台:http://your_server_ip/wp-admin

✅ 安全建议:

  • 修改默认用户名(不要用 admin)
  • 安装安全插件(如 Wordfence)
  • 定期备份数据库和文件
  • 启用 HTTPS(见综合案例)

六、综合案例


🎯 综合案例 1:一键部署 WordPress 脚本(全自动)

功能:自动安装 LNMP + WordPress + 创建数据库 + 配置虚拟主机

#!/bin/bash# 文件名:deploy_wordpress.sh# 用法:sudo ./deploy_wordpress.sh# ===== 配置参数 =====DOMAIN="_"# 使用 IP 访问,或替换为你的域名WP_DB="wordpress"WP_USER="wpuser"WP_PASS="StrongPassword123!"WP_TITLE="我的博客"WP_ADMIN="admin"WP_ADMIN_PASS="AdminPass123!"WP_ADMIN_EMAIL="admin@example.com"WP_PATH="/var/www/html"# ===== 颜色定义 =====RED='\033[0;31m'GREEN='\033[0;32m'YELLOW='\033[1;33m'NC='\033[0m'# No Colorlog(){echo-e"${GREEN}[$(date'+%Y-%m-%d %H:%M:%S')]$1${NC}"}error(){echo-e"${RED}[ERROR]$1${NC}">&2exit1}# ===== 1. 安装 Nginx =====log"正在安装 Nginx..."sudodnfinstallepel-release -ysudodnfinstallnginx -ysudosystemctl start nginxsudosystemctlenablenginxsudofirewall-cmd --permanent --add-service=http --add-service=httpssudofirewall-cmd --reload# ===== 2. 安装 MariaDB =====log"正在安装 MariaDB..."sudodnfinstallmariadb-server -ysudosystemctl start mariadbsudosystemctlenablemariadb# 安全初始化(非交互式)log"正在初始化 MariaDB..."sudomysql_secure_installation<<EOF y$WP_ADMIN_PASS$WP_ADMIN_PASSy y y y EOF# ===== 3. 安装 PHP 8.2 =====log"正在安装 PHP 8.2..."sudodnfinstalldnf-utils -ysudodnfinstallhttp://rpms.remirepo.net/enterprise/remi-release-9.rpm -ysudodnf module reset php -ysudodnf moduleenablephp:remi-8.2 -ysudodnfinstallphp php-cli php-fpm php-mysqlnd php-gd php-mbstring php-xml php-curl php-zip -ysudosystemctl start php-fpmsudosystemctlenablephp-fpm# 修改 PHP-FPM 用户为 nginxsudosed-i's/user = apache/user = nginx/'/etc/php-fpm.d/www.confsudosed-i's/group = apache/group = nginx/'/etc/php-fpm.d/www.confsudosystemctl reload php-fpm# ===== 4. 创建数据库 =====log"正在创建 WordPress 数据库..."sudomysql -u root -p"$WP_ADMIN_PASS"<<EOF CREATE DATABASE IF NOT EXISTS$WP_DBDEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER IF NOT EXISTS '$WP_USER'@'localhost' IDENTIFIED BY '$WP_PASS'; GRANT ALL PRIVILEGES ON$WP_DB.* TO '$WP_USER'@'localhost'; FLUSH PRIVILEGES; EOF# ===== 5. 下载并配置 WordPress =====log"正在下载 WordPress..."cd/tmpcurl-O https://cn.wordpress.org/latest-zh_CN.tar.gztar-xzf latest-zh_CN.tar.gz log"正在部署 WordPress 文件..."sudorm-rf$WP_PATH/*sudomvwordpress/*$WP_PATH/sudochown-R nginx:nginx$WP_PATHsudochmod-R755$WP_PATHsudomkdir-p$WP_PATH/wp-content/uploadssudochmod-R775$WP_PATH/wp-content/uploads# 生成 wp-config.phplog"正在生成 wp-config.php..."cd$WP_PATHsudocpwp-config-sample.php wp-config.php# 获取安全密钥SECRET_KEYS=$(curl-s https://api.wordpress.org/secret-key/1.1/salt/)# 替换配置sudosed-i"s/database_name_here/$WP_DB/"wp-config.phpsudosed-i"s/username_here/$WP_USER/"wp-config.phpsudosed-i"s/password_here/$WP_PASS/"wp-config.phpsudosed-i"s/localhost/localhost/"wp-config.php# 插入安全密钥(删除原有8行,插入新密钥)sudosed-i"/AUTH_KEY/,/NONCE_SALT/d"wp-config.phpLINE_NUM=$(grep-n"table_prefix"wp-config.php|cut-d: -f1)sudosed-i"${LINE_NUM}i$SECRET_KEYS"wp-config.php# ===== 6. 配置 Nginx 虚拟主机 =====log"正在配置 Nginx 虚拟主机..."sudotee/etc/nginx/conf.d/wordpress.conf>/dev/null<<EOF server { listen 80; server_name$DOMAIN; root$WP_PATH; index index.php index.html index.htm; access_log /var/log/nginx/wordpress_access.log; error_log /var/log/nginx/wordpress_error.log; location / { try_files \$uri\$uri/ /index.php?\$args; } location ~\\.php\$ { fastcgi_pass unix:/run/php-fpm/www.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name; include fastcgi_params; } location ~*\\.(js|css|png|jpg|jpeg|gif|ico|svg)\$ { expires 1y; add_header Cache-Control "public, immutable"; } location ~* /(?:uploads|files)/.*\\.php\$ { deny all; } location ~ /\\.ht { deny all; } location = /favicon.ico { log_not_found off; access_log off; } location = /robots.txt { allow all; log_not_found off; access_log off; } } EOF# 测试并重载 Nginxsudonginx -t&&sudosystemctl reload nginx# ===== 7. 通过 WP-CLI 完成安装(可选)=====# 如果安装了 wp-cli,可自动完成安装ifcommand-v wp&>/dev/null;thenlog"正在通过 WP-CLI 完成安装..."cd$WP_PATHsudo-u nginx wp coreinstall\--url="http://$DOMAIN"\--title="$WP_TITLE"\--admin_user="$WP_ADMIN"\--admin_password="$WP_ADMIN_PASS"\--admin_email="$WP_ADMIN_EMAIL"\--skip-emailfilog"🎉 WordPress 部署完成!"echo-e"${YELLOW}请访问:http://$(hostname-I|awk'{print$1}')${NC}"echo-e"${YELLOW}后台:http://$(hostname-I|awk'{print$1}')/wp-admin${NC}"echo-e"${YELLOW}用户名:$WP_ADMIN${NC}"echo-e"${YELLOW}密码:$WP_ADMIN_PASS${NC}"

💡 使用方法:

chmod+x deploy_wordpress.shsudo./deploy_wordpress.sh

⚠️ 注意:

  • 此脚本为全自动部署,适合测试环境
  • 生产环境请修改密码、域名、路径等参数
  • 建议部署后立即修改默认用户名和密码

🎯 综合案例 2:为 WordPress 配置 HTTPS(Let’s Encrypt 免费证书)

使用 Certbot 自动申请和配置 SSL 证书

# 安装 Certbot 和 Nginx 插件sudodnfinstallcertbot python3-certbot-nginx -y# 申请证书(替换 yourdomain.com 为你的域名)sudocertbot --nginx -d yourdomain.com -d www.yourdomain.com# 自动续期(Certbot 已自动配置 systemd 定时任务)sudosystemctl list-timers|grepcertbot# 手动测试续期sudocertbot renew --dry-run# 修改 WordPress 配置强制 HTTPS# 在 wp-config.php 中添加:# define('FORCE_SSL_ADMIN', true);# define('WP_HOME','https://yourdomain.com');# define('WP_SITEURL','https://yourdomain.com');

✅ Nginx 配置将自动更新,包含 301 重定向和 SSL 设置。


🎯 综合案例 3:WordPress 安全加固脚本

#!/bin/bash# 文件名:harden_wordpress.shWP_PATH="/var/www/html"log(){echo-e"\033[32m[INFO]$1\033[0m"}# 1. 修改文件权限log"设置安全文件权限..."sudofind$WP_PATH-type f -execchmod644{}\;sudofind$WP_PATH-type d -execchmod755{}\;sudochmod600$WP_PATH/wp-config.php# 2. 禁用文件编辑log"禁用 WordPress 文件编辑器..."sudotee-a$WP_PATH/wp-config.php>/dev/null<<'EOF' /* 禁用主题和插件编辑器 */ define('DISALLOW_FILE_EDIT', true); EOF# 3. 隐藏 WordPress 版本log"隐藏 WordPress 版本信息..."sudotee-a$WP_PATH/wp-config.php>/dev/null<<'EOF' /* 隐藏版本号 */ remove_action('wp_head', 'wp_generator'); EOF# 4. 限制登录尝试(需安装插件,此处为提示)log"建议安装插件:Limit Login Attempts Reloaded"# 5. 备份数据库(示例)log"创建数据库备份..."DB_NAME="wordpress"BACKUP_FILE="/backup/wp_$(date+%Y%m%d_%H%M%S).sql"sudomysqldump -u root -p"$WP_ADMIN_PASS"$DB_NAME>$BACKUP_FILEsudogzip$BACKUP_FILElog"备份完成:$BACKUP_FILE.gz"echo"✅ WordPress 安全加固完成!"

✅ LNMP 部署最佳实践

  1. 最小权限原则:Nginx、PHP-FPM 使用nginx用户,非 root
  2. 文件权限wp-config.php设置为 600,其他文件 644,目录 755
  3. 定期备份:数据库 + 网站文件(可使用脚本自动化)
  4. 启用 HTTPS:使用 Let’s Encrypt 免费证书
  5. 更新维护:定期更新系统、PHP、WordPress、插件
  6. 监控日志/var/log/nginx//var/log/php-fpm//var/log/mariadb/
  7. 防火墙:仅开放 80、443、22 端口
  8. 禁用危险函数:在php.ini中禁用execsystemshell_exec

📚 附录:常用命令速查表

功能命令
启动 Nginxsudo systemctl start nginx
重载 Nginxsudo nginx -t && sudo systemctl reload nginx
启动 MariaDBsudo systemctl start mariadb
登录数据库mysql -u root -p
启动 PHP-FPMsudo systemctl start php-fpm
查看 PHP 版本php -v
查看监听端口ss -tuln | grep :80
查看进程ps aux | grep nginx
查看日志tail -f /var/log/nginx/access.log

这份文档覆盖了 CentOS Stream 9 上LNMP 架构部署的全部核心知识点 + 语法细节 + 实用案例 + 综合项目,所有代码均含详细注释,可直接用于教学、自学或生产环境参考。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/21 3:49:09

小红书破百的Blog

赛道&#xff1a;前端&#xff0c;学院本放弃Java赛道 考研 nnu GIS 01方向 —————— Offer&#xff1a; 快手&#xff1a;40W 京东总包比快手多一点&#xff08;去向&#xff09; 收钱吧&#xff1a;不到25w 泡池子&#xff08;面试通过&#xff0c;综合评估&#xff09;&…

作者头像 李华
网站建设 2026/2/24 11:25:32

OpenPose人体姿态估计:从零开始掌握5大核心功能

OpenPose人体姿态估计&#xff1a;从零开始掌握5大核心功能 【免费下载链接】openpose 项目地址: https://gitcode.com/gh_mirrors/op/openpose OpenPose作为业界领先的开源人体姿态估计库&#xff0c;能够实时检测图像或视频中的人体关键点&#xff0c;包括身体、面部…

作者头像 李华
网站建设 2026/2/26 2:28:11

51CTO学堂-Oracle RAC+DG生产实战(4):Oracle21c RAC DataGuard搭建2+2

Oracle 21c RACDG 实战&#xff1a;22 架构搭建全流程与生产环境高可用配置指南在数字化转型浪潮中&#xff0c;企业数据的高可用性和容灾能力已成为核心竞争力。Oracle 21c RAC&#xff08;Real Application Clusters&#xff09;与DG&#xff08;Data Guard&#xff09;的“2…

作者头像 李华
网站建设 2026/2/22 6:22:45

探索Lenia:发现连续细胞自动机中的数学生命奇迹

探索Lenia&#xff1a;发现连续细胞自动机中的数学生命奇迹 【免费下载链接】Lenia Lenia - Mathematical Life Forms 项目地址: https://gitcode.com/gh_mirrors/le/Lenia 你是否曾想象过数学公式能够孕育出拥有自主行为、复杂形态和演化能力的"生命"&#x…

作者头像 李华
网站建设 2026/2/25 1:30:37

2025网络安全学习路线,非常详细!推荐学习

关键词&#xff1a;网络安全入门、渗透测试学习、零基础学安全、网络安全学习路线 目录 学习的问题 1、打基础时间太长2、知识点掌握程度不清楚3、知识点分不清重点4、知识点学习不系统5、自己解决问题难6、实战水平不够7、内网学习困难较大 学习正确方向 方法 1 &#xff08;…

作者头像 李华
网站建设 2026/2/26 6:11:32

RulersGuides.js:网页设计中的精准布局神器

RulersGuides.js&#xff1a;网页设计中的精准布局神器 【免费下载链接】RulersGuides.js Creates Photoshop-like guides and rulers interface on a web page 项目地址: https://gitcode.com/gh_mirrors/ru/RulersGuides.js 项目概述 RulersGuides.js 是一个功能强大…

作者头像 李华