Files
AIGC/demo/docs/环境变量配置说明-宝塔部署.md

6.8 KiB
Raw Blame History

环境变量配置说明 - 宝塔部署

📋 必需的环境变量

1. 数据库配置

# MySQL数据库主机地址本地数据库使用127.0.0.1或localhost
DB_HOST=127.0.0.1

# MySQL数据库端口默认3306
DB_PORT=3306

# 数据库名称
DB_NAME=aigc_platform

# 数据库用户名
DB_USERNAME=aigc_user

# 数据库密码(请替换为你的实际密码)
DB_PASSWORD=your_secure_password_here

2. JWT配置

# JWT密钥请生成一个足够长的随机字符串至少64字符
JWT_SECRET=your-very-long-secret-key-at-least-64-characters-for-production-security

# JWT过期时间毫秒默认604800000=7天
JWT_EXPIRATION=604800000

3. AI API配置

# AI API基础URL
AI_API_BASE_URL=https://ai.comfly.chat
AI_API_KEY=your_ai_api_key

# 图片生成API配置
AI_IMAGE_API_BASE_URL=https://ai.comfly.chat
AI_IMAGE_API_KEY=your_ai_image_api_key

4. 支付宝配置

# 支付宝应用ID
ALIPAY_APP_ID=your_alipay_app_id

# 支付宝私钥
ALIPAY_PRIVATE_KEY=your_alipay_private_key

# 支付宝公钥
ALIPAY_PUBLIC_KEY=your_alipay_public_key

# 域名配置
ALIPAY_DOMAIN=https://yourdomain.com

# 回调URL
ALIPAY_NOTIFY_URL=https://yourdomain.com/api/payments/alipay/notify
ALIPAY_RETURN_URL=https://yourdomain.com/payment/success

5. 腾讯云SES邮件服务配置

# 腾讯云SES Secret ID
TENCENT_SES_SECRET_ID=your_tencent_ses_secret_id

# 腾讯云SES Secret Key
TENCENT_SES_SECRET_KEY=your_tencent_ses_secret_key

# 发件邮箱
TENCENT_SES_FROM_EMAIL=noreply@yourdomain.com

# 邮件模板ID
TENCENT_SES_TEMPLATE_ID=your_template_id

6. 文件路径配置(可选)

# FFmpeg可执行文件路径Linux服务器
FFMPEG_PATH=/usr/bin/ffmpeg

# 临时文件目录
TEMP_DIR=/app/temp

# 上传文件目录
UPLOAD_PATH=/app/uploads

# 日志文件路径
LOG_FILE_PATH=/app/logs/application.log

🔧 宝塔面板设置环境变量

方式一:通过启动脚本设置

在宝塔面板创建启动脚本 start.sh

#!/bin/bash

# 设置环境变量
export DB_HOST=127.0.0.1
export DB_PORT=3306
export DB_NAME=aigc_platform
export DB_USERNAME=aigc_user
export DB_PASSWORD=jRbHPZbbkdm24yTT

export JWT_SECRET=aigc-demo-secret-key-for-jwt-token-generation-2025-production-version-secure

export AI_API_BASE_URL=https://ai.comfly.chat
export AI_API_KEY=sk-xCX1X12e8Dpj4mRJKFMxFUnV29pzJQpPeuZFGqTwYOorjvOQ

export AI_IMAGE_API_BASE_URL=https://ai.comfly.chat
export AI_IMAGE_API_KEY=sk-xCX1X12e8Dpj4mRJKFMxFUnV29pzJQpPeuZFGqTwYOorjvOQ

export ALIPAY_APP_ID=your_app_id
export ALIPAY_PRIVATE_KEY=your_private_key
export ALIPAY_PUBLIC_KEY=your_public_key
export ALIPAY_DOMAIN=https://yourdomain.com
export ALIPAY_NOTIFY_URL=https://yourdomain.com/api/payments/alipay/notify
export ALIPAY_RETURN_URL=https://yourdomain.com/payment/success

export TENCENT_SES_SECRET_ID=your_secret_id
export TENCENT_SES_SECRET_KEY=your_secret_key
export TENCENT_SES_FROM_EMAIL=noreply@yourdomain.com
export TENCENT_SES_TEMPLATE_ID=your_template_id

export FFMPEG_PATH=/usr/bin/ffmpeg
export TEMP_DIR=/app/temp
export UPLOAD_PATH=/app/uploads
export LOG_FILE_PATH=/app/logs/application.log

# 启动应用
java -jar -Dspring.profiles.active=prod demo-0.0.1-SNAPSHOT.jar

赋予执行权限:

chmod +x start.sh

方式二:创建 .env 文件

创建 .env 文件:

# 数据库配置
DB_HOST=127.0.0.1
DB_PORT=3306
DB_NAME=aigc_platform
DB_USERNAME=aigc_user
DB_PASSWORD=jRbHPZbbkdm24yTT

# JWT配置
JWT_SECRET=aigc-demo-secret-key-for-jwt-token-generation-2025-production-version-secure
JWT_EXPIRATION=604800000

# AI API配置
AI_API_BASE_URL=https://ai.comfly.chat
AI_API_KEY=sk-xCX1X12e8Dpj4mRJKFMxFUnV29pzJQpPeuZFGqTwYOorjvOQ
AI_IMAGE_API_BASE_URL=https://ai.comfly.chat
AI_IMAGE_API_KEY=sk-xCX1X12e8Dpj4mRJKFMxFUnV29pzJQpPeuZFGqTwYOorjvOQ

# 支付宝配置
ALIPAY_APP_ID=your_app_id
ALIPAY_PRIVATE_KEY=your_private_key
ALIPAY_PUBLIC_KEY=your_public_key
ALIPAY_DOMAIN=https://yourdomain.com
ALIPAY_NOTIFY_URL=https://yourdomain.com/api/payments/alipay/notify
ALIPAY_RETURN_URL=https://yourdomain.com/payment/success

# 腾讯云SES配置
TENCENT_SES_SECRET_ID=your_secret_id
TENCENT_SES_SECRET_KEY=your_secret_key
TENCENT_SES_FROM_EMAIL=noreply@yourdomain.com
TENCENT_SES_TEMPLATE_ID=your_template_id

# 文件路径配置
FFMPEG_PATH=/usr/bin/ffmpeg
TEMP_DIR=/app/temp
UPLOAD_PATH=/app/uploads
LOG_FILE_PATH=/app/logs/application.log

使用 source 加载环境变量后启动:

source .env && java -jar -Dspring.profiles.active=prod demo-0.0.1-SNAPSHOT.jar

方式三systemd服务配置

创建 systemd 服务文件 /etc/systemd/system/aigc-platform.service

[Unit]
Description=AIGC Platform Service
After=network.target mysql.service

[Service]
Type=simple
User=www
WorkingDirectory=/www/wwwroot/aigc-platform
ExecStart=/usr/bin/java -jar -Dspring.profiles.active=prod demo-0.0.1-SNAPSHOT.jar

# 环境变量配置
Environment="DB_HOST=127.0.0.1"
Environment="DB_PORT=3306"
Environment="DB_NAME=aigc_platform"
Environment="DB_USERNAME=aigc_user"
Environment="DB_PASSWORD=jRbHPZbbkdm24yTT"
Environment="JWT_SECRET=your-jwt-secret-key"
Environment="AI_API_BASE_URL=https://ai.comfly.chat"
Environment="AI_API_KEY=your_api_key"

Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

启动服务:

systemctl daemon-reload
systemctl enable aigc-platform
systemctl start aigc-platform
systemctl status aigc-platform

配置验证

启动应用后,检查日志确认数据库连接成功:

# 查看启动日志
tail -f logs/application.log

# 应该看到类似的日志:
# INFO  - HikariPool-1 - Starting...
# INFO  - HikariPool-1 - Start completed.
# INFO  - Started DemoApplication in X.XX seconds

测试数据库连接:

curl http://localhost:8080/api/health/ping

🔐 安全建议

  1. 不要将 .env 文件或包含密钥的启动脚本提交到Git

    echo ".env" >> .gitignore
    echo "start.sh" >> .gitignore
    
  2. 定期更换JWT密钥和数据库密码

  3. 生产环境使用强密码

    • 数据库密码至少16位包含大小写字母、数字、特殊字符
    • JWT密钥至少64字符随机字符串
  4. 限制数据库访问

    • 仅允许应用服务器IP访问MySQL
    • 不要使用root用户创建专用数据库用户
  5. 启用HTTPS

    • 生产环境务必配置SSL证书
    • 在Nginx/宝塔面板配置HTTPS

📝 快速配置模板(本地测试用)

# 最小化配置(使用默认值)
export DB_HOST=127.0.0.1
export DB_USERNAME=aigc_user
export DB_PASSWORD=jRbHPZbbkdm24yTT
export JWT_SECRET=aigc-demo-secret-key-for-jwt-token-generation-2025

# 启动应用
java -jar -Dspring.profiles.active=prod demo-0.0.1-SNAPSHOT.jar