Docker安装LskyPro2.0升级过程
Docker安装LskyPro2.0升级过程
作者:IT王小二
小二原来写过使用 → Typora+PicGo+LskyPro打造舒适写作环境
,上礼拜偶然发现LskyPro已经发布2.0版本,作为一个爱折腾的人,当然得耍耍,不过看到LskyPro官方文档写到...
升级指南 > 迁移之前你需要知道的事
由于 2.x 版本与 1.x 存在巨大差异,且数据库结构层面变化较大,无法从旧版本直接升级至 2.x 版本,但是作者我用了亿点时间写了迁移脚本,尽管如此,从旧版本迁移还是一个比较繁琐的步骤。
- 迁移脚本只会将你的旧版本的数据库数据迁移至新版本,如果你的旧版本使用的是本地储存,你需要自己移动物理文件。
- 新版本需要图片的尺寸数据,在迁移过程中需要获取图片信息,如果你的数据量较大,迁移可能需要很久,取决于你的网络以及服务器的网络。
- 脚本会迁移旧版本的角色组、策略配置、用户、图片数据,迁移后的角色组和储存策略无任何关联关系。
- 如果你使用的是本地储存策略,迁移后的图片,所有已迁移的图片访问 url 需要在域名后面加上
i
字母前缀。 - 迁移成功后的用户处于未验证状态,账号的密码为 用户名+邮箱地址 的组合。
- 脚本需要使用 php8 cli (命令行)模式下运行。
强烈准备升级的人查看LskyPro官方文档:https://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源码地址:https://github.com/lsky-org/lsky-pro
LskyPro安装参考:https://github.com/lsky-org/lsky-pro/discussions/373
同样,小二也借用了大佬的Dockerfile构建了镜像,已经上传到了自己的仓库了,目前最新的为2.0.4版本。
小二构建的镜像地址:https://hub.docker.com/r/itwxe/lskypro/tags
升级之前一定要备份好数据,最好服务器和本地各一份!
准备数据库
小二使用的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
启动完成之后就可以访问页面啦,例如我的地址 https://img.itwxe.com
保证全为勾后下一步。
到这个界面就安装成功啦。
对比一下旧版和新版的UI。
感觉还是新版顺眼点吧,哈哈哈。
四、测试新版
登录后的界面,咱上传一个试试。
一切正常,接下来就是迁移旧数据了,小二并没有使用官方脚本,需要使用迁移脚本的可以看官网。
主要就是将脚本压缩包上传到服务器,主要命令就三行,参考如下。
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 -> 偏好设置 -> 图床 -> +自定义图床
,外面的配置。
其中Header和Body分别加入以下数据。
保存后点击验证,正常返回图片访问链接即完成了。