django开发之部署


类别:web开发   

发布时间:2019/02/10 17:32:44   更新时间:2020/07/31 19:50:36


本文讲述的环境:ubuntu、python3。

这里谈谈django部署的要点。

ngnix安装及常用命令

安装

apt-get install nginx

常用命令:

*启动

service nginx start

*停止

nginx -s stop

*重载配置文件

nginx -s reload

*重启

service nginx restart

*编译器版本和配置参数

nginx –v

nginx –V

*查看

whereis nginx

ps –aux | grep nginx

netstat –apn | grep 80

nginx –h

*配置

nginx的配置文件的读写顺序问题:nginx的配置文件是/etc/nginx/nginx.conf,这个配置文件中又引用了/etc/nginx/conf.d/和/etc/nginx/sites-enabled/这两个文件夹的配置文件,通过include来实现。所以,无论是直接在nginx.conf或者在conf.d、sites-enabled中配置都是可以的。

*检验是否配置文件合法

nginx –t

gunicorn安装及常用命令

安装:

pip install gunicorn

官网:

http://docs.gunicorn.org/en/stable/

常用命令:

*查看:

ps aux | grep gunicorn

*停止:

pkill gunicorn

*常用启动参数:

--reload 自动加载python文件变更

--workers 3 进程数,一般是cpu数*2+1 ,

cpu数这样看:python -c 'import multiprocessing;print(multiprocessing.cpu_count())'
--threads 1 单个进程开的线程数,这个设置只对进程工作方式为Gthread的产生影响。

--worker-class 异步选择,可以使用eventlet、gevent、tornado、gthread、giohttp

--bind 绑定ip和端口

--access-logfile 接入日志
--error-logfile 错误日志

--log-level debug 日志等级

--chdir 启动文件目录

gunicorn和uwsgi

我建议用gunicorn,因为uwsgi太复杂,应付那个复杂的精力可以做很多事情。

使用python的初衷就是简单高效,太复杂的东西,有点背离这个初衷了。

gevent和eventlet

gevent相对较为完整。在django项目中建议用gevent。

在flask用socketio的项目中,才建议用eventlet。

crontab(数据库定时备份)

编辑配置

vi /etc/crontab

在最后一行添加内容。

crontab文件的基本格式:

minute    hour    day    month    weekday    username     command

#表示每一分钟执行备份

*/1 * * * * root /home/xxx.sh

#表示每天凌晨23点00执行备份

0 23 * * * root /home/xxx.sh

注意xxx.sh的执行权限。

查看状态

cd etc

在etc目录下,执行 crontab -e  

在插入模式下输入 0 1 * * * root /home/xxx.sh

这样才能使用如下命令查看状态。

crontab -l

supervisor(进程监控)

这个东东到现在为止只支持python2,不建议使用。进程出错拉起可以自己写个脚本简单实现。

celery(横向扩展)

业务量大了可以考虑用。


本文网址:https://www.pyfield.com/blog/?id=9