网站迁移问题记录

hansyee
2026-03-28 / 0 评论 / 0 阅读 / 正在检测是否收录...

 前端时间因为一些原因将阿里云服务器上的系统从Rocky Linux 8.10变更到Ubuntu 24.04 LTS了,在变更之前呢,将上面之前自建的Typecho博客,也就是本站点迁移到了很久之前买的一个共享云虚拟主机上。
 迁移过程还算比较顺利,因为网站使用的SQLite3数据库,图资源用的七牛云存储,基本只要将网站目录的整个文件夹上传到云虚拟主机即可,再修改一些参数就能正常访问了,这里记录下遇到的一些问题。

Typecho博客的SQLite数据库路径配置问题

 得益于SQLite3单文件数据库的特性,迁移数据比较方便,直接整个文件复制即可。但是需要注意的是,在不同环境下,数据库的位置参数要同步更新,否则无法正常访问。在安装好的Typecho博客的根目录下的config.inc.php文件内,就有如下类似配置:

// config db
$db = new \Typecho\Db('SQLite', 'typecho_');
$db->addServer(array (
  'file' => '/var/www/html/all_17zturn_com/usr/123456.db',
), \Typecho\Db::READ | \Typecho\Db::WRITE);
\Typecho\Db::set($db);

其中的file就指定了SQLite数据库文件的位置,如果要迁移到不同的环境,就必须要更改这个参数。拿我的共享云虚拟主机举例,它需要修改为:

'file' => '/usr/home/username/htdocs/usr/123456.db',

这里的username是云虚拟主机实际的用户名,这样修改后才能正常读取数据库。

SQLite数据库版本问题

 遇到的第二个问题就是云服务器和云虚拟主机对SQLite3数据库的版本支持不同。因为云虚拟主机是我很早之前买的一款共享虚拟主机(因为及其便宜就一直在续费以作备用),支持的软件版本相对较旧,并且其软件配置相对固定,个人无法做很大调整,而云服务器就灵活很多,可自主选择软件版本,本站点就是基于当时的最新软件搭建而成。所以迁移之后,打开网站的第一个问题就是数据库无法正常访问。
对于这个问题,我采用了最笨但有效的方法:直接重新安装一次博客,数据库依然选择SQLite,这样就会自动生成一个新的匹配当前环境的数据库文件,然后将原数据库的数据导入到这个新的数据库即可。
 

伪静态问题

 迁移后发现地址重写功能没有了,因为自建的环境是基于Nginx的,自己写了地址重定义规则。而云虚拟主机使用的Apache服务器,这里主要参考使用URL Rewrite配置云虚拟主机的伪静态功能来写地址重定义规则。主要是在网站根目录下新建.htaccess文件,添加如下内容即可:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ /index.php/$1 [L]
</IfModule>
0

评论 (0)

取消