我的Wordpress是部署是通过Docker Compose与MySQL部署在一起的,网站的访问是通过Nginx反向代理给Wordpress的容器的。更换新域名后,我添加了新的解析,并重新生成了证书。在更新了Nginx的配置文件后,网站无法正常访问。
我先把MySQL的3306接口给发布出来,这样我可以从宿主机直接访问,因为MySQL容器里并没有MySQL的Client。
bash#YAML文件的端口映射
ports:
- "3306:3306"
- "33060:33060"
# 宿主机上连接到MySQL容器。
mysql -h 127.0.0.1 -P 3306 -u root -p
切换到Wordpress的数据库,然后更新WP Options
里的Home
和URL
。
bashmysql> use wordpress_db;
Database changed
mysql> UPDATE wp_options SET option_value = 'https://collections.zenseek.site' WHERE option_name = 'siteurl';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> UPDATE wp_options SET option_value = 'https://collections.zenseek.site' WHERE option_name = 'home';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
先按这个命令查一遍。这是更新之后的结果,没更新前会有很长的输出。
bashmysql> SELECT ID, guid FROM wp_posts WHERE guid LIKE '%OLD_DOMAIN%';
Empty set (0.00 sec)
mysql> SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE meta_value LIKE '%OLD_DOMAIN%';
Empty set (0.00 sec)
mysql> SELECT ID, post_title, post_content FROM wp_posts WHERE post_content LIKE '%OLD_DOMAIN%';
Empty set (0.06 sec)
替换数据库里的旧域名。提示有多少个match和多少个changed了。之后再查一遍就跟上面的输出一样了。
bashmysql> UPDATE wp_posts SET post_content = REPLACE(post_content, 'OLD_DOMAIN', 'zenseek.site');
Query OK, 100 rows affected (0.30 sec)
Rows matched: 330 Changed: 100 Warnings: 0
mysql> UPDATE wp_posts SET guid = REPLACE(guid, 'OLD_DOMAIN', 'zenseek.site');
Query OK, 329 rows affected (0.00 sec)
Rows matched: 330 Changed: 329 Warnings: 0
mysql> UPDATE wp_postmeta SET meta_value = REPLACE(meta_value, 'OLD_DOMAIN', 'zenseek.site');
Query OK, 5 rows affected (0.00 sec)
Rows matched: 473 Changed: 5 Warnings: 0
在没更新域名解析和生成新的证书前,可以在Wordpress的后台更改主页地址。其他的更新可以通过wp search-replace 'https://your-old-domain.com' 'https://your-new-domain.com' --all-tables
来直接替换旧的域名。但是Wordpress的容器里进行了精简,并没有wp
的命令。其次,在进行任何的数据库的操作之前,可以对数据库先进行备份。我是在别处还有一样的实例,所以这一步就略过了。
本文作者:潘晓可
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!