Centos环境下Django+gunicorn+Nginx+python3.6
准备工作:
centos 下运行lsb_release -a 显示如下版本信息
LSB Version: :core-4.1-amd64:core-4.1-noarch
Distributor ID: CentOS
Description: CentOS Linux release 7.4.1708 (Core)
Release: 7.4.1708
Codename: Core
下载 Gunicorn
首先确保gunicorn安装的是python3.6版本:
pip3 –version
显示如下:
- **pip 9.0.1 from /usr/local/python3.6/lib/python3.6/site-packages (python 3.6)
pip3 install gunicorn
显示如下
Collecting gunicorn
Downloading http://mirrors.aliyun.com/pypi/packages/55/cb/09fe80bddf30be86abfc06ccb1154f97d6c64bb87111de066a5fc9ccb937/gunicorn-19.8.1-py2.py3-none-any.whl (112kB)
100% |████████████████████████████████| 122kB 10.0MB/s
Installing collected packages: gunicorn
Successfully installed gunicorn-19.8.1
写个用例测试一下:
def app(environ, start_response):
data = b"Hello, World!\n"
start_response("200 OK", [
("Content-Type", "text/plain"),
("Content-Length", str(len(data)))
])
return iter([data])
gunicorn -w 4 myapp:app
显示如下
[2018-06-20 15:36:14 +0800] [19944] [INFO] Starting gunicorn 19.8.1
[2018-06-20 15:36:14 +0800] [19944] [INFO] Listening at: http://127.0.0.1:8000 (19944)
[2018-06-20 15:36:14 +0800] [19944] [INFO] Using worker: sync
[2018-06-20 15:36:14 +0800] [19963] [INFO] Booting worker with pid: 19963
[2018-06-20 15:36:15 +0800] [19964] [INFO] Booting worker with pid: 19964
[2018-06-20 15:36:15 +0800] [19965] [INFO] Booting worker with pid: 19965
[2018-06-20 15:36:15 +0800] [19967] [INFO] Booting worker with pid: 19967
没有问题继续下一步
gunicorn测试django1.8
首先DEBUG改成False,只有关闭了调试模式,后面才能让nginx来寻找静态文件。
gunicorn -w 3 -b 127.0.0.1:8080 project.wsgi:application
说明一下:project改成项目名就好了, application 不需要改
显示如下:
[2018-06-20 15:42:29 +0800] [27418] [INFO] Starting gunicorn 19.8.1
[2018-06-20 15:42:29 +0800] [27418] [INFO] Listening at: http://127.0.0.1:8080 (27418)
[2018-06-20 15:42:29 +0800] [27418] [INFO] Using worker: sync
[2018-06-20 15:42:29 +0800] [27421] [INFO] Booting worker with pid: 27421
[2018-06-20 15:42:29 +0800] [27428] [INFO] Booting worker with pid: 27428
[2018-06-20 15:42:29 +0800] [27438] [INFO] Booting worker with pid: 27438
运行` curl http://localhost:8080/` 预期显示
当然了, 这里终端关闭进程就终止了,使用nohup commond & 命令解决即可
nohup gunicorn -w 3 -b 127.0.0.1:8080 project.wsgi:application &
接下来最关键的一步:配置Nginx
gunicorn已经运行起来了,没必要关掉
只需要配置location / 中的内容就ok了,
#侦听80端口
listen 80;
#定义使用 www.nginx.cn访问
server_name www.nginx.cn;
#定义服务器的默认网站根目录位置
root /root/projects/project/;
#设定本虚拟主机的访问日志
access_log logs/nginx.access.log main;
#默认请求
location / {
#定义首页索引文件的名称
#index index.php index.html index.htm;
proxy_pass http://127.0.0.1:8080; #最关键的一条:nginx将来自80端口的请求代理到8080端口
index index.php index.html index.htm;
}
# 定义错误提示页面
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
location / 顾名思义,定位,就是当访问 / 的时候,nginx会将请求转给本地的8080端口,而后面的设置都是一些基本的配置,可以直接用
接下来nginx -t 测试下配置文件是否有语法错误:
/usr/local/nginx/sbin/nginx -t
由于我的nginx没有配置软连接
这是唯一启动nginx的方法
显示如下
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
“`
接下来启动nginx ,外网访问80端口,就是你用curl 访问8080端口一样的效果了