Docker安装LskyPro2.0升级过程

735 阅读5分钟

作者:IT王小二

博客:itwxe.com

小二原来写过使用 Typora+PicGo+LskyPro打造舒适写作环境,上礼拜偶然发现LskyPro已经发布2.0版本,作为一个爱折腾的人,当然得耍耍,不过看到LskyPro官方文档写到...

warning 升级指南 -> 迁移之前你需要知道的事

由于 2.x 版本与 1.x 存在巨大差异,且数据库结构层面变化较大,无法从旧版本直接升级至 2.x 版本,但是作者我用了亿点时间写了迁移脚本,尽管如此,从旧版本迁移还是一个比较繁琐的步骤。

  1. 迁移脚本只会将你的旧版本的数据库数据迁移至新版本,如果你的旧版本使用的是本地储存,你需要自己移动物理文件。
  2. 新版本需要图片的尺寸数据,在迁移过程中需要获取图片信息,如果你的数据量较大,迁移可能需要很久,取决于你的网络以及服务器的网络。
  3. 脚本会迁移旧版本的角色组、策略配置、用户、图片数据,迁移后的角色组和储存策略无任何关联关系。
  4. 如果你使用的是本地储存策略,迁移后的图片,所有已迁移的图片访问 url 需要在域名后面加上 i 字母前缀。
  5. 迁移成功后的用户处于未验证状态,账号的密码为 用户名+邮箱地址 的组合。
  6. 脚本需要使用 php8 cli (命令行)模式下运行。

强烈准备升级的人查看LskyPro官方文档:docs.lsky.pro,避免升级后不尽人意。

不过...深思熟虑之后,小二决定升级,为啥呢,因为有一颗折腾的心😂,同时也是觉得原来域名前缀images太长了,正好升级之后链接变了统一换了,小二图片都在Markdown文件里面,正则替换走一波,长痛不如短痛~嗯,短一点的前缀就定位img吧

一、注意事项

首先小二说下最需要注意的点,避免有些小伙伴懒得看官方文档的,如果你是从1.x升级到2.x,那么需要注意以下问题

  • 升级2.x过程迁移数据过程非常繁琐,没耐心就别折腾了,问题诸多,官方脚本只能迁移数据库数据,不能迁移图片,小二也没有选择使用官方脚本的方式!因为小二试过了,官方脚本没法获取图片尺寸,界面上看起来贼丑,小二选择重新上传一波,因为小二的图片分日期放好了,只要重新上传后修改Markown中的图片链接地址就好了。
  • 升级2.x之后会加上字母i的后缀,就意味着你原来的图片链接全变了!
  • 目前2.x可能还没有那么稳定,需要有承担风险的心里准备!
  • 升级之前一定要备份好原来的数据,不然数据丢失可别来找小二!

当然,你要是新人,没有从1.x升级到2.x的烦恼,还是直接推荐2.0版本。

二、准备说明

还是老规矩,放上LskyPro源码链接,参考的Docker安装地址。

LskyPro源码地址:github.com/lsky-org/ls…

LskyPro安装参考:github.com/lsky-org/ls…

同样,小二也借用了大佬的Dockerfile构建了镜像,已经上传到了自己的仓库了,目前最新的为2.0.4版本。

小二构建的镜像地址:hub.docker.com/r/itwxe/lsk…

升级之前一定要备份好数据,最好服务器和本地各一份!

准备数据库

小二使用的MySQL5.7数据库,小二1.x版本使用的数据库名称叫做lsky,所以,2.x使用的事先创建好一个名叫lskypro的数据库,登录MySQL执行命令。

# 创建数据库
create database lskypro;

# 个人习惯,创建供图床使用的用户,如果你使用root用户登录,那么可以不用这步操作
# 需要注意的是用户和密码中不能有特殊字符,例如`#`,不然LskyPro会报错500
GRANT ALL PRIVILEGES ON lskypro.* TO '你的用户名'@'%' IDENTIFIED BY '你的密码';
FLUSH PRIVILEGES;

准备https

之前有小伙伴问过怎么搭配Nginx实现https,这里也记录一下配置,当然首先你得在域名解析那里配置解析,这一步不知道的小伙伴百度吧,非常简单。小二使用的是 https://img.itwxe.com 这个域名,Nginx配置如下。

    server {
        listen 443 ssl;
        server_name img.itwxe.com;
        ssl_certificate /usr/local/nginx/ssl/fullchain.cer;
        ssl_certificate_key /usr/local/nginx/ssl/itwxe.com.key;
        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout 30m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers HIGH:!aNULL:!MD5:!EXPORT56:!EXP;
        ssl_prefer_server_ciphers on;
        proxy_connect_timeout 500;
        proxy_send_timeout 500;
        proxy_read_timeout 500;
        client_max_body_size 10m;

        location / {
            proxy_pass http://127.0.0.1:6080;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header REMOTE-HOST $remote_addr;
        }
    }

三、部署LskyPro2.0

docker run -d --restart=always --name=lskypro -p 6080:80 -v /itwxe/dockerData/lskypro:/var/www/html itwxe/lskypro:2.0.4

启动完成之后就可以访问页面啦,例如我的地址 img.itwxe.com

引导安装界面1

保证全为勾后下一步。

引导安装界面2

到这个界面就安装成功啦。

引导安装完成

对比一下旧版和新版的UI。

旧版UI

新版UI

感觉还是新版顺眼点吧,哈哈哈。

四、测试新版

登录后的界面,咱上传一个试试。

测试新版上传1

测试新版上传2

一切正常,接下来就是迁移旧数据了,小二并没有使用官方脚本,需要使用迁移脚本的可以看官网。

主要就是将脚本压缩包上传到服务器,主要命令就三行,参考如下。

unzip migrate.zip
docker cp /itwxe/migrate lskypro:/migrate
docker exec lskypro php /migrate/start.php migrate

至此,兰空图床2.x搭建完成。

五、uPic使用问题

2.x改动巨大,包括上传接口,不过PicGo插件市场已经有大佬写了LskyPro2.0的插件了,下载使用就好了。

小二使用的uPic作为上传,好处就是自定义功能比较简单易用,适用于任何上传接口,记录一下LskyPro2.x获取token和上传图片的办法。

小二使用postman来请求,当然小伙伴们也可以使用其他工具。

请求接口:https://img.itwxe.com/api/v1/tokens

选择Body -> row -> json

{
    "email": "管理员账号",
    "password": "管理员密码"
}

返回值中的token就是咱们要的,复制好,打开uPic -> 偏好设置 -> 图床 -> +自定义图床,外面的配置。

uPic设置1

其中Header和Body分别加入以下数据。

uPic设置2

保存后点击验证,正常返回图片访问链接即完成了。