Loading... ### 前言 从WordPress转到Typecho已经几天了,终于算是把全站的布局,数据都调整好了。来整理一下整个过程吧,还是有不少坑的。 为什么想转到Typecho呢,首先我自己也知道WordPress太臃肿了,其次,我一直没找到适合我的主题。偶然看到Hexo和Typecho的博客,那么简约,那么纯粹,一下就被击中了。 其实我已经习惯了WordPress了,每次也就是进后台写写技术类的文章,然后再复制到公众号上发布。前些年还喜欢去找一下主题,自己手动修改一下,但WordPress的主题是真的难找,不是因为少,是因为太多了,而且大多都是花里胡哨,乱七八糟的。后来工作越来越忙,就索性从WordPress后台主题市场直接找了一款装上了,说白了,就是摆烂了。看到Handsome和Cuteen主题的博客时,竟让我又燃起了写博客的欲望。也有可能是因为这两个主题我最终决定开始转Typecho。 ### 准备工作 先把WordPress整个站打包备份一下,然后单独将数据库备份出来。sql文件或sql.tar.zip之类的。 ### 搭建Typecho环境 我是使用docker,我也推荐你们使用docker,Typecho的作者在DockerHub上有一直在更新他的镜像。搜索joyqi/typecho,你会看到有很tag,这里有第一坑,如果你后面要使用Handsome或Cuteen主题,还有一些其他的插件,就不要拉最新版本的镜像没,也就是不要使用1.3,找1.2.1的镜像来使用就可以了。我一开始就是拉取的nightly-php8.2-apache,不用说,这种最新的镜像妥妥的是1.3,一切都弄好了的时候我去部署Handsome主题,发现只要一启用,就一片空白了。按照说明文档里挨个排查了一遍,最后作者才问我Typecho是什么版本,我说1.3,他说还不兼容,咳,那我强烈建议你问题处理文档里把这一条加在最前面。 我用的是1.2.1-php7.4-apache这个镜像,也推荐你们使用,下面是我的docker-compose.yml内容,你们可以参考。我在里面添加了phpMyAdmin的容器,因为后面要操作mysql进行数据导入,使用phpMyAdmin方便一点。 ``` services: typecho: image: joyqi/typecho:1.2.1-php7.4-apache restart: always ports: - 8585:80 #端口映射,把博客默认的80端口映射到8086端口 environment: TYPECHO_DB_HOST: typecho_db #默认值是localhost,docker部署时可以用服务名充当主机名 TYPECHO_DB_USER: leon TYPECHO_DB_PASSWORD: Plant@2025 TYPECHO_DB_DATABASE: typecho #所用的database volumes: - /etc/docker/typecho/data:/app/usr # /app/usr是typecho数据文件 depends_on: - typecho_db networks: - mynet phpmyadmin: image: phpmyadmin/phpmyadmin restart: always ports: - 8586:80 environment: PMA_HOST: typecho_db PMA_PORT: 3306 volumes: - ./zzz_custom.ini:/usr/local/etc/php/conf.d/zzz_custom.ini depends_on: - typecho_db networks: - mynet typecho_db: image: mysql:5.7 restart: always command: --default-authentication-plugin=mysql_native_password environment: MYSQL_DATABASE: typecho MYSQL_USER: leon MYSQL_PASSWORD: Plant@2025 MYSQL_ROOT_PASSWORD: Intergraph@2025 volumes: - /etc/docker/typecho/mysql:/var/lib/mysql # mysql数据库文件映射 networks: - mynet networks: mynet: ``` 这里面的三个容器是内联,只有typecho向外暴露了端口,phpMyAdmin也是临时暴露一下,后面为了安全还是会关掉,或者在反代软件里关了这个端口的反代也可以。 这里记住你的rootpassword,后面进phpMyAdmin里操作数据库使用root账户,而且还有可能会需要到mysql容器中设置某些参数。 这里有第二个坑,我在docker-compose文件里已经设置好了,phpMyAdmin容器里添加了一个文件映射,你需要在外面创建一个zzz_custom.ini文件,里面的内容如下,这是一个php环境的自定义配置,目的是为了改变phpMyAdmin允许上传和导入的sql文件的大小限制,默认是2M,太小了,我改到了100M。为什么要在这个文件的前面加上zzz,那是因为在php环境里加载配置文件的时候会按照首字母顺序,后加载的会覆盖之前加载的,所以要确保这个自定义配置在最后加载。 ``` upload_max_filesize = 100M post_max_size = 100M ``` ### 反向代理和证书设置 我的服务器上是使用的NPM做反向代理,把Typecho和phpMyAdmin的端口映射出来,Typecho可以先临时挂一个二级域名或者你其他不用的域名,因为后面一切设置好以后会改回你WordPress站的域名。phpMyAdmin可以临时挂到一个二级域名上。方便登陆去操作数据库。 ### 导入WordPress数据 去Typecho官网说明文档中找到Wordpresstotypecho插件,解压的文件夹上传到plugins目录。然后用root账户登陆到phpMyAdmin,创建一个新的数据库,名字就叫wordpress之类的,注意字符集的选择,务必选择utf8mb4_general_ci。然后选择你刚创建的db,选择导入,上传和导入你之前WordPress备份的sql文件。  到Typecho后台启用wordpresstotypecho插件,在设置里配置好wordpress的连接信息。保存后就可以去点进这个软件执行导入了。如果遇到database query error,就需要去把mysql环境里的严格模式关闭。如果你是docker环境,就需要先使用下面命令进入docker。 然后再执行下面语句去设置sql_mode,由于我们创建的是内联容器,所以还需要指定一下host。如果你不是内联容器的方式,就不需要使用-h了。按照提示输入你之前设置的root账户密码,输入SET GLOBAL sql_mode='';即可。你也可以通过select @@GLOBAL.sql_mode;来查询当前的sql_mode值。 ```sql mysql -h typecho_db -u root -p SET GLOBAL sql_mode=''; exit; ```  一般是修改完这个地方能成功导入了。1.3的Typecho默认这个地方已经改成了空。 ### 还原文章图片,附件 你之前备份的WordPress网站解压出来,把uploads里的所有内容上传到Typecho的usr/uploads,我这目录是已经映射出来了的,所以你找到对应的uploads文件夹就行了。注意保持目录结构不变 然后到在phpMyAdmin中,选中typecho数据库,在sql里执行下面语句来更新一下图片和附件的绝对路径 ``` update typecho\_contents set text=replace(text,'wp-content/uploads', 'usr/uploads') ``` ### 新网站设置 导入数据库文件后,原来 WordPress 站点的文章、分类、标签、评论都完美导入到 Typecho 站点了,但网站标题、副标题等都没有,此时就需要在【设置】→【基本】中进行相应的设置。另外域名的解析也可以切换到你的Typecho环境了。 ### 设置永久链接 启用地址重写,设置永久链接,保持和你之前在WordPress那边一致的拼接方式。 ### 索引重建 导入WordPress数据后,搜索栏里没有任何内容,我们需要重构一下索引,像我使用的Handsome主题插件里有重构索引的功能,我就直接使用了,你可以去搜索一下相关的插件也行。 原有 ### 文章格式更新 使用Typecho编辑wordpress导过来的文章时会弹出这个提醒“这篇文章不是由 Markdown 语法创建的, 继续使用 Markdown 编辑它吗?”出现这个问题有可能是,数据是从其他地方导过来的,文章正文开头缺乏一个特殊的语法内容:`<!--markdown-->`。这个语法内容决定了该篇文章是否采用 Markdown 语法进行解析。 解决问题 :在未开启 Markdown 语法解析的文章正文开头都加入该语法内容: ```sql update typecho_contents set text=concat('<!--markdown-->', TEXT); ``` ### 后记 关于Handsome主题的一些设置,Typecho里的一些必要的插件安装等有空会另起一篇文章来介绍一下。 最后修改:2025 年 03 月 17 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏