93 lines
2.8 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# 停止转录服务
sudo systemctl stop transcription
# 创建应用目录并设置所有者
sudo mkdir -p /opt/transcription-app
sudo chown $USER:$USER /opt/transcription-app
# 复制应用文件
cp app.py /opt/transcription-app/
cp -r templates /opt/transcription-app/
cp requirements.txt /opt/transcription-app/
cp scripts/reset_db.py /opt/transcription-app/
cp scripts/create_admin.py /opt/transcription-app/
cp .env /opt/transcription-app/ # 复制包含 API 密钥的 .env 文件
# 如果 .env 文件中不存在 SECRET_KEY则添加
if ! grep -q "SECRET_KEY" /opt/transcription-app/.env; then
echo "SECRET_KEY=$(openssl rand -hex 32)" >> /opt/transcription-app/.env
echo "已添加 SECRET_KEY 到 .env 文件"
fi
# 创建并激活虚拟环境
python3 -m venv /opt/transcription-app/venv
source /opt/transcription-app/venv/bin/activate
# 安装依赖
cd /opt/transcription-app
pip install -r requirements.txt
# 创建上传和数据库目录并设置权限
mkdir -p /opt/transcription-app/uploads
mkdir -p /opt/transcription-app/instance
chmod 755 /opt/transcription-app/uploads
chmod 755 /opt/transcription-app/instance
# 初始化或迁移数据库
if [ ! -f /opt/transcription-app/instance/transcriptions.db ]; then
# 如果数据库不存在,从头创建
echo "数据库不存在,正在创建新数据库..."
python reset_db.py
else
# 如果数据库存在,迁移模式以保留数据
echo "数据库已存在,正在迁移模式以保留数据..."
python migrate_db.py
fi
# 设置所有文件的正确所有者
sudo chown -R $USER:$USER /opt/transcription-app
# 创建 systemd 服务文件
sudo tee /etc/systemd/system/transcription.service << EOF
[Unit]
Description=Transcription Web Application
After=network.target
[Service]
User=$USER
EnvironmentFile=/opt/transcription-app/.env
WorkingDirectory=/opt/transcription-app
Environment="PATH=/opt/transcription-app/venv/bin"
Environment="PYTHONPATH=/opt/transcription-app"
ExecStart=/opt/transcription-app/venv/bin/gunicorn --workers 3 --threads 8 --bind 0.0.0.0:8899 --timeout 600 app:app
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
# 重新加载 systemd 并启动服务
sudo systemctl daemon-reload
sudo systemctl restart transcription
sudo systemctl disable transcription
sudo systemctl enable transcription
# 检查服务状态
echo "正在检查服务状态..."
sleep 3
sudo systemctl status transcription
echo "安装完成!应用应在 8899 端口上运行。"
# 询问是否创建管理员账户
read -p "是否现在创建管理员账户?(y/n): " create_admin
if [[ $create_admin == "y" || $create_admin == "Y" ]]; then
echo "正在创建管理员账户..."
python create_admin.py
else
echo "你可以稍后运行以下命令来创建管理员账户python create_admin.py"
fi