华助慧

华助慧

Lsky Pro兰空图床迁移

142
0
0
2024-07-18

开源免费的兰空图床搭建好了,可往往免费的既是最贵的。如果你搭建在云服务器,2核/2G/3M/40G阿里云服务器常年价¥99,40G的图床混合存储大小不一的图片4W张以上,那感觉也足够了。算了,将来有天你打算迁移到本地,那该如何操作呢?

低分辨率图片:如果图片是低分辨率的(比如 640x480),并且经过压缩,每张图片可能只需要几十KB到几百KB。这样算下来,40GB可以存储大约 100,000 到 1,000,000 张图片。

中等分辨率图片:如果是中等分辨率的图片(比如 1920x1080),每张图片可能需要 1MB 到 5MB。这样算下来,40GB可以存储大约 8,000 到 40,000 张图片。

举个例子:我现在要将本地的Lsky Pro迁移到阿里云

我是用docker镜像安装Lsky Pro,根据迁移官方的升级教程(迁移也是同理。)

升级 | Lsky Pro :https://docs.lsky.pro/docs/free/v2/quick-start/upgrade.html#%E5%9C%A8%E7%BA%BF%E5%8D%87%E7%BA%A7

手动升级

如果在线升级失败,可以尝试手动升级。首先你需要前往 https://github.com/lsky-org/lsky-pro/releasesopen in new window 找到最新的版本,下载完整的安装包。(如果你不是开发人员,请不要下载名为 Source code 的压缩包,此为未安装依赖的源码包)

然后按照以下步骤进行升级:

  1. 备份 storagepublic 目录下的缩略图文件夹(默认该文件夹名称为 thumbnails)

  2. 删除 除了 目录 .env 文件和 installed.lock 文件以外的所有文件夹以及文件

  3. 解压新版本到程序根目录(替换掉旧版本)

  4. 将备份的 storage 文件夹替换掉已解压storage 文件夹,将备份的缩略图文件夹放到 public 目录下

  5. 修改版本号,进入数据库找到 configs 表,修改 nameapp_versionvalue 值,例如 V 2.0,字符串必须完全一致。

  6. 进入程序根目录执行依次执行以下命令(需要PHP 8+)

    • php artisan migrate --seed

    • php artisan optimize:clear

本地储存以及使用 sqlite 需要注意的事情

  • 使用 sqlite 默认情况下会将数据库文件放置 database 文件夹下,请在升级之前备份该数据库文件,并在上述第三步操作以后将数据库文件放置原位。

  • 本地储存策略的所有上传的图片都会保存在 storage 文件夹下,数据无价,请注意备份该文件夹。

  • 本地储存策略会在 public 文件夹下生成符号连接(软连接),删除 public 目录后,请在升级完成以后编辑本地储存策略,保存一下以重新生成符号连接。

迁移 | Lsky Pro :https://docs.lsky.pro/docs/enterprise/v1/quick-start/migration.html#_1-%E6%89%93%E5%8C%85

1. 打包

一般情况下,程序的 public 目录中会存在多个个系统保留目录名,目录结构如下:

└─ public
   ├─ css           系统层叠式样式表
   ├─ fonts         系统字体文件
   ├─ i             程序默认本地储存的符号链接(可能不存在)
   ├─ img           系统图片文件
   ├─ js            系统 javascript 文件
   ├─ thumbnails    程序图片缩略图的符号链接
   ├─ uploads       系统图片上传的符号链接(例如相册封面、背景图等)
   └─ ...

符号链接映射关系:

public/thumbnails -> storage/app/thumbnails
public/uploads -> storage/app/public
public/i -> storage/app/uploads

迁移前,我们先将 public 中的 thumbnailsuploadsi 等所有符号链接删除。然后备份数据库,打包程序目录。

为什么要删除符号链接?

如果不删除符号链接,打包压缩程序目录时,会将符号链接所指向的文件也打包进去,导致迁移后符号链接失效,无法找到对应的文件。

注意

打包时请注意程序中 . 符号开头的文件,这些可能在某些文件管理程序中被隐藏,请不要忽略了这些文件。

3. 迁移到新服务器

将打包后的代码和数据库文件,上传到新服务器站点目录解压,并导入数据库。

打开根目录 .env 文件,修改数据库连接信息:

APP_DEBUG=true              开启调试模式
DB_CONNECTION=mysql         数据库类型
DB_HOST=127.0.0.1           数据库连接地址
DB_PORT=3306                数据库连接端口
DB_DATABASE=lsky_pro        数据库名称
DB_USERNAME=root            数据库用户名
DB_PASSWORD=root            数据库密码

REDIS_HOST=127.0.0.1        Redis 连接地址,一般默认就好
REDIS_PASSWORD=null         Redis 连接密码,一般默认就好
REDIS_PORT=6379             Redis 连接端口,一般默认就好

将以上配置修改为你的环境对应配置值,然后配置站点伪静态、运行目录、设置站点文件权限。具体操作可参考安装章节第二步-准备运行环境

#4. 生成符号链接

进入 SSH 终端,进入站点目录,然后执行重新生成符号链接命令:

php artisan lsky:symlinks

注意

如果你使用了本地的储存策略,需要进入后台编辑该策略,重新保存一下以生成对应储存的符号连接。

实际操作

  1. 备份 storagepublic 目录下的缩略图文件夹(默认该文件夹名称为 thumbnails)

  2. 删除 除了 目录 .env 文件和 installed.lock 文件以外的所有文件夹以及文件

  3. 备份数据库

  4. 迁移前,我们先将 public 中的 thumbnailsuploadsi 等所有符号链接删除。(我决定在上传还原目录的时候删除)

  5. 安装Lsky pro镜像,然后将其停止。

  6. 还原storagepublic 目录,并将 public 中的 thumbnailsuploadsi 等所有符号链接删除。

  7. 还原数据库

  8. 启动镜像

  9. IP+端口号,进入Lsky Pro首页。

要是缩略图没显示出来,就修改存储策略