『lsky』部署日记----兰空图床, 博客利器
Introduction
图床用于存储图像, 并且提供出可供外界访问的 url
, 常用于博客创作. 这种存储方式可以不在网站服务器本地存储图像, 可以通过自建图床, 使用第三方图床等方式对博客的图片内容进行存储和管理.
我之前用过chevereto图床, 感觉就是管理非常不方便, 迁移的时候也存在渲染不出样式的问题.(后来申请 ssl
证书之后就解决了, 原因不明) 后来听说chevereto图床对中文的支持已经不再维护了, 便弃用了.
最近捡起了我的博客, 尝试进行了一次迁移. 之前我一直在 typecho
博客后台使用 vditor
编辑器进行文章创作和记录, 直接使用 ctrl + v
上传图片到博客所在服务器, 获取 url
放在文章里面渲染出图像. 迁移的时候就出现了大问题: 所有文章仍然保留原来网站域名生成的 url
. 好在我只有20多篇文章, 用到的图片也不多, 于是直接选择重新搭建一个图床, 手动迁移所有图片了.
越来越觉得这样实现的方式不妥, 除非可以保证以后再也不换域名, 否则非常不方便迁移. 如果我们使用图床, 就可以直接用图床的域名生成 url
, 用户也不需要访问图床网站, 域名也不那么重要. 并且最近我学习了 docker
, 图床的部署和迁移也变得非常简单.
我选择的是 lsky
兰空图床. 感觉看起来比较专业(虽然很多东西可能用不到), 有多用户功能, 界面也很美观, 并且可以对接 picgo
和 typora
, 最后可以实现在 typora
创作时自动上传图片到 lsky
图床, 我认为还是非常之方便的.
Deployment
background
先上一个官网可以找到部署教程, 用户社区等. 可以看到是分成个人版(开源版)和企业版, 我们个人博客使用要求不高, 不必付费购买企业版.
在官方网站提供的安装环境要求中我们可以看到这是真的复杂, 不用宝塔或者其他面板, 自己手动配置环境是真的难受. 这个时候就需要我们的 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 函数
但是很遗憾, 目前官方还没有提供 docker
镜像, 不过我们可以在 docker hub
找到小伙伴上传的镜像. docker镜像地址以及github仓库地址
现在是2023年2月23日, 可以在 github
项目的 issues
中看到有其他小伙伴提出的问题, 解决方法在另一篇issue
不过我没有用这种方法, 而是用的 docker-compose
, 各有好处, 按需取用即可. 如果对 docker
不是特别了解, 不妨跟着这篇博客使用 docker-compose
搭建 lsky
图床吧
operation
安装docker就不再说了 :P 也别忘了安装 docker-compose
先在本地完善一下文件管理系统:
mkdir -p /root/data/docker_data/lsky-pro
# 递归创建文件夹, 创建路径上不存在的所有文件夹
cd /root/data/docker_data/lsky-pro
# 进入文件夹, 所有docker操作和交互都在这里进行
创建一个 docker-compose.yml
文件, 输入以下内容:
version: '3'
services:
lskypro:
image: halcyonazure/lsky-pro-docker:latest
restart: unless-stopped
container_name: lskypro
environment:
- WEB_PORT=8089
volumes:
- /root/data/docker_data/lsky-pro/lsky-pro-data:/var/www/html/
ports:
- "8089:8089"
容器内部端口之前是80, 某次更新成了8089, 这导致我在迁移容器的时候还以为自己操作出问题了, 查了一下github才确定是作者更新了信息.
同时这篇博文也不确保跟随lsky更新, 建议自行到官网查看最新版本
有两个需要说明的地方:
- 容器卷映射. 冒号
:
左侧为宿主机位置, 右侧为容器内位置. 左侧可以根据需求修改, 并且修改后需要自行记住, 右侧不可以修改 - 端口映射. 左侧为宿主机端口, 可以修改, 需要自行记住, 右侧不可以修改
编辑 docker-compose.yml
之后, 在当前路径下直接执行 docker-compose up -d
, 即可运行容器. 执行 docker ps
查看容器是否运行成功
运行成功之后, 我们就可以直接通过ip+端口号访问图床了.
需要注意的是, 此处映射的文件路径仅仅是网站的源代码等内容, 例如三件套 html css js
等, 图床中存储的图片其实在数据库中.
在官网可以看到, 兰空图床支持很多类型的数据库. 有人说使用 sqlite
可以节约资源, 提升效率. 我确实不太懂这个, 但是 mysql
对于我非常友好, 所以我选择先用 mysql
数据库对接兰空图床
对接成功之后, 就随便在后台改改设置, 比如限制用户存储空间, 最大上传图片数量等等, 就随便在后面加几个0就足够用了. 推荐开启粘贴后自动上传功能, 节省鼠标点击一下的时间.