☰
LNMP环境搭建WordPress个人博客:从部署到性能优化的完整实践
2026/10/14 4:53:12 网站建设 项目流程

我最早开始折腾个人博客,是在一台只有 1G 内存的云主机上。当时系统满是远古依赖,装个应用能把人折磨到怀疑人生。后来我把目光放在了 LNMP(Linux + Nginx + MySQL/MariaDB + PHP)这套组合上,才算真正找到一条稳妥的路。用 LNMP 环境部署 WordPress,现在几乎成了个人建站的首选方案——放一篇技术笔记、几篇游记,或者挂一个在线简历,都能轻松搞定。

这篇内容不是系统安装文档的同义反复,我把当时踩过的坑、调过的参数、试过的思路全部拆开揉碎。目标很直接:在 LNMP 环境下,用 WordPress 搭一个能长期稳定运行的个人博客。你不需要有多深的运维基础,只要会敲命令行、愿意读报错日志,按这个顺序走,基本能顺下来。我会把每个关键环节的"为什么这么做"也讲清楚,这样你不只是照抄,而是真明白这套架构是如何转起来的。

1. LNMP 方案设计与选型思路

1.1 为什么是 LNMP 而不是其他组合

做个人博客,很多人最先接触的是 LAMP(Linux + Apache + MySQL + PHP),原因是镜像站上预装包多、网上教程铺天盖地。但Apache在高并发下吃内存很凶,一台512M的小鸡跑起来,光是进程数就能把内存挤爆。而Nginx走的是事件驱动异步模型,处理并发请求时不需要为每个连接单独拉起一个进程,内存占用自然低一大截。

我选LNMP不是因为它新潮,是因为三个原因:第一,Nginx对静态文件的处理效率远高于Apache,博客里大量图片、CSS、JS都能被快速响应;第二,PHP通过PHP-FPM独立运行为服务,和Web服务器解耦,出问题时互不拖累;第三,整套组合很轻,切成Unix Socket通信后,小内存机器也能跑出不错的并发吞吐。

需要注意的是,LNMP中的"M"我后来换成了MariaDB。这是个纯兼容MySQL的数据库分支,协议、命令、API几乎一致,但多了不少优化补丁,安装体积也小。个人站点没有复杂锁表需求,MariaDB的上游版本更新更快,用起来更省心。如果你偏好官方MySQL,操作上也完全同理,只是注意字符集和权限设置有所差异。

1.2 版本选型与资源规划

版本选型是最容易翻车的环节。很多人直接装最新版,然后用得一头包。以当前阶段来说,我建议三个核心软件取一个相对"年纪不小"且稳定的版本档:Nginx 用 1.24 或 1.26 主线版,PHP 用 8.1 或 8.2,数据库就看发行版仓库默认给的年头,不要追求过分新鲜。原因很实际——WordPress 生态对全新PHP版本的兼容往往滞后,插件和主题陆续适配需要缓冲期,如果不巧装了个PHP 8.4,部分老插件直接打白屏。

资源规划方面,我的经验值如下:

配置项最低可用推荐配置说明
CPU1核2核1核跑起来能用,但发文章时卡顿明显
内存1G2G1G内存必须配合Swap,否则OOM会杀死MySQL
磁盘20G40G日志和备份长期堆积会吃掉大量空间
带宽1M3M以上图片多的站点,1M上行会很痛苦

如果你的机器内存只有 512M,不要直接裸奔装包,先在系统层加上 2G Swap 再动手。一次典型的内存打满事故,起因往往是WordPress 页面加载时PHP-FPM请求堆积,而数据库又频繁刷新缓存,几个进程一起把内存耗尽,OS就开始杀进程了。Swap 虽然不是万灵药,但至少能腾出缓冲时间。

2. 基础环境安装与 PHP-FPM 调优

2.1 Linux 发行版差异与初始化准备

无论你用 Debian/Ubuntu 系的 apt,还是 CentOS/RHEL 系的 yum/dnf,关键操作逻辑差得不多。我本人长期用 Debian 系,下面命令以 apt 为主,CentOS 就把包管理器换成 dnf 即可,思路照搬。

一开始别急着装,先把系统基础软件补齐,免得后面编译或解析扩展时报缺包:

apt update apt install -y curl wget unzip tar vim software-properties-common

然后是防火墙和时区。新手往往忽略这一步,等博客部署完,发现外网死活访问不到,查半天才记起是防火墙拦了 80 端口。既然是为了搭博客,先把 Nginx 和 SSH 端口放行,其他端口默认拒绝。时区改成 Asia/Shanghai,免得数据库时间戳、计划任务时间全部错位,排查日志时对不上点。

2.2 安装 Nginx 并验证基础运行

Nginx 安装建议直接用发行版仓库,除非你要编译定制模块,否则没必要自讨苦吃。Ubuntu 24.04 仓库里默认带的 Nginx 版本就足够新:

apt install -y nginx systemctl enable --now nginx

装完先访问一次机器公网 IP,看到欢迎页就说明工作正常。这一步看着基础,但很多后期问题都能在这里提前发现,比如云厂商安全组没放行80端口,或者是本机防火墙把流量拦了。如果是这样,先处理网络层,别往下走。

如果你对 Nginx 版本有强迫症,非想用最新主线,那可以用官方 ppa 或源码编译。源码编译不是不行,但依赖关系多,时间成本高,个人博客场景收益太小。我的建议特别简单:先用稳定仓库版把环境跑通,待对 Nginx 编译参数理解到位了再折腾也不迟。

2.3 PHP 的安装与 PHP-FPM 核心参数解读

PHP 是 WordPress 的执行引擎,这里要用带 FPM(FastCGI Process Manager)的版本,它能让 PHP 独立于 Nginx 运行。Ubuntu 20.04 后仓库里没有默认 PHP,需要加第三方源:

apt install -y php8.2-fpm php8.2-mysql php8.2-gd php8.2-xml php8.2-mbstring php8.2-curl php8.2-zip php8.2-intl php8.2-opcache

这些扩展名字看起来又多又杂,实际上每个都有对应的职责。gd 负责图片验证码和缩略图生成,xml 和 mbstring 是 WordPress 解析主题和插件输出所必需,curl 用于远程请求天气接口、在线更新等,zip 影响你在后台上传主题时解压,opcache 是把PHP字节码缓存起来,能显著减少重复编译解析的开销。

装完后直接改 PHP-FPM 配置文件,路径一般在/etc/php/8.2/fpm/pool.d/www.conf。先别改用户组,保持默认的 www-data 就好,重点调整执行进程管理策略:

pm = dynamic pm.max_children = 20 pm.start_servers = 5 pm.min_spare_servers = 5 pm.max_spare_servers = 10 pm.max_requests = 500

pm = dynamic是个人站点最常见模式,意思是 PHP-FPM 根据当前负载动态调整工作进程数量。pm.max_children决定最大能拉起的 PHP 进程数,这一项和内存强相关。每个 PHP-FPM 进程在默认配置下约占 30~50M 内存,2G 内存机器设成 20 基本是上限;如果机器只有 1G,我会把这个数字压到 8 或 10,否则可能随时触发 OOM。宁可请求排队,也比 MySQL 被内核杀掉要好得多。

pm.max_requests = 500是一个非常值得注意的参数,它让每个子进程在处理完 500 个请求后自动退出重建。这样能避免长期运行带来的内存碎片、以及第三方扩展导致的状态泄漏。个人博客可能一天都到不了 500 请求,但对偶尔流量脉冲,这个机制能有效兜底。

操作完记得重启:

systemctl restart php8.2-fpm

2.4 MySQL/MariaDB 安装与初始安全配置

数据库安装直接一条命令:

apt install -y mariadb-server systemctl enable --now mariadb

安全起见,MariaDB 装完后建议跑一下安全初始化脚本。它会提示是否设置 root 密码、是否移除匿名用户、是否禁用远程 root 登录。这里用的核心原则是:root 只允许本机登录,远程访问用单独建的最小权限账号。

mysql_secure_installation

初始化完成后,进入数据库操作台,为 WordPress 创建专属库和账号。这一步非常关键——不少新手图省事直接用 root 连库,一旦网站代码被种马或注入,攻击者拿到数据库完全控制权,整个主机的基本盘就没了。我实际操作中碰过类似情况,从此坚持每个应用独立账号:

CREATE DATABASE wpblog DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'wpuser'@'localhost' IDENTIFIED BY '这里用你自己的强密码'; GRANT ALL PRIVILEGES ON wpblog.* TO 'wpuser'@'localhost'; FLUSH PRIVILEGES;

需要注意utf8mb4_unicode_ci这个排序规则。MySQL 老版本默认 utf8 其实是 utf8mb3,最多只能存 3 字节字符,而 WordPress 新增的表情符号、生僻字都是 4 字节。如果建库时不选 utf8mb4,后期发布带 emoji 的文章会出现内容截断或乱码。

3. WordPress 部署与站点配置实操

3.1 下载 WordPress 并配置核心文件

WordPress 本体可以直接用官方发行版压缩包,不推荐用apt install wordpress那种老包。我们把网站文件放在/var/www/myblog目录,作为站点根目录:

mkdir -p /var/www/myblog cd /var/www/myblog wget https://wordpress.org/latest.tar.gz tar -zxvf latest.tar.gz mv wordpress/* . rm -rf wordpress latest.tar.gz

放到目录后,要给运行用户改属主。这是导致 WordPress "需要写入权限"错误的第一大来源。PHP-FPM 和 Nginx 都是以www-data身份运行,如果文件属主是 root,后端在安装主题或插件时根本无法写盘,页面就会出现下载主题失败或自动更新失败的提示:

chown -R www-data:www-data /var/www/myblog

接着在网站根目录创建wp-config.php。WordPress 提供了可视化配置文件的生成界面,但命令行下我更建议直接参考示例文件改写:

cp wp-config-sample.php wp-config.php vim wp-config.php

填上前面创建的数据库名、用户名、密码,再把数据库主机改成localhost。顺手还要把认证盐值补上,这个Salt的作用是加密用户登录Cookie和密码哈希,如果你不填,WordPress 也能自动生成,但自己指定一串随机字符会更可控。

3.2 Nginx 站点配置与 PHP 转发核心逻辑

这是整个 LNMP 部署过程中技术含量最高的地方。打开 Nginx 站点配置目录,新建一个专门为博客服务的 server 块。下面是我一直在用的精简版配置:

server { listen 80; server_name yourdomain.com www.yourdomain.com; root /var/www/myblog; index index.php index.html index.htm; access_log /var/log/nginx/myblog.access.log; error_log /var/log/nginx/myblog.error.log; location / { try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php8.2-fpm.sock; } location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|webp)$ { expires 30d; access_log off; } location = /favicon.ico { log_not_found off; access_log off; } }

不理解try_files $uri $uri/ /index.php?$args;这一行的话,后面易出问题。它的意思是:当一个请求进来,Nginx 先尝试按原路径找静态文件,找不到再尝试当目录,目录也没有就把请求交给 index.php 处理,并附带上原有参数。这是 WordPress 实现"任意路径都能映射到对应文章"的关键。

PHP 请求转发的判断条件location ~ \.php$是一个正则匹配,把所有以 .php 结尾的请求交给 PHP-FPM。这里的核心是fastcgi_pass unix:/run/php/php8.2-fpm.sock;,它决定Nginx通过Unix Socket连接PHP服务,相比127.0.0.1:9000的 TCP 方式省去了TCP协议栈开销,延迟更低。缺点是你必须确保 PHP-FPM 的监听方式和这里完全一致,否则会出现 502。

改完配置先测试语法,再平滑重载:

nginx -t systemctl reload nginx

3.3 WordPress 初始化安装与固定链接

完成站点配置后,打开浏览器访问域名,WordPress 会进入安装界面。选好语言,设置站点标题和后台管理员账号,然后进入仪表盘第一件事——设置固定链接结构。

固定链接既影响 URL 美观也影响 SEO。我推荐从右上角的"设置"进入到"固定链接",选择"文章名"模式,这样 URL 会变成/hello-world/而不是?p=123。修改后记得刷新一次 Nginx,让 rewrite 规则重新加载。如果点击固定链接后出现404,基本就是 Nginx 配置里的try_files没生效,回上一步检查。

初始化这步才能看出前面环境是否全部打通:若成功创建管理员账号并跳转进后台,说明 PHP、MySQL、Nginx 三者协作正常;如果报数据库连接错误,八成是数据库账号密码或者远程权限问题,去数据库里核对一遍即可。

4. 性能优化与缓存层构建

4.1 PHP OPcache 与对象缓存选型

默认状态下,WordPress 处理一个动态请求要做很多事:加载核心文件、解析主题模板、执行插件逻辑、执行数据库查询。这个过程如果每次都从零开始,CPU 和数据库的负担会很大。优化第一步不是上 Redis,而是开启 OPcache。

在/etc/php/8.2/fpm/conf.d/10-opcache.ini里,确认下面参数存在:

opcache.enable=1 opcache.memory_consumption=128 opcache.interned_strings_buffer=16 opcache.max_accelerated_files=10000 opcache.revalidate_freq=60

revalidate_freq表示每 60 秒检查一次 PHP 文件是否有更新。如果写成0,开发阶段倒是方便,改文件立即生效,但生产环境为了强制每次更新都重新扫描所有脚本,很浪费性能。个人博客没那么多发布频率,60 秒足够。

对象缓存方面,如果机器内存在 1G 以上,可以给 Redis 一个位置。方法很简单:装好 Redis 服务,再在 WordPress 插件目录装上 Redis 对象缓存插件,然后把插件里的wp-content/object-cache.php复制到wp-content下。这样 WordPress 的数据库查询结果就直接存放在 Redis 里,页面读取时不再反复访问 MySQL。我实测一个小型博客,热点文章打开速度能从 1.2 秒降到 0.8 秒左右。

没有 Redis 的机器也别勉强。1G 内存不带 Swap,再塞一个常驻内存的 Redis,反而互相争抢。这里最朴素的优化反而最有普适性:启用 Nginx 静态资源缓存 + PHP OPcache,已经能覆盖绝大多数场景。

4.2 内容页面缓存与静态化思路

WordPress 是动态渲染的,每次访问都会执行PHP代码并查询数据库。对个人博客这类"阅读多、发布少"的场景,页面级缓存是最直接的加速手段。页面缓存插件的原理是:某篇文章第一次被访问时,把渲染出的完整 HTML 存成静态文件;之后同一条链接再来访,Nginx 或插件直接返回静态文件,后端 PHP 完全不需要参与。

我用的是 FastCGI Cache 的思路,直接在 Nginx 层面做缓存:

fastcgi_cache_path /var/run/nginx-fastcgicache levels=1:2 keys_zone=WORDPRESS:32m inactive=60m;

再把 WordPress 后台上面的 server 块内,加上对 POST 请求及后台路径绕开缓存的判断:

set $skip_cache 0; if ($request_method = POST) { set $skip_cache 1; } if ($request_uri ~* "/wp-admin/|/wp-json/|xmlrpc.php") { set $skip_cache 1; } if ($http_cookie ~* "wordpress_logged_in_") { set $skip_cache 1; }

如果你觉得这个写法有点复杂,对应的插件方案也有。无论选哪个方案,有一个共同的注意点:缓存时间不宜过长,因为博客只要发布了新文章,就需要准确反映到首页和文章列表上。一般设置 30~60 分钟即可,发布新文章后,再到Nginx缓存目录清理对应 key 或者到插件后台点一次清空缓存。

4.3 图片与静态资源压缩策略

博客内容里图片占的流量比例极高。一张手机直出的照片可能 3~4M,既拖慢访问速度也占带宽。建议上传前用工具统一压缩:照片类用 JPEG 质量 80% 足够,截图类用 PNG 或 WebP 输出会小很多。WordPress 插件可以自动处理新上传图片,生成多种尺寸的缩略图,前端根据设备加载合适体积的版本。

Nginx 全局静态资源缓存时间我设置了 30 天。图片、CSS、JS 这类资源更新不频繁,给一个较长的expires 30d可以让浏览器直接读取本地缓存,服务器端都不需要再发一次请求。只有更新主题样式时,手动给引用的 CSS/JS 加上版本号参数,强制浏览器拉取新文件。

4.4 数据库定期清理与索引优化

WordPress 用久了,数据库里会堆积大量东西:历史修订版本、待审评论、无用的 transients(临时缓存数据)。这些东西看着无害,但会让数据库表越来越臃肿,备份和查询都变慢。

我用了一条自动化思路:每周清理一次修订版本和 transient。执行方式可以写成一条SQL脚本,也可以装一个数据库优化插件,在后台开启定期清理。重点清理目标是这几张表:

表名典型污染内容建议操作
wp_postspost_type=revision 的历史版本只保留最近5~10条
wp_optionsexpired_transient 开头的失效缓存全部删除
wp_commentsspam 及未审核垃圾评论删除 spam 状态
wp_postmeta插件残留的孤儿数据清理无对应文章的记录

清理完之后用OPTIMIZE TABLE重建表索引,能让查询速度明显回升。我一般选择在流量最低的凌晨执行,避免锁表影响阅读者。这属于不需要天天折腾、但坚持做很有价值的维护动作。

5. 安全加固与备份恢复方案

5.1 关键文件权限与隐藏敏感信息

WordPress 的权限策略总体遵循"最小须要"原则。网站根目录的主目录和核心文件保持 644 或 444,可写目录仅 wp-content 相关目录保留 755。这能阻止很多人通过上传恶意 PHP 文件到非业务目录来间接提权。

wp-config.php被看作网站的命脉文件,里面有数据库密码和认证 Salt。默认情况下它是 644 权限,Web 服务器能读,没问题。但我在实操中习惯额外做两件事:一是把文件权限收紧到 600,防止同主机的其他低权限用户读取;二是在其中关闭文件编辑能力:

define('DISALLOW_FILE_EDIT', true);

开启这个常量后,后台外观和插件编辑器全部被禁用。这样做的好处是:就算攻击者拿到了低权限管理员账号,也没法通过在后台把 PHP 代码写进文件进行提权。对你日常更新的影响很小,代码改动只需要通过FTP/SSH方式发布即可。

另外建议给你的后台登录路径调一个复杂一点的专属地址。方式是在主题函数文件里挂一个函数拦截基础登录地址,也可以直接通过插件设置。别小看这一步,它可以把绝大多数来自脚本机器人的暴力撞库挡在门外。

5.2 用户角色与登录保护

WordPress 默认有一个 admin 账号,一来很显眼,二来它的用户名是固定的,之后再加用户全靠邮箱区分。创建编辑和作者时,千万不要统一给管理员角色。个人博客如果是单人维护,一套管理员账号就够;如果有协作者,按实际职责分配编辑或者作者即可。攻击者即使拿到了一个作者账号,能做的事也有限,网上也能少掉一大票因账号权限过高而整体被黑的事件。

登录保护方面,登录页面和后台应该加上二次验证或验证码插件。我见过太多被暴力破解的案例,他们根本不用特别高科技的手段,就是拿常见账号加弱密码无限撞库。启用验证码后,登录接口不再支持快速批量请求,这类攻击基本自动放弃。同时建议配置登录失败限制,连续 5 次失败就锁 IP 15 分钟,能很有效地拖慢攻击节奏。

5.3 定时备份与异地容灾思路

Linux 运维经常说"没有备份,数据就等同于不存在"。个人博客虽然规模不大,但辛辛苦苦写了几年的文字全部丢失,这种打击是毁灭性的。备份至少要覆盖两块内容:数据库和网站文件。

数据库备份可以用mysqldump定时导出:

mysqldump -uwpuser -p wpblog > /backup/wpblog-$(date +%F).sql

文件备份更好做,直接打包需要保留的关键目录:

tar -czf /backup/myblog-files-$(date +%F).tar.gz /var/www/myblog/wp-content

注意wp-content里有主题、插件、上传图片,这些是真正需要备份的内容。Nginx 配置文件和 WordPress 核心文件那些,真到恢复的时候重新下载也容易,不必每次都打包。

备份的时间策略我建议每天一次数据库、每周一次完整文件。保留最近 7~14 天的备份,更早的可以同步到对象存储或另一台机器上,实现异地容灾。这一步很多教程不会强调,但真到了需要用备份救命的时刻,你会庆幸自己做到了。

6. 高频故障排查技巧速查

6.1 白屏页面与 HTTP 500 错误

最常见也是最让人头疼的就是白屏。在个人博客场景下,八成是 PHP 语法错误或者某个插件报错。遇到这种情况,直接看日志:

tail -f /var/log/nginx/error.log tail -f /var/log/php8.2-fpm.log

报错信息会明确提示是哪个文件,在哪一行错误。如果日志什么都没有,试试把 PHP 错误输出临时打开,定位问题后再关闭。定位到问题插件后,进入 wp-content/plugins 目录把对应插件目录改名,网站就能恢复访问。这是排查时最稳妥的"手动禁用插件"方式。

6.2 Nginx 返回 502 Bad Gateway

502 代表 Nginx 无法连接 PHP-FPM,正常来说问题集中在 PHP-FPM 进程没有启动、Socket 路径不匹配、或进程数量已满。先检查服务状态:

systemctl status php8.2-fpm

如果状态正常,确认 Nginx 配置里的 fastcgi_pass 指向的 Socket 路径和 FPM 监听路径一致。Ubuntu 下 PHP8.2 的 Socket 一般是/run/php/php8.2-fpm.sock。还有一个经常被忽略的情况:磁盘被占满,导致 PHP-FPM 无法创建临时 Socket 或者日志写不进,也会表现为 502。df -h看一眼,通常能救你一次。

6.3 数据库连接错误的三种排查方向

数据库连接错误信息一般会显示建不了到数据库的连接。排查顺序:先确认 MariaDB 服务自己还活着,再确认 WordPress 配置里的主机、账号、密码无误,然后确认账号有没有权限连到对应的数据库。很多人在云主机上把 MySQL 绑定了内网 IP,然后在配置文件里填 localhost,导致连接超时。反过来也一样,确认绑定地址与填写的连接地址保持一致。

如果你用的是 MariaDB 而 WordPress 显示"无法选择数据库"这类信息,多半是权限没生效,回到 MySQL 命令行执行一遍 FLUSH PRIVILEGES 就好。

6.4 伪静态配置不生效与固定链接 404

升级固定链接后,新文章列表页或文章页突然变成 404。这通常是 Nginx 配置的 try_files 规则没有正确转发。确认当前 server 块里没有别的高优先级 location 把请求截胡,并且已经执行systemctl reload nginx。

另外,注意关闭可能与 WordPress 伪静态冲突的 Nginx 默认站点。如果机器上存在多个 server 块,且它们监听的同端口,Nginx 会根据 server_name 进行匹配,不同域名的请求可能落到错误配置上。我曾经就因为在测试域名的默认 server 块里没有配 WordPress 规则,导致生产域名的固定链接 404 排查了半个多小时。

6.5 常见问题速查表

症状最常见根因快速处置
页面全部白屏PHP 语法错误或插件冲突查看 PHP 日志,重命名插件目录
502 Bad GatewayPHP-FPM 挂了或 socket 路径不对重启 PHP-FPM,核对 socket 路径
MySQL connection error数据库没起来或账号权限不足检查服务状态,核对账号权限
固定链接 404Nginx 规则未加载或 try_files 缺失重载 Nginx,检查 try_files 配置
上传大图失败Nginx 或 PHP 上传大小限制修改 client_max_body_size 与 php.ini 的 upload_max_filesize
后台无法更新/安装插件文件权限非 www-data 所有chown -R www-data /var/www/myblog

7. 后续运维与内容维护建议

博客上线不是终点,有几件维护工作要养成习惯。

第一,关注安全更新。WordPress 后台出现更新提示时,别拖太久。小版本更新往往是安全漏洞修复,越快越稳。更新前最好先备份一遍数据库和当前版本文件,以防更新后出现主题不兼容,能快速回滚。

第二,控制插件数量。插件是一柄双刃剑,装少了功能不够,装多了互相之间的冲突可能让你排查到头秃。在还没确定需要前,先采用主题自带的功能和少量核心插件。我之前见过一篇文章,装了五十多个插件,最后哪个和哪个打架都分不清楚,只能全清从零开始。

第三,长期跟踪访问日志。每周看一眼 Nginx 访问日志,如果某个路径出现大量请求,比如登录接口、xmlrpc 接口被刷,要及时处理。日志是运维的第一信息来源,也是判断网站健康状况最直观的窗口。

第四,有计划地做内容更新。搜索爬虫对持续更新的站点更友好,个人博客无论如何优化,没有新鲜内容最终流量还是会消散。我习惯每周固定留两个时间段来写文章,同时给旧文章做交叉链接,这比不断折腾新插件有效得多。

回到开头那句话——LNMP 不是最省事的环境,但它确适合长期稳定地支撑一个个人博客。中途折腾过不少方案,最后留下这个组合,原因就在于每个组件都简单清晰、问题可定位、资源可掌控。对没有专门运维能力的个人博主来说,可维护性比可炫技重要得多。你自己也一样,不用被网上花哨的架构图劝退,一台低配云主机、一套 LNMP、一个 WordPress,就能把独立博客安安稳稳地跑起来,写出第一篇真正属于自己的文字。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询