1. 介绍
Lsky Pro 是一个用于在线上传、管理图片的图床程序,中文名:兰空图床,你可以将它作为自己的云上相册,亦可以当作你的写作贴图库。
兰空图床始于 2017 年 10 月,最早的版本由 ThinkPHP 5 开发,后又经历了数个版本的迭代,在 2021 年末启动了新的重写计划并于 2022 年 3 月份发布全新的 2.0 版本。
1.1 特点
咕咕这边简单在网上也抄搜集了一些特点,供大家参考:
支持本地等多种第三方云储存 AWS S3、阿里云 OSS、腾讯云 COS、七牛云、又拍云、SFTP、FTP、WebDav、Minio
多种数据库驱动支持,MySQL 5.7+、PostgreSQL 9.6+、SQLite 3.8.8+、SQL Server 2017+
支持配置使用多种缓存驱动,Memcached、Redis、DynamoDB、等其他关系型数据库,默认以文件的方式缓存
多图上传、拖拽上传、粘贴上传、动态设置策略上传、复制、一键复制链接
强大的图片管理功能,瀑布流展示,支持鼠标右键、单选多选、重命名等操作
自由度极高的角色组配置,可以为每个组配置多个储存策略,同时储存策略可以配置多个角色组
可针对角色组设置上传文件、文件夹路径命名规则、上传频率限制、图片审核等功能
支持图片水印、文字水印、水印平铺、设置水印位置、X/y 轴偏移量设置、旋转角度等
支持通过接口上传、管理图片、管理相册
支持在线增量更新、跨版本更新
图片广场
1.2 安装要求(我们用Docker安装!)
PHP >= 8.0.2
BCMath PHP 扩展
Ctype PHP 扩展
DOM PHP 拓展
Fileinfo PHP 扩展
JSON PHP 扩展
Mbstring PHP 扩展
OpenSSL PHP 扩展
PDO PHP 扩展
Tokenizer PHP 扩展
XML PHP 扩展
Imagick 拓展
exec、shell_exec 函数
readlink、symlink 函数
putenv、getenv 函数
1.3 支持的数据库
Mysql 5.7+
PostgreSQL 9.6+
SQLite 3.8.8+
SQL Server 2017+
感觉有没有心动呢?
来动手搞一个玩玩吧~
2. 项目展示
GitHub原项目地址(感谢作者的付出):https://github.com/lsky-org/lsky-pro (2.3k star)
官网地址:https://www.lsky.pro/
文档地址:https://docs.lsky.pro/
本期用的Docker镜像地址 (感谢@Allen Hua):https://hub.docker.com/r/dko0/lsky-pro
PicGo插件:lankong(再次感谢@Allen Hua)https://hellodk.cn/post/964
直接丢几个图片:
3. 搭建环境
服务器:腾讯香港轻量应用服务器24元/月VPS一台展示用的服务器是Netcup特价款,本期搭建用的是Vultr的服务器,按小时计费,可随时销毁(最好是选非大陆的服务器)(腾讯轻量购买链接)Hetzner注册免费得25欧试用金有效期一个月
系统:Debian 10(DD脚本 非必需DD用原来的系统也OK)
域名一枚,并做好解析到服务器上(域名购买、域名解析 视频教程)
安装好Docker、Docker-compose(相关脚本)
【非必需】提前安装好宝塔面板海外版本aapanel,并安装好Nginx(安装地址)
【非必需本教程采用】安装好Nginx Proxy Manager(相关教程)
4. 搭建视频(还没拍 待上传 = =)
YouTube:https://youtu.be/ukOLHIMC2R4
哔哩哔哩【高清版本可以点击去吐槽到B站观看】:
5. 搭建方式
5.1 搭建
服务器初始设置,参考
新买了一台服务器“必须”要做的6件小事
【Docker系列】不用宝塔面板,小白一样可以玩转VPS服务器!
注意:VPS的内存如果过小,建议设置一下SWAP,一般为内存的1-1.5倍即可,可以让运行更流畅!
设置SWAP可以用脚本:
wget -O box.sh https://raw.githubusercontent.com/BlueSkyXN/SKY-BOX/main/box.sh && chmod +x box.sh && clear && ./box.sh
选择18,然后输入你想要扩容的数值即可。
sudo -i # 切换到root用户
apt update -y # 升级packages
apt install wget curl sudo vim git # Debian系统比较干净,安装常用的软件
创建一下安装的目录:
mkdir -p /root/data/docker_data/lsky-pro
cd /root/data/docker_data/lsky-pro
nano docker-compose.yml
docker-compose.yml填入以下内容:
version: '3'
services:
lsky-pro:
container_name: lsky-pro
image: dko0/lsky-pro
restart: always
volumes:
- /root/data/docker_data/lsky-pro/lsky-pro-data:/var/www/html #映射到本地
ports:
- 7791:80
environment:
- MYSQL_HOST=mysql
- MYSQL_DATABASE=lsky-pro
- MYSQL_USER=lsky-pro
- MYSQL_PASSWORD=lsky-pro
mysql:
image: mysql:8.0
container_name: lsky-pro-db
restart: always
environment:
- MYSQL_DATABASE=lsky-pro
- MYSQL_USER=lsky-pro
- MYSQL_PASSWORD=lsky-pro
- MYSQL_ROOT_PASSWORD=lsky-pro
volumes:
- /root/data/docker_data/lsky-pro/db:/var/lib/mysql
没问题的话,ctrl+x退出,按y保存,enter确认。
查看端口是否被占用,输入:
lsof -i:7791 #查看7791端口是否被占用,如果被占用,重新自定义一个端口
如果出现:
-bash: lsof: command not found
运行:
apt install lsof #安装lsof
如果端口没有被占用,可以运行:
docker-compose up -d
访问:http:服务ip:7791 即可。
注意:
1、不知道服务器IP,可以直接在命令行输入:curl ip.sb,会显示当前服务器的IP。
2、遇到访问不了的情况,请在宝塔面板的防火墙和服务商的后台防火墙里打开对应端口。
5.2 更新
cp -r /root/data/docker_data/lsky-pro/lsky-pro-data /root/data/docker_data/lsky-pro/lsky-pro-data.archive # 万事先备份,以防万一
cp -r /root/data/docker_data/lsky-pro/db /root/data/docker_data/lsky-pro/db.archive #数据库也备份一下
cd /root/data/docker_data/lsky-pro # 进入docker-compose所在的文件夹
docker-compose pull # 拉取最新的镜像
docker-compose up -d # 重新更新当前镜像
利用Docker-compose搭建的应用,更新非常容易~
5.3 卸载
cd /root/data/docker_data/lsky-pro # 进入docker-compose所在的文件夹
docker-compose down # 停止容器,此时不会删除映射到本地的数据
rm -rf /root/data/docker_data//root/data/docker_data/lsky-pro # 完全删除映射到本地的数据
6. 反向代理
6.1 利用Nginx Proxy Manager
在添加反向代理之前,确保你已经完成了域名解析,不会的可以看这个:域名一枚,并做好解析到服务器上(域名购买、域名解析 视频教程)
之后,登陆Nginx Proxy Manager(不会的看这个:安装Nginx Proxy Manager(相关教程))
注意:
Nginx Proxy Manager(以下简称NPM)会用到80、443端口,所以本机不能占用(比如原来就有Nginx)
直接丢几张图:
注意填写对应的域名和端口,按文章来的话,应该是7791
然后就可以用域名来安装访问了。
7. 使用教程
见咕咕鸽的视频
7.1 安装
安装界面:
注意,数据库连接地址,填docker-compose文件里的容器名称lsky-pro-db,连接端口不用填。
成功安装:
管理员登陆:
扔几张后台的图片:
图片管理(搜索):
开启/关闭注册:
多种储存策略:
修改站点名称:
API接口:
上传测试:
7.2 配置PicGO与Typora(来自@Nesxc)
我们用图床,写博客,当然是为了方便。
咕咕习惯使用Typora来写东西,我们想要做到粘贴图片到Typora就能实现自动上传到图床,兰空图床有可以用的API,我们搭配PicGO就可以实现这个效果。
获取token
2.0的兰空图床不在直接显示token了,所以我们要自己获取一下token。
按照后台给的教程,我们直接去post一下,google或者百度一下就能找到很多支持在线post的网站。
比如我们使用https://www.sojson.com/httpRequest/
首先,post的地址是 https://你的网站/api/v1/tokens (例如,咕咕这个就是https://typecho.guguge.ga/api/v1/tokens)然后参数就是email和password两个常规参数,直接post。
然后他会返回一个名称为token的数据(咕咕这里是1|C75sSXxxdkPG63rgMor43335qVd1H9tRQozkonttZeNw),复制他保存,这就是后面会用到的token。
PicGo设置
在PicGo的插件页面,直接搜索lankong安装。
然后在图床设置中,设置兰空图床的参数。
其中,版本设置为V2。
Server为你的兰空图床站点(咕咕这里是https://typecho.guguge.ga),注意不要/结尾。
Auth token为 Bearer + token。 举例为: Bearer 1|C75sSXxxdkPG63rgMor43335qVd1H9tRQozkonttZeNw。注意Bearer和token中间有空格。
然后其他的参数可以根据插件readme来进行设置,一般可以不用动。
完成
至此,我们的PicGo使用兰空2.0的方法就完成了。
Typora测试
简单复制一张图片,直接粘贴,测试一下,发现能够正常上传并生成图床链接。
图床后台也成功显示了。
对于上述问题,有解决的小伙伴欢迎在评论区留言交流!
8. 结尾
祝大家用得开心,有问题可以去GitHub提Issues,也可以在评论区互相交流探讨。
同时,有能力给项目做贡献的同学,也欢迎积极加入到项目中来,贡献自己的一份力量!
9. 参考资料
https://github.com/lsky-org/lsky-pro
https://www.lsky.pro/
https://docs.lsky.pro/
https://www.sojson.com/httpRequest/
本期用的Docker镜像地址 (感谢@Allen Hua):https://hub.docker.com/r/dko0/lsky-pro
PicGo插件:lankong(再次感谢@Allen Hua)https://hellodk.cn/post/964
https://www.nesxc.com/1068/
https://blog.laoda.de/archives/docker-compose-install-lskypro