逍遥图库系统逍遥图库系统
首页
  • 快速开始

    • 项目介绍
    • 安装指南
    • 快速开始
  • 深入了解

    • 配置说明
    • 部署指南
    • 安全配置
  • 用户系统
  • 图片管理
  • 相册管理
  • 互动功能
  • 管理后台
  • PWA 渐进式应用
  • API 概述
  • 认证接口
  • 图片接口
  • 相册接口
  • 用户接口
  • 管理接口
  • 主题系统
  • 性能优化
  • 常见问题
  • 更新日志
Gitee
首页
  • 快速开始

    • 项目介绍
    • 安装指南
    • 快速开始
  • 深入了解

    • 配置说明
    • 部署指南
    • 安全配置
  • 用户系统
  • 图片管理
  • 相册管理
  • 互动功能
  • 管理后台
  • PWA 渐进式应用
  • API 概述
  • 认证接口
  • 图片接口
  • 相册接口
  • 用户接口
  • 管理接口
  • 主题系统
  • 性能优化
  • 常见问题
  • 更新日志
Gitee
  • 入门指南

    • 项目介绍
    • 安装指南
    • 快速开始
  • 进阶配置

    • 配置说明
    • 部署指南
    • 安全配置

部署指南

本指南介绍如何将逍遥图库系统部署到生产环境。

部署前准备

1. 服务器要求

项目最低配置推荐配置
CPU1 核2 核+
内存1GB2GB+
硬盘10GBSSD 50GB+
带宽1Mbps5Mbps+

2. 软件要求

  • PHP 8.0+
  • MySQL 8.0+
  • Nginx / Apache / IIS
  • Redis(推荐)
  • Composer 2.0+

3. 生产环境检查清单

  • [ ] APP_DEBUG = false
  • [ ] 数据库密码已修改为强密码
  • [ ] 目录权限已正确设置
  • [ ] SSL 证书已配置
  • [ ] 备份策略已制定

宝塔面板部署

宝塔面板是最简单的部署方式。

步骤 1:创建网站

  1. 登录宝塔面板
  2. 点击「网站」→「添加站点」
  3. 填写信息:
    • 域名:your-domain.com
    • 根目录:/www/wwwroot/photo-gallery
    • PHP 版本:8.0+
    • 数据库:MySQL

步骤 2:上传代码

方式一:FTP 上传

# 使用 FileZilla 等 FTP 工具上传

方式二:Git 部署

cd /www/wwwroot
git clone https://gitee.com/sinma/zeaya.git photo-gallery

步骤 3:配置网站

关键配置

运行目录必须设置为 /(根目录),不是 /public!

  1. 点击网站 → 设置
  2. 找到「网站目录」→「运行目录」
  3. 选择 /(根目录)
  4. 保存

步骤 4:安装依赖

cd /www/wwwroot/photo-gallery
composer install --no-dev

步骤 5:配置环境

# 编辑 .env 文件
vi .env

修改以下配置:

APP_DEBUG = false

DB_HOST = 127.0.0.1
DB_NAME = your_database
DB_USER = your_username
DB_PASS = your_password

步骤 6:设置权限

# 设置所有者
chown -R www:www /www/wwwroot/photo-gallery

# 设置基本权限
chmod -R 755 /www/wwwroot/photo-gallery

# 设置写入权限
chmod -R 777 runtime
chmod -R 777 storage

# 保护 .env 文件
chmod 600 .env

步骤 7:导入数据库

  1. 宝塔面板 → 数据库 → 选择数据库 → 管理
  2. 点击「导入」
  3. 选择 database/migrations/create_tables.sql

步骤 8:配置伪静态

在网站设置中,选择「伪静态」→「thinkphp」

或手动配置 Nginx:

location / {
    if (!-e $request_filename) {
        rewrite ^(.*)$ /index.php?s=/$1 last;
    }
}

步骤 9:配置 SSL

  1. 网站设置 → SSL
  2. 选择「Let's Encrypt」
  3. 点击「申请」
  4. 开启「强制 HTTPS」

Nginx 部署

完整配置示例

server {
    listen 80;
    listen [::]:80;
    server_name your-domain.com;

    # HTTP 重定向到 HTTPS
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    server_name your-domain.com;
    root /www/wwwroot/photo-gallery;
    index index.php index.html;

    # SSL 配置
    ssl_certificate /path/to/fullchain.pem;
    ssl_certificate_key /path/to/privkey.pem;
    ssl_protocols TLSv1.2 TLSv1.3;

    # 安全头
    add_header X-Content-Type-Options "nosniff" always;
    add_header X-Frame-Options "SAMEORIGIN" always;
    add_header X-XSS-Protection "1; mode=block" always;

    # 敏感目录保护
    location ~ ^/(app|config|database|vendor|runtime|view)/ {
        deny all;
    }

    # 隐藏文件保护
    location ~ /\. {
        deny all;
    }

    # 禁止上传目录执行 PHP
    location ~* ^/(storage|static/uploads)/.*\.(php|phar)$ {
        deny all;
    }

    # 静态资源缓存
    location ~* \.(css|js|jpg|jpeg|png|gif|ico|svg|woff|woff2)$ {
        expires 30d;
        add_header Cache-Control "public, immutable";
    }

    # URL 重写
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    # PHP 处理
    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    # Gzip 压缩
    gzip on;
    gzip_types text/plain text/css application/json application/javascript;
}

Docker 部署

docker-compose.yml

version: '3'

services:
  app:
    image: php:8.2-fpm
    volumes:
      - ./:/var/www/html
    depends_on:
      - mysql
      - redis

  nginx:
    image: nginx:alpine
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./:/var/www/html
      - ./webserver_config/nginx.conf:/etc/nginx/conf.d/default.conf
    depends_on:
      - app

  mysql:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: your_password
      MYSQL_DATABASE: photo_gallery
    volumes:
      - mysql_data:/var/lib/mysql

  redis:
    image: redis:alpine
    volumes:
      - redis_data:/data

volumes:
  mysql_data:
  redis_data:

启动:

docker-compose up -d

性能优化

1. PHP 配置优化

编辑 php.ini:

; 文件上传
upload_max_filesize = 10M
post_max_size = 20M

; 执行时间
max_execution_time = 300

; 内存
memory_limit = 256M

; OPcache(必须开启)
opcache.enable = 1
opcache.memory_consumption = 128
opcache.max_accelerated_files = 10000

2. MySQL 优化

# my.cnf
innodb_buffer_pool_size = 256M
query_cache_type = 1
query_cache_size = 32M

3. 启用 Redis 缓存

确保 .env 中配置了 Redis,并在 config/cache.php 中启用。

4. 启动队列监听

# 使用 Supervisor 管理队列
[program:zeaya-queue]
command=php /www/wwwroot/photo-gallery/think queue:listen
directory=/www/wwwroot/photo-gallery
autostart=true
autorestart=true
user=www

备份策略

数据库备份

# 每日备份
mysqldump -u root -p photo_gallery > backup_$(date +%Y%m%d).sql

# 使用宝塔面板计划任务
0 2 * * * mysqldump -u root -p photo_gallery | gzip > /backup/db_$(date +\%Y\%m\%d).sql.gz

文件备份

# 备份上传文件
tar -czf storage_$(date +%Y%m%d).tar.gz storage/

监控告警

1. 日志监控

定期检查 runtime/log/ 目录下的错误日志。

2. 服务监控

使用宝塔面板的监控功能,或安装 Prometheus + Grafana。

3. 磁盘监控

确保磁盘空间充足,特别是存储图片的目录。

常见问题

1. 502 Bad Gateway

原因:PHP-FPM 未启动或配置错误

解决:

# 检查 PHP-FPM 状态
systemctl status php8.2-fpm

# 重启
systemctl restart php8.2-fpm

2. 权限被拒绝

原因:目录权限不正确

解决:

chown -R www:www /www/wwwroot/photo-gallery
chmod -R 755 /www/wwwroot/photo-gallery
chmod -R 777 runtime storage

3. 数据库连接失败

原因:配置错误或 MySQL 未启动

解决:

  • 检查 .env 中的数据库配置
  • 确认 MySQL 服务正在运行
  • 检查数据库用户权限

下一步

  • 安全配置 - 安全加固
  • 性能优化 - 进一步优化
在 Gitee 上编辑此页
Prev
配置说明
Next
安全配置