Skip to content

Commit

Permalink
docker部署文档
Browse files Browse the repository at this point in the history
  • Loading branch information
Wisp X committed Dec 4, 2024
1 parent 554529e commit 8dd047a
Showing 1 changed file with 102 additions and 5 deletions.
107 changes: 102 additions & 5 deletions src/zh/guide/install.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# 安装 Lsky Pro+

兰空图床提供了两种安装方式,普通安装和 docker 安装,推荐使用 [docker 安装](#docker-安装)

## 普通安装

在开始安装之前,请确保您已经阅读过前面的[环境要求](./requirement)章节,将必要的环境配置好。

注意,本次安装教程是在**没有安装**服务器控制面板的情况下进行的,仅供参考,如果您使用控制面板进行操作,实际情况可能有所不同。
Expand All @@ -8,7 +12,7 @@
由于 PHP 存在两种运行方式:FPM 和 CLI,通常情况下服务器这两种环境中的 PHP 版本是一致的,但是由于集成环境软件存在多个不同版本的 PHP,这就会导致两种环境 PHP 版本不一致,这种情况下就可能会造成很多小伙伴在[配置消息队列](./install#第四步-配置队列)时非常困惑。
:::

## 第一步,创建站点
### 第一步,创建站点

首先我们必须创建一个新的站点,用来搭建兰空图床,如果您需要使用 mysql,您可能还需要创建一个 mysql 数据库。在本次教程中,我们使用推荐的 sqlite3 数据库。

Expand Down Expand Up @@ -50,7 +54,7 @@ cd /www/wwwroot/app.com
unzip lsky-pro.zip
```

## 第二步,配置伪静态
### 第二步,配置伪静态

我们需要将程序的运行目录配置为 `public`,即站点的 Nginx 配置文件的站点根目录应该设置为 `/www/wwwroot/app.com/public`,配置示例:

Expand Down Expand Up @@ -88,7 +92,7 @@ location ~ .*\.(jpg|jpeg|webp|avif|bmp|gif|png|tif|tiff|jp2|j2k|jpf|jpm|jpg2|j2c

将内容复制后,添加到站点的 nginx 伪静态配置文件中。

## 第三步,开始安装
### 第三步,开始安装

解压后的站点根目录存在一个安装脚本文件 `install.sh`,我们给该脚本赋予可执行权限:

Expand All @@ -104,7 +108,7 @@ chmod +x install.sh

然后根据脚本提示安装即可。

## 第四步,配置消息队列
### 第四步,配置消息队列

兰空图床在生成缩略图、图片处理以及发送邮件等等功能中,这些耗时任务都需要使用消息队列来执行,我们可以使用 `php artisan queue:work` 命令来运行消息队列。

Expand Down Expand Up @@ -155,4 +159,97 @@ grep -E "^User|^Group" /etc/httpd/conf/httpd.conf
sudo supervisorctl reread && sudo supervisorctl update && sudo supervisorctl start "lsky-pro-worker:*"
```

至此,程序安装完成。
至此,程序安装完成。

## Docker 安装

### 下载源码

因 PHP 源码的特殊性,兰空图床不提供构建好的镜像,需要通过本地构建镜像,然后运行。

我们需要下载源码,然后把源码上传至安装了 docker 的服务器中,然后使用终端登录服务器,进入源码根目录。

### 构建本地镜像

```shell
docker build -t lsky-pro-plus -f docker/Dockerfile .
```

### 创建数据目录

为了方便查看上传文件、缓存、日志、数据库等,这些通常需要映射到宿主机。执行以下命令快速创建程序运行时需要的文件夹和数据库文件(您也可以手动创建,但是不能不创建):

```shell
mkdir -vp data/{cache,logs,private,public,uploads} \
&& touch data/database.sqlite \
&& chmod -R 777 data/{public,uploads}
```

目录和文件解释:

- `data/cache` 缓存目录
- `data/logs` 日志文件存放目录
- `data/private` 上传的私有文件目录,例如支付证书文件等
- `data/public` 上传的公开文件目录,例如头像等
- `data/uploads` 自定义储存上传的图片
- `data/database.sqlite` 数据库文件

### 启动并运行

```shell{4-6}
APP_DATA="./data" \
APP_PORT="8080" \
APP_NAME="Lsky Pro+" \
APP_URL="http://localhost" \
APP_SERIAL_NO="test" \
APP_SECRET="test" \
ADMIN_USERNAME="admin" \
ADMIN_EMAIL="[email protected]" \
ADMIN_PASSWORD="123456" \
docker-compose up -d
```

::: warning
请务必正确填写配置后执行,否则会导致安装失败,如果安装失败,可能需要删除容器后重启执行运行。
```shell
docker stop lsky-pro-plus
docker rm lsky-pro-plus
```

有时候你还可能需要删除镜像和储存卷:
```shell
docker rmi -f lsky-pro-plus
```
:::

参数解释:

- `APP_DATA` 持久化数据储存位置,可以是绝对路径或相对路径
- `APP_PORT` 宿主机运行端口,默认为 8080
- `APP_NAME` 应用名称
- `APP_URL` 站点 url
- `APP_SERIAL_NO` 许可证编号
- `APP_SECRET` 许可证密钥
- `ADMIN_USERNAME` 管理员用户名,只能包含英文字母、数字、中横线(-)或下划线(_)
- `ADMIN_EMAIL` 管理员邮箱
- `ADMIN_PASSWORD` 管理员密码

请务必填写正确后执行。执行以下命令查看服务运行日志,便于排查问题:

```shell
docker logs -f lsky-pro-plus
```

-f 参数用于实时跟踪日志输出。

然后可以访问 http://localhost:8080 预览站点。通过反向代理提供对外服务。

::: tip
成功运行后当前目录的程序文件会持久化储存在 [Docker Volume](https://docs.docker.com/engine/storage/volumes/#create-and-manage-volumes) 中,然后映射必要的文件到宿主机(APP_DATA 定义的位置)。

这意味着,若后续不需要重新构建容器了,除了您设置的 `APP_DATA` 的目录,则其他程序文件都可以删除,节省服务器储存。后续的源代码或其他文件,都通过 [Docker Volume](https://docs.docker.com/engine/storage/volumes/#create-and-manage-volumes) 管理。
:::

::: danger 警告
请不要将本地镜像上传至 docker hub 或打包后分发,否则可能会泄漏许可证编号或密钥等隐私数据。
:::

0 comments on commit 8dd047a

Please sign in to comment.