dibang-backend.service 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. # Systemd 服务文件 - 地磅销售系统后端
  2. # 文件路径: /etc/systemd/system/dibang-backend.service
  3. #
  4. # 使用方法:
  5. # 1. 复制此文件到服务器: sudo cp dibang-backend.service /etc/systemd/system/
  6. # 2. 根据实际情况修改路径和用户
  7. # 3. 重新加载 systemd: sudo systemctl daemon-reload
  8. # 4. 启用服务: sudo systemctl enable dibang-backend
  9. # 5. 启动服务: sudo systemctl start dibang-backend
  10. # 6. 查看状态: sudo systemctl status dibang-backend
  11. [Unit]
  12. Description=Dibang Backend API Service
  13. Documentation=https://github.com/your-org/simple-dibang-xiaoshou
  14. After=network.target mysql.service
  15. Wants=network-online.target
  16. [Service]
  17. Type=simple
  18. # 运行用户(根据实际情况修改)
  19. User=www-data
  20. Group=www-data
  21. # 工作目录
  22. WorkingDirectory=/iflytek/dibang/api/backend
  23. # 环境变量
  24. Environment="PATH=/root/.cargo/bin:/usr/local/bin:/usr/bin:/bin"
  25. Environment="PYTHONUNBUFFERED=1"
  26. Environment="ENV=prod"
  27. # 启动命令
  28. # 使用 uv 运行(推荐方式)
  29. # 注意: 需要确保 uv 在 PATH 中,通常安装在 ~/.cargo/bin/uv
  30. # 如果 uv 不在默认路径,请修改为完整路径,例如: /root/.cargo/bin/uv
  31. ExecStart=/root/.cargo/bin/uv run python app/main.py
  32. # 备用方式1: 使用虚拟环境中的 Python(如果使用传统方式)
  33. # ExecStart=/iflytek/dibang/api/backend/.venv/bin/python app/main.py
  34. # 备用方式2: 使用启动脚本
  35. # ExecStart=/iflytek/dibang/api/backend/start.sh start
  36. # 方式3: 使用 Gunicorn(生产环境推荐,需要先安装 gunicorn)
  37. # ExecStart=/iflytek/dibang/api/.venv/bin/gunicorn app.main:app \
  38. # --workers 4 \
  39. # --worker-class uvicorn.workers.UvicornWorker \
  40. # --bind 0.0.0.0:8000 \
  41. # --access-logfile - \
  42. # --error-logfile - \
  43. # --log-level info \
  44. # --timeout 120 \
  45. # --keep-alive 5
  46. # 重启策略
  47. Restart=always
  48. RestartSec=10
  49. StartLimitInterval=300
  50. StartLimitBurst=5
  51. # 日志
  52. StandardOutput=journal
  53. StandardError=journal
  54. SyslogIdentifier=dibang-backend
  55. # 安全设置
  56. NoNewPrivileges=true
  57. PrivateTmp=true
  58. ProtectSystem=strict
  59. ProtectHome=true
  60. ReadWritePaths=/iflytek/dibang/api
  61. ReadOnlyPaths=/etc
  62. # 资源限制(可选)
  63. # LimitNOFILE=65535
  64. # LimitNPROC=4096
  65. [Install]
  66. WantedBy=multi-user.target