记录下Python部署的坑点(1)

题记

上回说到,django作为我们的后台框架,承载着整体的业务功能。通过其完善 & 强大的后台支持,我们可以在很短的时间内得到想要的一系列,不过作为一个新手,遇到坑也是难免的,本文记录萌新遇到的常见问题

坑点一 数据库指令问题

第一个坑点:通过管理工具创建的数据库指令,对于PK键不会生效,也就是我们插入的自增主键是不会有这个属性的,需要到mysql后台修改。

坑点二 Debug开关问题

部署到正式环境一定要关闭DEBUG,一定要关闭,虽然官方好心的提示了会造成内存泄露问题,可是新手尝尝会遇到这个问题而莫名其妙的被kill掉celery的worker。

昨天跑了一个离线任务发现celery在django环境下,跑时间较长的任务会出现内存不足被系统kill掉的问题,这个点一定要记牢。

django_keng.png

坑点三 静态文件支持:

debug环境的话,django会自动的帮我们部署静态文件,想怎么玩就怎么玩,可是到了正式环境,我们需要在HttpService上配置好静态的规则,同时在Setting.py中指定静态目录:

Setting.py

1
2
3
4
5
6
7
8
9
10
11
STATIC_URL = '/static/'

MEDIA_IMAGE_DIR_PREFIX = "img"

STATICFILES_DIRS = ( os.path.join('static'), )

MEDIA_OUTPUT = os.path.join('static',"output")

LX_OUTPUT = os.path.join('static',"lx")

ALLOW_EXT = [".mp4",".flv",".avi"]

Nginx Config

1
2
3
4

location /static/ {
alias /home/www/wwwroot/ffdjango/static/;
}

PS:记得执行 collectstatic 来收集下静态文件!!

坑点四 Celery 问题:

使用 supervisord 部署Celery服务的时候,一定记得先kill掉之前的进程,否则你会看到一片密密麻麻的CeleryWorker

放上我的启动脚本:

celery.sh

1
2
3
4
#!/bin/bash
sudo pkill -9 -f 'celery'
source $1/bin/activate
celery -A ffdjango worker -l info --concurrency=2

以上就是趟过的坑,先记录下,供后期查阅