初识 LskyPro 图床
什么是图床? 图床是一种用于外部托管图片的服务,你可以快速上传图片后通过链接访问,非常适合博客、论坛或聊天中使用。LskyPro 是一款自托管的图床程序,支持批量上传、分类、图床直链等功能,用 Docker 部署后既简单又安全。
1. 创建 .env
环境配置文件
首先,需要创建一个 .env
文件,里面存放所有重要的配置和数据库的密码。
-
在飞牛NAS或云服务器的自定义目录下创建
.env
文件:
cat > .env <<EOF
# LSKY 环境配置
COMPOSE_PROJECT_NAME=lsky-prod
# MySQL 配置
MYSQL_ROOT_PASSWORD=$(openssl rand -base64 24)
MYSQL_DATABASE=lsky_data
MYSQL_USER=lsky_user
MYSQL_PASSWORD=$(openssl rand -base64 24)
# Lsky Pro 配置
WEB_PORT=8089
HOST_PORT=8001
EOF
解释:
MYSQL_ROOT_PASSWORD
和MYSQL_PASSWORD
使用openssl rand -base64 24
自动生成高强度的随机密码,保证数据库安全。
.env
文件将存放所有敏感配置,可以在后续修改这些配置(如密码或端口)。使用环境变量使得配置更加灵活和安全。
-
查看生成的密码:
你可以运行下面的命令查看
.env
中生成的密码(数据库密码等)。
grep 'PASSWORD' .env
-
设置
.env
文件权限:为了避免敏感配置文件被泄露,建议设置
.env
文件的权限为仅当前用户可读写。
chmod 600 .env
解释:设置文件权限可以防止其他用户读取或修改
.env
文件中的密码。
2. 创建 docker-compose.yml
配置文件
接下来,创建 docker-compose.yml
文件,来定义你的 Docker 容器配置。它将帮助你部署 LskyPro 和 MySQL 两个服务。
-
在项目根目录下创建
docker-compose.yml
文件:
version'3'
services
lskypro
image halcyonazure/lsky-pro-docker latest
restart unless-stopped
hostname lskypro
container_name lskypro
environment
WEB_PORT=$ WEB_PORT volumes
./web:/var/www/html/ ports
"${HOST_PORT}:${WEB_PORT}"
networks
lsky-net
mysql-lsky
image mysql5.7.22
restart unless-stopped
hostname mysql-lsky
container_name mysql-lsky
command --default-authentication-plugin=mysql_native_password
volumes
./mysql/data:/var/lib/mysql
./mysql/conf:/etc/mysql
./mysql/log:/var/log/mysql environment
MYSQL_ROOT_PASSWORD $ MYSQL_ROOT_PASSWORD
MYSQL_DATABASE $ MYSQL_DATABASE
MYSQL_USER $ MYSQL_USER
MYSQL_PASSWORD $ MYSQL_PASSWORD
networks
lsky-net
networks
lsky-net
解释:
lskypro
服务是用于运行 LskyPro 图床,配置了 Web 服务的端口和挂载目录。
mysql-lsky
服务用于运行 MySQL 数据库,存储 LskyPro 的数据。
volumes
用来将本地目录映射到容器内,便于数据持久化存储。通过
networks
可以使两个服务在同一个网络内相互通信。
3. 创建目录结构
为了确保文件有条理,我们需要创建一些必要的目录来存放 LskyPro 的代码、数据库文件、初始化脚本等。
-
创建目录结构:
mkdir -p web mysql/data mysql/conf mysql/init backup
解释:
web/
:存放 LskyPro 图床的代码和文件。
mysql/
:存放 MySQL 数据库的文件,包括数据、配置和日志。
backup/
:用于存放备份文件。
init/
:存放 MySQL 初始化脚本。
结构说明:
. ├── .env ├── docker-compose.yml ├── web/ # 放 LskyPro 的文件 ├── mysql/ │ ├── data/ # MySQL 数据 │ ├── conf/ # MySQL 配置 │ └── init/ # 初始化脚本 └── backup/ # 备份文件
原因:清晰结构便于管理,后续维护时更高效。
4. 启动服务
一切准备好后,我们就可以启动 LskyPro 和 MySQL 服务了。
-
启动服务:
使用命令
docker-compose up -d
或者web页面中构建镜像
解释:
docker-compose up -d
会根据docker-compose.yml
文件的配置启动所有服务,并在后台运行。启动后,你可以通过
docker ps
命令查看正在运行的容器。
5. MySQL 初始化脚本
为了确保 MySQL 数据库的安全性,我们需要配置 MySQL 的权限。
-
创建初始化脚本:
mkdir -p mysql/init
cat > mysql/init/01-permissions.sql.template <<EOF
DROP USER IF EXISTS '${MYSQL_USER}'@'%';
CREATE USER '${MYSQL_USER}'@'%' IDENTIFIED BY '${MYSQL_PASSWORD}';
REVOKE ALL PRIVILEGES, GRANT OPTION FROM '${MYSQL_USER}'@'%';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE TEMPORARY TABLES
ON ${MYSQL_DATABASE}.* TO '${MYSQL_USER}'@'%';
FLUSH PRIVILEGES;
EOF
-
替换模板中的环境变量:
envsubst < mysql/init/01-permissions.sql.template > mysql/init/01-permissions.sql
解释:
envsubst
命令会将.env
文件中的变量值替换到 SQL 模板文件中,生成最终的初始化脚本。该脚本会创建 MySQL 用户并授予必要的权限。
6. 配置 LskyPro 图床
-
打开浏览器,访问
http://<你的服务器IP>:8001
,进入 LskyPro 的安装页面。 -
在安装界面中点击下一步,填写数据库信息:
-
数据库主机:
mysql-lsky
-
用户:
lsky_user
-
密码:从
.env
文件中找到MYSQL_PASSWORD
-
数据库:
lsky_data
-
点击“提交/安装”即可完成安装。
解释:
LskyPro 需要连接 MySQL 数据库,填写正确的数据库信息以便完成安装。
安装完成
使用安装过程中设定的账号和密码可以正常登陆
7. 定期维护和备份
为了确保数据安全,你需要定期备份 LskyPro 和 MySQL 的数据。
1. 备份操作
# 备份数据库
docker exec mysql-lsky mysqldump -u root -p"${MYSQL_ROOT_PASSWORD}" lsky_data > backup/backup-$(date +%F).sql
# 备份整个环境
tar czvf backup/lsky-backup-$(date +%F).tar.gz .env web/ mysql/data/
解释:
备份数据库:使用
mysqldump
备份 MySQL 数据。备份整个环境:将
.env
文件、Web 代码和数据库数据一起备份。
2. 更新密码
如果需要更新 .env
文件中的密码,修改后执行以下命令重启服务:
docker-compose down
docker-compose up -d
解释:
更新
.env
文件中的密码后,必须重启容器才能应用新配置。
HTML5+CSS3 响应式设计,博客、杂志、图片、公司企业多种布局可选,集成SEO自定义功能,丰富的主题选项,众多实用小工具。
【江湖汇聚,数字为剑】影行者出品,转载请注明出处。
