学习在本地部署 WordPress

是时候学习如何配置、运行、维护个人博客了。我选择迈出的第一步,是学习在本地部署WordPress镜像,构建一个供我个人运行调试的服务器。下面总结一下技术要点。

要本地部署一个个人博客服务器,需要配置哪些环境?

  1. 作为一个服务器,必须要有回应网络请求的能力,有很多软件能满足要求,常用的软件是 Apache Server;Apache 的安装目录下有一个 htdocs 文件夹,把要架设的网站的根目录放在其中,运行服务,网站就“上线”了。可以尝试放入index.html, info.php 等测试文件运行服务,利用浏览器里访问localhost/index.html,浏览器应该能够收到服务器的回应、渲染出网页。
  2. 要架设的网站就是 WordPress 本身,把 WordPress 下载下来放到 htdocs/ 下即可。
  3. WordPress 是用 PHP 语言编写的,所以我们还需要”下载PHP”。当我们去官网“下载PHP”之后,我们究竟下载了什么?准确来说,是一个解释器(Zend Engine),以及可能还包含一些标准库。
  4. WordPress 是一个基于数据库的博客系统,所以运行 WordPress 服务就必须运行数据库服务。这里我下载并安装了最常用的 MySQL 数据库。在 Windows下,可以使用 services.msc 运行数据库服务。

依赖都安装好了,接下来是配置文件,需要配置PHP环境,复制php.ini-development到php.ini,加入下列来支持PHP语言的mysqli extension:

extension_dir = "...\php-...-x86\ext"
extension=php_mysqli.dll

Apache 也需要配置,在 httpd.conf 中添加下列以支持PHP:

PHPIniDir ".../php-...-x86"
LoadModule php_module ".../php-...-x86/php8apache2_4.dll"
AddType application/x-httpd-php .php

还需要添加下列来使得 Apache 渲染 index.php 而不是一个文件夹:

<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>

重新运行各个服务,一个 WordPress 服务(网站)就在本地运行起来了!接下来,可以在浏览器里按照 WordPress 网站本身的指导初始化你的个人网站(在 GUI 中),其中的关键一步是输入为 WordPress 创建的 MySQL 的用户名、密码和数据库,以便WordPress服务调用MySQL服务存取数据。

一切就绪,我使用 WordPress 插件尝试将其他地方的博客导入本地的 WordPress 实例,可以成功。这就是 WordPress 的好处,方便你以图形化的方式在各个站点之间复制博客。

【2025年11月21日更新】

是时候学习如何更新本地部署的 WordPress 服务了,定期更新软件是系统安全性、稳定性和将来可升级性和易维护性的根本。

在 Windows 上,更新本地部署的 WordPress 服务稍显繁琐,先下载、安装:

  1. Apache Server:需要手动下载和安装
  2. WordPress:可以在其运行时,在系统内部选择更新 WordPress,无需手动下载安装。可以事先进行。
  3. PHP:需要手动下载和安装

然后是配置,可以选择把旧 installation 中的配置文件拷贝过去(不一定和新软件适配);更周密的方案是回忆当初安装时做了哪些改动,在新 installation 的 httpd.conf 中做同样的改动。

可以在这样做的同时,先试着启动 Apache Server,在 htdocs 中放入 index.html、php.info 或其它项目,在浏览器中试着访问一下,保证 wordpress 需要的环境没问题(如在 php.info 中检查 mysqli extension 是否成功启用、Apache 的 mod_rewrite 是否成功启用)。

环境具备后,最后把 WordPress 项目直接移动到 Apache Server 新实例的 htdocs 下即可。重启 httpd,发现

  • 博文列表、媒体等信息都正常,静态的页面可以访问,包括 /wp-admin/post-new.php
  • View Post 的博文详情页无法加载:”the requested url was not found on this server”
  • 点击任意博文的 Edit,浏览器被导向 wp-admin/post.php?post=1&action=edit,可以看到博文内容,说明数据库没有出问题

Apache 阻止浏览器访问 WordPress动态重写得到的 url。解决方法为在 httpd.conf 中启用 mod_rewrite,以及对 htdocs 启用 AllowOverride All:

<Directory "${SRVROOT}/htdocs">
  Options Indexes FollowSymLinks
  AllowOverride All
  Require all granted
</Directory>

Posted

in

by

Tags:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *