使用 Systemd (推荐,适用于 Systemd 系统,如 Ubuntu 16.04+, CentOS 7+)

Systemd 是一个系统和服务管理器,是现代 Linux 发行版的标准。

  1. 创建 Systemd 服务文件:
    创建文件 /etc/systemd/system/your_project.service (将 your_project 替换为你的项目名称). 使用你喜欢的编辑器 (如 sudo nano /etc/systemd/system/your_project.service),并添加以下内容:

    复制代码
    [Unit] Description=Your Python Django Project After=network.target [Service] User=root WorkingDirectory=/www/wwwroot/xx/blog-backend Type=simple PrivateTmp=false Environment="NVM_DIR=/root/.nvm" Environment="PYENV_ROOT=/root/.pyenv" Environment="PATH=/www/wwwroot/xx/blog-backend/node_modules/.bin:/root/.pyenv/shims:/root/.nvm/versions/node/v18.18.0/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/root/.local/bin:/root/bin" ExecStart=/root/.pyenv/shims/python3 manage.py runserver 0.0.0.0:xx --noreload Restart=on-failure [Install] WantedBy=multi-user.target
    • Description: 服务的描述信息。
    • After=network.target: 确保网络服务启动后才启动此服务。
    • User: 运行服务的用户名。 重要: 确保使用具有项目访问权限的用户。
    • WorkingDirectory: 项目的根目录。
    • ExecStart: 要执行的命令。 确保使用 Python3 的完整路径(可以使用 which python3 找到)。
    • Restart=on-failure: 如果服务意外停止,则自动重启。
    • WantedBy=multi-user.target: 在多用户模式下启动此服务。
  2. 启用并启动服务:

    bash复制代码
    sudo systemctl daemon-reload # 重新加载 systemd 配置 sudo systemctl enable your_project.service # 设置开机自启 sudo systemctl start your_project.service # 立即启动服务
  3. 检查服务状态:

    bash复制代码
    sudo systemctl status your_project.service

    如果一切正常,你应该看到服务正在运行。

  4. 停止服务:

    bash复制代码
    sudo systemctl stop your_project.service
  5. 禁用开机自启:

    bash复制代码
    sudo systemctl disable your_project.service