#!/bin/bash # 邮箱系统 1Panel 初始化脚本 # 用于在1Panel环境中首次部署系统 echo "开始初始化邮箱系统..." # 检查是否在ARM架构上运行 ARCH=$(uname -m) if [[ $ARCH == "aarch64" || $ARCH == "arm64" ]]; then echo "检测到ARM架构: $ARCH" else echo "警告: 当前架构 $ARCH 不是ARM,可能会影响性能优化" fi # 创建必要的目录 mkdir -p logs email_data db echo "创建目录完成" # 检查环境变量文件是否存在,不存在则创建 if [ ! -f .env ]; then echo "创建.env文件..." # 生成随机密钥 SECRET_KEY=$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 32) cat > .env << EOF FLASK_ENV=production SECRET_KEY=${SECRET_KEY} MAIL_DOMAINS=example.com,mail.example.com DATABASE_URL=sqlite:///db/email_system.db EOF echo ".env文件已创建" fi # 安装Python依赖 echo "安装Python依赖..." pip install --no-cache-dir -r requirements.txt echo "依赖安装完成" # 初始化数据库 echo "初始化数据库..." python -c "from app.models import init_db; init_db()" echo "数据库初始化完成" # 检查SMTP服务器端口是否可用 PORT_CHECK=$(netstat -ln | grep ':25 ' | wc -l) if [ $PORT_CHECK -gt 0 ]; then echo "警告: 端口25已被占用,可能需要修改SMTP端口配置" # 自动修改为备用端口587 sed -i 's/SMTP_PORT = 25/SMTP_PORT = 587/g' config.py echo "已将SMTP端口更改为587" fi # 创建服务管理脚本 cat > email_system.service << EOF [Unit] Description=Email System Service After=network.target [Service] User=root WorkingDirectory=$(pwd) ExecStart=$(which gunicorn) --bind 0.0.0.0:5000 --workers 4 run:app Restart=always RestartSec=10 [Install] WantedBy=multi-user.target EOF echo "服务管理脚本已创建: email_system.service" echo "可以使用以下命令安装系统服务:" echo "sudo cp email_system.service /etc/systemd/system/" echo "sudo systemctl daemon-reload" echo "sudo systemctl enable email_system.service" echo "sudo systemctl start email_system.service" echo "初始化完成,系统已准备就绪" echo "可以通过以下命令启动系统:" echo "python run.py --host 0.0.0.0 --port 5000"