# 将小程序从云开发迁移到自建服务器

- Link: https://www.ixiqin.com/2022/08/22/the-small-program-from-cloud-development-migrated-to-build-server/
- Published: 2022-08-22T06:00:00+08:00
- Author: 白宦成

文章目录

 [Toggle](https://www.ixiqin.com/2022/08/22/the-small-program-from-cloud-development-migrated-to-build-server/#)

 * [评估修改工作量](https://www.ixiqin.com/2022/08/22/the-small-program-from-cloud-development-migrated-to-build-server/#%e8%af%84%e4%bc%b0%e4%bf%ae%e6%94%b9%e5%b7%a5%e4%bd%9c%e9%87%8f)
 * [评估云函数工作量](https://www.ixiqin.com/2022/08/22/the-small-program-from-cloud-development-migrated-to-build-server/#%e8%af%84%e4%bc%b0%e4%ba%91%e5%87%bd%e6%95%b0%e5%b7%a5%e4%bd%9c%e9%87%8f)
 * [导出数据库](https://www.ixiqin.com/2022/08/22/the-small-program-from-cloud-development-migrated-to-build-server/#%e5%af%bc%e5%87%ba%e6%95%b0%e6%8d%ae%e5%ba%93)
 * [修改代码](https://www.ixiqin.com/2022/08/22/the-small-program-from-cloud-development-migrated-to-build-server/#%e4%bf%ae%e6%94%b9%e4%bb%a3%e7%a0%81)

云开发最近开始出现大幅度调价，并配置了一个默认的最低消费：19.9 元；说起来，这个钱
不多，奈何我的很多个小程序都属于用量极小，但也不能停止运转的。过去的按量付费的模式
对于我这样佛系运营的小程序会比较友好。但现在这种付费模式对于我这种每个小程序量级
都不大，但又多个小程序的人来说不太友好。既然我能给开发一套标准的后端，且确实觉得
没必要，就花点时间从云开发迁移到自建的服务器。

## 评估修改工作量

在开始动手迁移的时候，先要评估一下迁移所需要的成本，我选择使用 grep 查询一下我的
变更的工作量。执行如下命令，来判断我具体在哪些文件当中调用了云开发的方法，判断出
具体的工作量

    ```php
    grep -w -c -E 'callFunction|db.collection|wx.cloud' ./**/**.wpy
    Code language: PHP (php)
    ```

执行命令后，你会看到类似这样的输出，这个输出表现出了我的具体没个文件所需要的修改
的量。

![](https://files.ixiqin.com/2022/09/23091448/d2b5ca33bd970f64a6301fa75ae2eb22-6.
png)

这样对于具体要做的工作量就心里有数了。接下来要做的，无非是具体的迁移工作了。

## 评估云函数工作量

云开发用久了，很容易出现一些其实不再运转的函数。在这种情况下，可以不再迁移这些函数，
降低自己的迁移成本。

云函数在迁移的时候，可以通过云开发提供的函数监控面来判断每个函数的调用情况，对于
调用情况为 0 的函数，就可以选择性的不再提供服务了。

![](https://files.ixiqin.com/2022/09/23091449/d2b5ca33bd970f64a6301fa75ae2eb22-8-
1024x730.png)

## 导出数据库

从云开发迁移走的时候，我们需要迁移小程序侧的代码、云函数代码和云数据库的资源，因此，
也需要将对应的数据提供导出和导入。

不过，你需要注意的是，云开发导出的 JSON 不是标准的 JSON 格式，而是 [JSON Lines](https://jsonlines.org/)
的格式，在你对应的数据导入时，需要使用 package 来 parse ，而不是使用标准的方式来
进行 Parse。

![](https://files.ixiqin.com/2022/09/23091449/d2b5ca33bd970f64a6301fa75ae2eb22-7-
1024x691.png)

## 修改代码

当上面的事情做完了，接下来要做的，就是具体的写代码来进行迁移了，记得迁移服务端 &
客户端两侧的代码~。
