CentOS运行Django实录
记录概要
记录了 CentOS 中快速从开发环境通过git传递 Django 项目文件,并进行虚拟环境运行的步骤和方法,主要参考了Django 服务部署。
0x00 虚拟环境配置
// 安装虚拟环境
pip3 install virtualenv
// 创建虚拟环境
virtualenv venv #创建虚拟环境
source venv/bin/activate # 进入虚拟环境
deactivate #退出虚拟环境
0x01 安装项目依赖包
# 在开发环境生成requirements.txt文件
pip freeze >requirements.txt
# 由于默认的pip freeze命令生成的依赖包是你环境下所有的包,不是跟你项目相关的包也会生成,可能会有很多,所以这里我使用第三方包 pipreqs
pipreqs ./
# pipreqs 会去遍历你项目目录,尽可能的识别你的依赖包,但可能会遗漏,需要你检查下
# 在服务器上安装依赖文件
pip install -r requirements.txt
0x02 获取代码
# 克隆项目代码
git clone XXX项目地址
# 拉取项目代码
git pull
0x03 Gunicorn部署
安装
pip install gunicorn
配置
INSTALLED_APPS = [
...
'gunicorn',
...
]
运行(-w 4是启动4个进程,可以支持更多的并发。)
gunicorn api.wsgi:application -b 0.0.0.0:8081 -w 4 -k gthread
配置文件(gunicorn.conf.py)
import logging
import logging.handlers
from logging.handlers import WatchedFileHandler
import os
import multiprocessing
bind = "0.0.0.0:8091" #绑定的ip与端口
backlog = 512 #监听队列数量,64-2048
#chdir = '/home/test/server/bin' #gunicorn要切换到的目的工作目录
worker_class = 'sync' #使用gevent模式,还可以使用sync 模式,默认的是sync模式
workers = 4 # multiprocessing.cpu_count() #进程数
threads = 16 #multiprocessing.cpu_count()*4 #指定每个进程开启的线程数
loglevel = 'info' #日志级别,这个日志级别指的是错误日志的级别,而访问日志的级别无法设置
access_log_format = '%(t)s %(p)s %(h)s "%(r)s" %(s)s %(L)s %(b)s %(f)s" "%(a)s"'
# accesslog = "/home/log/gunicorn_access.log" #访问日志文件
#errorlog = "/home/log/gunicorn_error.log" #错误日志文件
accesslog = "-" #访问日志文件,"-" 表示标准输出
errorlog = "-" #错误日志文件,"-" 表示标准输出
proc_name = 'fof_api' #进程名
其中access_log_format选项的变量含义如下:
h remote address
l '-'
u currently '-', may be user name in future releases
t date of the request
r status line (e.g. ``GET / HTTP/1.1``)
s status
b response length or '-'
f referer
a user agent
T request time in seconds
D request time in microseconds
L request time in decimal seconds
p process ID
以gunicorn.conf.py配置文件启动gunicorn
gunicorn -c gunicorn.conf.py api.wsgi:application
0xPS 宝塔面板部署项目
- 导出项目包
python3 -m pip freeze > requirements.txt
- 管理器中添加项目
在python项目管理器中配置,添加项目
勾选“是否安装模块依赖”,会自动帮我们读取项目下的requirements.txt,然后安装响应的模块,所以这里的时间会比较长 - 映射域名
给项目绑定一个预留的域名 - 配置站点
配置静态文件
location /static/
{
alias /www/wwwroot/ProjectName/static/;
}
- 重启项目
同时还需要重启一下Nginx,这个相信大家都会~