目录

飞牛NAS自建兰空图床

yingxz
yingxz
管理员
5
文章
0
粉丝
剑指江湖评论41阅读模式

目录

  1. 创建 .env 环境配置文件

  2. 创建 docker-compose.yml 配置文件

  3. 创建目录结构

  4. 启动服务

  5. MySQL 初始化脚本

  6. 配置 LskyPro 图床

  7. 定期维护和备份


初识 LskyPro 图床

什么是图床? 图床是一种用于外部托管图片的服务,你可以快速上传图片后通过链接访问,非常适合博客、论坛或聊天中使用。LskyPro 是一款自托管的图床程序,支持批量上传、分类、图床直链等功能,用 Docker 部署后既简单又安全。


1. 创建 .env 环境配置文件

首先,需要创建一个 .env 文件,里面存放所有重要的配置和数据库的密码。

  1. 在飞牛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_PASSWORDMYSQL_PASSWORD 使用 openssl rand -base64 24 自动生成高强度的随机密码,保证数据库安全。

  • .env 文件将存放所有敏感配置,可以在后续修改这些配置(如密码或端口)。

  • 使用环境变量使得配置更加灵活和安全。

  1. 查看生成的密码

    你可以运行下面的命令查看 .env 中生成的密码(数据库密码等)。

grep 'PASSWORD' .env
  1. 设置 .env 文件权限

    为了避免敏感配置文件被泄露,建议设置 .env 文件的权限为仅当前用户可读写。

chmod 600 .env

解释:设置文件权限可以防止其他用户读取或修改 .env 文件中的密码。


2. 创建 docker-compose.yml 配置文件

接下来,创建 docker-compose.yml 文件,来定义你的 Docker 容器配置。它将帮助你部署 LskyPro 和 MySQL 两个服务。

  1. 在项目根目录下创建 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: mysql:5.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 的代码、数据库文件、初始化脚本等。

  1. 创建目录结构

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 服务了。

  1. 启动服务

使用命令

docker-compose up -d

或者web页面中构建镜像

解释

  • docker-compose up -d 会根据 docker-compose.yml 文件的配置启动所有服务,并在后台运行。

  • 启动后,你可以通过 docker ps 命令查看正在运行的容器。


5. MySQL 初始化脚本

为了确保 MySQL 数据库的安全性,我们需要配置 MySQL 的权限。

  1. 创建初始化脚本

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
  1. 替换模板中的环境变量

envsubst < mysql/init/01-permissions.sql.template > mysql/init/01-permissions.sql

解释

  • envsubst 命令会将 .env 文件中的变量值替换到 SQL 模板文件中,生成最终的初始化脚本。

  • 该脚本会创建 MySQL 用户并授予必要的权限。


6. 配置 LskyPro 图床

  1. 打开浏览器,访问 http://<你的服务器IP>:8001,进入 LskyPro 的安装页面。

  2. 在安装界面中点击下一步,填写数据库信息:

    • 数据库主机: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自定义功能,丰富的主题选项,众多实用小工具。

【江湖汇聚,数字为剑】影行者出品,转载请注明出处。

weinxin
我的微信
微信号已复制
我的微信
微信扫一扫
匿名

发表评论

匿名网友
确定

拖动滑块以完成验证