还原(恢复)WordPress 站点

上一篇文章介绍了 WordPress 站点的自动定时备份,本文要介绍的则是怎样将按照上一篇文章备份的站点内容还原。

(1) 安装好 LAMP。MySQL 的 root 密码最好按照之前的设置。注意,这一步可能执行 a2enmod rewrite 命令,但要使重写生效,还需要在 Apache2 的配置文件中将站点根目录的设置 AllowOverride None 改为 AllowOverride FileInfo 或者 AllowOverride All。在 Apache 2.2 中,该项设置位于 /etc/apache2/sites-available 中的各个站点配置文件,而对于 Apache 2.4,它位于 /etc/apache2/ apache2.conf 中。

(2) 通过 phpMyAdmin 或 mysql 命令创建名为 wordpress 的数据库,假设名为 wordpress。创建 MySQL 用户,将且仅将 wordpress 数据库的完整权限赋予该用户。上传(或直接从备份文件所在的 VPS 下载)mywp.XXXXXX.sql,并通过如下命令将其导入 wordpress 数据库:

mysql -u root -p wordpress  < /……/wordpress.XXXXXX.sql

注意:a. 如果之前是通过 phpMyAdmin 导出的 mywp.XXXXXX.sql,则最好是通过 phpMyAdmin 导入。即,以什么方式导出,最好就以什么方式导入。通过 musqldump 导出,却用 phpMyAdmin 导入,很可能直接导致 mysql 服务无法启动。

b. 很多文章说通过 mysqldump -uroot -p wordpress < wordpress.XXXXXX.sql 来导入,这是错误的、无效的。

(3) 假设站点根目录为 /var/www。通过 WinSCP 将 wordpress.XXXXXX.zip 上传到 VPS,解压并将其全部内容移动到 /var/www/wordpress。将 /var/www/wordpress 目录的权限设置为 755。将其中的 index.php 复制到站点根目录,将其最后一行中的 ‘/wp-blog-header.php’ 改为 ‘/wordpress/wp-blog-header.php’ 。

(4) 一般来说,MySQL 的配置文件没什么需要改的。对于 Apache2,如果开启了 SSL,就要注意执行 a2enmod ssl,a2ensite default-ssl 等命令,并上传 SSL 证书,在站点配置文件中设置证书路径。

(5) 此时应该可以打开前台的首页和后台了,而前台的文章页面还打不开。于是,在后台,设置 → 固定链接,选择与之前相同的形式,保存更改。如果目录可写,则会自动生成 .htaccess 文件,如果不可写,就手动创建它,放在站点根目录 /var/www。为了开启“强制HTTPS”,还应该在末尾加上两行:

RewriteCond %{HTTPS} !on [NC]
RewriteRule (.*) https://域名%{REQUEST_URI} [R=301,NC,L]

(6) 在一步中,如果需要手动创建 .htaccess 文件,那么以后安装插件之类的操作也会出现创建目录失败。解决方法是将 wordpress 目录的权限设置为777,但是这是不必要的。其实,可以执行 sudo chown R wwwdata /var/www/wordpress,从而将 /var/www/wordpress 的所有者设置为 www-data。注意,没必要把 /var/www/ 目录的所有者也设置为 www-data。

如果没换域名,这样基本就恢复完成了。

(7) 如果换了域名,则还需要在数据库中相关的表修改旧域名为新域名。具体涉及的表有 wp_options、wp_posts 和 wp_rewardsystem。要注意第三个表,很多相关文章中都没提到。wp_options中,只有 siteurl 和 home(即后台“设置” → “常规”中的 WordPress 地址和站点地址)需要改为新域名,这个很少可以手动改。另外两个表里面需要改的就很多了,可以通过 SQL 语句来修改:

UPDATE wp_posts SET guid = REPLACE(guid, 'https://www.旧域名' ,'http://www.新域名');
UPDATE wp_posts SET post_content = REPLACE(post_content, 'https://www.旧域名' , 'https://www.新域名');
UPDATE wp_rewardsystem SET guid = REPLACE(rew_image, 'https://www.旧域名' ,'https://www.新域名');

要注意的是,有的地方可能是 “http” 而非 “https”,有的地方带 “www” 而有的地方不带。这就需要稍微改一下上面三个命令再执行一下。

 (8) 另外如果换了域名,应该也需要为新域名申请 SSL 证书,而不能用旧域名的证书。 

至此,WordPress 站点还原的主要步骤及其注意事项已介绍完成。

 

欢迎分享或转载,转载请注明出处。

本文固定链接:https://www.oixxu.com/recover-wordpress-site/ 

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注