部署步骤
注意:在部署开始前你应该拥有一台公网服务器,另外,以下步骤依赖于 Docker、Nginx 和 AList,请提前安装相关依赖并配置,本文档只对 LskyPro 图床的搭建步骤和必要的注意事项进行介绍。
Step1. 配置 AList WebDAV 服务
在个人网盘中创建 lskypro-image
文件夹,这里以天翼云盘为例,并在 AList 中将该文件夹挂载到路径 /image
,如下图所示:
在 AList 中设置存储挂载路径
以上步骤完成后,访问 DAV
链接并通过身份校验后,即可进行图片的上传与访问。假设 AList 绑定的公网域名为 alist.domain.name.cn
,则图片存储服务的 DAV
链接为:https://alist.domain.name.cn/dav/image
。
Step2. 启动 LskyPro 图床容器服务
LskyPro 图床服务依赖于多个PHP插件,为了方便部署,我们采用 Docker 的方式安装 ,命令如下:
# 创建容器并启动(宿主机4003端口可自行更改)
sudo docker run -d --name lskypro --restart unless-stopped -p 4003:80 -v /data/lskypro:/var/www/html coldpig/lskypro-docker:latest
Step3. 修改 Nginx 配置项
注意,如果在 Nginx 配置中开启了 HTTPS ,需要执行以下命令修改图床项目源码,否则前端页面布局将被打乱:
sudo docker exec -it lskypro sed -i '32 a \\\Illuminate\\Support\\Facades\\URL::forceScheme('"'"'https'"'"');' /var/www/html/app/Providers/AppServiceProvider.php
假设图床服务的域名为 image.domain.name.cn
,AList 部署在本地端口 4015
,在 nginx.conf
中添加如下配置项:
#Lsky Pro | Image Hub
server {
listen 80;
listen 443 ssl;
server_name image.domain.name.cn;
# HTTPS 需要指定 SSL/TLS 证书路径
ssl_certificate cert/image.domain.name.cn.pem;
ssl_certificate_key cert/image.domain.name.cn.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
# 转发图床服务请求
location / {
# 转发端口 4003 与 Step2 中设定的宿主机端口保持一致
proxy_pass http://localhost:4003;
proxy_read_timeout 600s;
}
# 转发 AList 图片直链访问请求
location /img {
proxy_pass http://localhost:4015/d/image;
proxy_read_timeout 600s;
}
}
Nginx 配置说明
上传至图床的图片应该是可公开访问的,为此我们在以上 Nginx 配置中增加了
转发 AList 图片直链访问请求
配置项。经过以上配置,客户端通过访问https://image.domain.name.cn/img/${img_path}
即可直接获取图片,无需进行身份验证。
Step4. 配置 LskyPro 图床
A. 数据库配置
以上步骤完成后,浏览器访问图床服务域名可进入如下图所示的配置页面。配置页面将引导我们设置数据库服务,为了减轻工作量,我们直接使用本地 SQLite 数据库,数据库路径留空即可(将自动在服务根目录的 database
目录下创建 database.sqlite
文件),同时需要设定管理员邮箱和登录密码。
设置数据库为本地 SQLite 文件
配置完成后根据引导进入图床首页
数据库设置完成后的引导页面
B. 设置存储策略
登录管理员账户,点击侧边栏的 “存储策略” 进入图片文件存储的相关配置,创建一个新的存储策略。
创建新的存储策略
默认存储策略为本地存储,为了不占用服务器空间,我们这里使用 AList 提供的 WebDAV 服务创建一个新的存储策略,配置项如表所示,其中访问域名即为图片直链对应的域名和路径。
注意:记得选中角色组,否则存储策略不会生效。
设置 WebDAV 存储策略
设置 WebDAV 存储策略
C. 设置 WebDAV 为默认存储策略
WebDAV 存储策略添加后可以将默认本地存储策略删除,防止用户将图片上传至本地服务器。