80 lines
2.1 KiB
Bash
80 lines
2.1 KiB
Bash
#!/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" |