【问题标题】:Ubuntu service Upstart or SystemD, Django development server as ServiceUbuntu 服务 Upstart 或 SystemD,Django 开发服务器即服务
【发布时间】:2018-04-04 21:13:55
【问题描述】:

我在 Ubuntu 16.01 上使用 Python 和 Django 框架已经有一段时间了。因为我将 Django 与 Q 系统(芹菜)和其他一些增强应用程序一起使用。当我每次尝试运行所有应用程序时,我需要运行开发服务器“{python manage.py runserver}”,然后运行 ​​Celery Worker“{celery -A filename worker -l info}”。每次我工作时,我都需要几分钟才能进入目录并启动它。我四处冲浪并提出将其设置为服务的想法。例如,服务名称:“pyd”。 我只需要运行“{sudo pyd start}” -> Django 开发服务器和 Celery 就会启动,如果我运行“{sudo pyd stop}” -> 那么 Django 和 Celery 就会停止。

我尝试四处搜索,结果开始让我在“Upstart”和“Systemd”之间感到困惑。

谁能建议,我如何让 Django 和 Celery as Service 在 Ubuntu 中运行?在“Upstart”和“Systemd”之间哪个更好??

表示示例的源代码表示赞赏。

谢谢

【问题讨论】:

标签: django ubuntu celery systemd upstart


【解决方案1】:

您可以使用 Upstart 来执行此操作。

安装后,进入目录/etc/init/。 创建一个文件xyz.conf 并添加以下行:

cd /path/to/your/manage.py/file
exec python manage.py runserver & celery -A filename worker -l info

如果您使用的是 virtualenv,请在上面添加以下行:

pre-start script
    #activate virtual environment
    source env-name/bin/activate
end script

现在,您可以通过发出命令 sudo start xyz 将 Django Dev Server 和 Celery 作为服务启动,通过发出 sudo stop xyz 停止它并通过发出 sudo status xyz 检查服务的状态。

xyz.conf 将登录到/var/log/upstart/xyz.log。您可以使用以下命令查看日志:sudo tail -f /var/log/upstart/xyz.log

【讨论】:

  • 我已经试过了,你说的。它仍然无法正常工作。 {{sudo start x1}} 我尝试检查终端,它说:“作业无法启动” 我尝试使用“init-checkconf x1”检查语法:语法正常。语法
  • 内容:chdir Desktop/NewFolder exec python manage runserver 我使用了“chdir”,因为“cd”显示错误。
  • 您确定您的 Upstart 安装正确吗? upstart.ubuntu.com/getting-started.html
  • 我一直在检查它。
  • 如果我运行 { script cd /home/x7/Desktop/Rest_API_v1.1/ exec python -m SimpleHTTPServer 8000 end script },进程运行正常。但是如果我运行 { script cd /home/x7/Desktop/Rest_API_v1.1/ exec python manage.py runserver end script },它将无法工作。
【解决方案2】:

您可以将 celery 设置为守护程序服务,请按照以下步骤操作

第 1 步:celery 初始化脚本

将这个script文件复制到/etc/init.d/celeryd目录下(celeryd就是服务名,你可以随便命名)

上面的源代码中给出了设置说明。

第 2 步:设置 celery 配置

现在在这个文件/etc/default/celeryd中配置celery配置,这个example会给你一个通用的配置文件。

现在您可以使用以下命令将 celery 作为服务运行

sudo service celeryd start

sudo service celeryd stop

或任何其他服务命令。

【讨论】:

  • 感谢您的回复。
  • 这真的很有帮助,但无论如何,你有没有尝试过使用 Ubuntu Upstart 来制作应用服务。我使用 Django,我希望它作为服务只需键入命令行:“sudo start djservice”,-> 然后 Django 启动,无需键入“python manage.py runserver”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-27
  • 2020-06-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多