django & celery 一些笔记
Posted on 日 09 4月 2017 in python
之前有部署过django,和celery,但是中间有一次服务器重启之后,项目没有运行,于是系统地学习了一下如果在服务器启动时就启动django项目。
项目部署的方案是 nginx + uwsgi + django,还用到了celery, broker用的是rabbitmq。rabbitmq在安装时默认已经是开机启动了。
Upstart
uwsgi的upstar脚本在官网的文档中有写到,下面是我项目里面的:
description "uWSGI instance to serve myapp"
start on runlevel [2345]
stop on runlevel [!2345]
#setuid user
#setgid www-data
respawn
pre-start script
if [ ! -d /var/run/uwsgi ]; then
mkdir -p /var/run/uwsgi
chown user:www-data /var/run/uwsgi
fi
end script
# product
#exec /usr/local/bin/uwsgi --ini /var/www/project_name/bs.ini
# dev
exec /usr/local/bin/uwsgi --ini /data2/workspace/python/project_name/bs.ini
pre-start部分应该要注意一下,项目的pid文件是放在/var/run/uwsgi下面的。要值得注意的一点是bs.ini文件里面不能有daemonize
配置, 加上的话uwsgi进程会正常退出,Upstart会认为job已经stopp了,并终止进程。详细见参考2
uwsgi ini配置
下面是我的配置:
[uwsgi]
uid = jenkins
gid = www-data
# the base directory (full path)
chdir = /var/www/project_name
# Django s wsgi file
module = project_name.wsgi:application
# process-related settings
# master
master = true
# maximum number of worker processes
processes = 4
socket = /var/run/uwsgi/project_name.sock
# ... with appropriate permissions - may be needed
chmod-socket = 664
# clear environment on exit
vacuum = true
die-on-term = true
;logto = /tmp/ent.log
logfile-chown = jenkins:www-data
logto = /var/log/uwsgi/project_name.log
pidfile = /var/run/uwsgi/project_name.pid
开机自启配置
/etc/init/
下面的配置文件都是开机自启的,比如第一部分的Upstart脚本。命令风格为xxxx.conf
/etc/init.d/
下面的文件是传统的sysinit脚本。celery的配置文件就是放在下面的。
sysv-rc-conf
命令可以在终端下面可视化配置
celery 和 celerybeat 的 daemonize
有一点要注意的是celery
和celerybeat
都要启动,要执行两个命令
sudo service project_celery start
sudo service project_celerybeat start
涉及要的文件是/etc/init.c/project_celery
和/etc/init.d/project_celerybeat
,而且都要有x权限
/etc/defult/project_celery
是这个项目的celery配置文件,不同项目可以有不同的配置文件,不同项目隔离
其中/etc/init.d/project_celery
和/etc/init.d/project_celerybeat
都是官方的,需要改一下,比如user, default log文件的名字,还有defult的配置文件,也就是指向/etc/default/project_celery
参考链接:
https://help.ubuntu.com/community/UbuntuBootupHowto
http://stackoverflow.com/questions/17667239/managing-uwsgi-with-upstart?newreg=6e23686727864cf381a8d612159e23b3
http://blog.csdn.net/gatieme/article/details/45251389