Django项目部署(Nginx+Uwsgi+Django)

WSGI是什么?

wsgi是python语言定义的web服务器(nginx)服务器端程序(Django/Flask/Tornado等)的通用接口规范。

Uwsgi是什么

是WSGI在linux中的一种实现,开发者无需再编写 WSGI server.

预热,使用WSGI

编写一个 WSGI server

#创建一个 webapp.py,假设这个就是你的服务器端程序。
def application(environ,start_response):
    start_response('200 OK',[('Content-Type','text/html')])
    return ["<h1>Hello,World!</h1>".encode('utf8')]
#所有的服务请求都执行这个函数,返回hello world!
#再创建一个 wsgi_server.py
# 导入wsgi
from wsgiref.simple_server import make_server
# 导入刚刚我们写的函数
from webapp import myapplication

#实例化server服务器,监听8080端口
server = make_server('',8080,myapplication)
#启动服务
server.serve_forever()
#启动程序
python wsgi_server.py 
#浏览器访问服务器
127.0.0.1:8080
返回hello world 成功

Nginx+uWSGI+Django

下面正式开始我们Django项目的部署

首先我们要有一个可执行的django项目

django-admin startproject hello

修改一下setting的 ALLOWED_HOSTS = [‘*’]

以下我使用的url为 localhost:8080/hello为例

使用 python manage.py runserver 0.0.0.0:8080 检查一下django项目是否可运行

准备就绪后,开始配置uwsgi 。


Uwsgi

#我使用的是anaconda环境安装uwsgi

conda install -c conda-forge uwsgi

conda install -c conda-forge libiconv
#非anaconda安装uwsgi
pip install uwsgi
#再创建一个uwsgi_conf.ini文件,在django项目内
[uwsgi]
#直接做web服务器使用,http连接,先这样,一会配置nginx的时候http改为socket
http=127.0.0.1:8080
#项目目录,项目名为hello的路径
chdir=/home/sun/lx/uwsgi_http/hello
#项目中wsgi.py文件的目录,相对于项目目录
wsgi-file=hello/wsgi.py
#进程数
processes=4
#线程数
threads=2
#
master=True
#进程号,用于stop程序的,名字可以自己定,响应的命令也会更改
pidfile=uwsgi_conf.pid
#日志文件 名字可以自己定
daemonize=uwsgi_conf.log
#启动
uwsgi --ini uwsgi_conf.ini
#停止
uwsgi --stop uwsgi.pid

试试 能否访问成功

成功后 uwsgi –stop uwsgi.pid停掉程序


我们来配置nginx+uwsgi


首先将上面的操作都停下来,将uwsgi_conf.ini 内的http改为socket连接

socket=127.0.0.1:8080

安装Nginx

下载nginx tar包

wget http://nginx.org/download/nginx-1.13.6.tar.gz

解压

tar -zxvf nginx-1.13.6.tar.gz

cd到解压的目录内

./configure
make
sudo make install

开启和停止nginx服务

cd /usr/local/nginx/
sudo sbin/nginx  #开启
sudo sbin/nginx -s stop  #停止

如果启动失败,杀死进程 再启动

ps  -ef | grep nginx
sudo kill -9  进程号

http://127.0.0.1/ 出现Welcome to nginx! 说明安装成功


修改nginx配置文件

cd conf              #进入 /usr/local/nginx/conf$
sudo vim nginx.conf  #sudo权限打开


    server {
        listen       8000;#80改为8000 访问的时候使用http://ip:8000访问
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {

            include uwsgi_params;
            uwsgi_pass 127.0.0.1:8080; #会转发到uwsgi监听的端口,所以务必和uwsgi保持一致
        }

配置完成后,重启nginx,再启动uwsgi

#/usr/local/nginx$ 目录下
sudo sbin/nginx -s reload
#启动uwsgi  就可以访问项目了
uwsgi --ini uwsgi_conf.ini

猜你喜欢

转载自blog.csdn.net/sunt2018/article/details/82592069