Skip to main content
 首页 » 编程设计

python之如何自动启动 mod_wsgi-express 为 django 制作的 apachectl 脚本

2024年10月25日28jyk

我现在正在开发一个基于 Django-1.8.2 和 Ubuntu-15.04 的 Python-3.4.3 提供的虚拟环境的 Web 应用程序。

我的应用程序。现在正在开发服务器上工作,并且已经使用 mod_wsgi-4.4.11(安装了 pip)和 Ubuntu 的 Apache 成功部署。即收集静态文件,修改db.sqlite3的文件权限后,我做了...

sudo ../bin/python manage.py runmodwsgi --setup-only --port=80 --user www-data --group www-data --server-root=/etc/mod_wsgi-express-80 
sudo /etc/mod_wsgi-express-80/apachectl start 

有一个工作的服务器。

我希望守护进程在启动时自动启动,但我没有编写 init.d 脚本或配置文件的运气。 15.04 的 systemd 可能需要一种全新的方式。欢迎任何建议。

请您参考如下方法:

看起来问题是关于 Ubuntu systemd 启动器而不是 django + mod_wsgi ...

在与 init.d 脚本斗争之后,我已经转移到 systemd 服务文件:

/lib/systemd/system/apache_mod_wsgi.service

[Unit] 
Description=apache2 with mod_wsgi 
 
[Service] 
Type=oneshot 
RemainAfterExit=yes 
ExecStart=/etc/mod_wsgi-express-80/apachectl start 
ExecStop=/etc/mod_wsgi-express-80/apachectl stop 
 
[Install] 
WantedBy=multi-user.target 

保存此文件后,我终止了 native apache2 服务并启用了新服务...

fukuda@ubuntu:~% sudo update-rc.d apache2 remove 
fukuda@ubuntu:~% sudo systemctl enable apache_mod_wsgi.service 
fukuda@ubuntu:~% sudo reboot 

守护进程已成功启动,django 应用程序似乎正常工作(即,以与“手动启动”版本和开发服务器完全相同的方式响应。

唯一的问题是 dmesg 不会报告服务的启动。