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.2BCMath 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)
本期用的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 搭建
服务器初始设置,参考
【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.sojson.com/httpRequest/
本期用的Docker镜像地址 (感谢@Allen Hua):https://hub.docker.com/r/dko0/lsky-pro
PicGo插件:lankong(再次感谢@Allen Hua)https://hellodk.cn/post/964
https://blog.laoda.de/archives/docker-compose-install-lskypro
评论区