『lsky』部署日记----兰空图床, 博客利器

Introduction

图床用于存储图像, 并且提供出可供外界访问的 url, 常用于博客创作. 这种存储方式可以不在网站服务器本地存储图像, 可以通过自建图床, 使用第三方图床等方式对博客的图片内容进行存储和管理.

我之前用过chevereto图床, 感觉就是管理非常不方便, 迁移的时候也存在渲染不出样式的问题.(后来申请 ssl证书之后就解决了, 原因不明) 后来听说chevereto图床对中文的支持已经不再维护了, 便弃用了.

最近捡起了我的博客, 尝试进行了一次迁移. 之前我一直在 typecho博客后台使用 vditor编辑器进行文章创作和记录, 直接使用 ctrl + v上传图片到博客所在服务器, 获取 url放在文章里面渲染出图像. 迁移的时候就出现了大问题: 所有文章仍然保留原来网站域名生成的 url. 好在我只有20多篇文章, 用到的图片也不多, 于是直接选择重新搭建一个图床, 手动迁移所有图片了.

越来越觉得这样实现的方式不妥, 除非可以保证以后再也不换域名, 否则非常不方便迁移. 如果我们使用图床, 就可以直接用图床的域名生成 url, 用户也不需要访问图床网站, 域名也不那么重要. 并且最近我学习了 docker, 图床的部署和迁移也变得非常简单.

我选择的是 lsky兰空图床. 感觉看起来比较专业(虽然很多东西可能用不到), 有多用户功能, 界面也很美观, 并且可以对接 picgotypora, 最后可以实现在 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

github-issues

不过我没有用这种方法, 而是用的 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更新, 建议自行到官网查看最新版本

有两个需要说明的地方:

  1. 容器卷映射. 冒号 :左侧为宿主机位置, 右侧为容器内位置. 左侧可以根据需求修改, 并且修改后需要自行记住, 右侧不可以修改
  2. 端口映射. 左侧为宿主机端口, 可以修改, 需要自行记住, 右侧不可以修改

编辑 docker-compose.yml之后, 在当前路径下直接执行 docker-compose up -d, 即可运行容器. 执行 docker ps查看容器是否运行成功

运行成功之后, 我们就可以直接通过ip+端口号访问图床了.

需要注意的是, 此处映射的文件路径仅仅是网站的源代码等内容, 例如三件套 html css js等, 图床中存储的图片其实在数据库中.

接下来我想到两个事情需要讲, 一个是反向代理, 一个是对接mysql数据库. 改天另外写两篇文章说明吧

在官网可以看到, 兰空图床支持很多类型的数据库. 有人说使用 sqlite可以节约资源, 提升效率. 我确实不太懂这个, 但是 mysql对于我非常友好, 所以我选择先用 mysql数据库对接兰空图床

对接成功之后, 就随便在后台改改设置, 比如限制用户存储空间, 最大上传图片数量等等, 就随便在后面加几个0就足够用了. 推荐开启粘贴后自动上传功能, 节省鼠标点击一下的时间.

最后修改:2023 年 05 月 13 日
如果觉得我的文章对你有用,请随意赞赏