virtualvenv+django+uWSGI+nginx 部署


1. virtualvenv

virtualvenv installpython

首先要安装python3nginx

由于系统已经装了 python3.6 因此接下来直接装虚拟环境 virtualvenvweb

mkdir yourwebproject folder
cd yourwebproject
/usr/python3.6/bin/python3.6 -m venv venv   #创建一个独立于系统的虚拟环境 不会跟系统环境混淆
source venv/bin/activate                    #运行环境
deactivate                                  #退出环境

2. django

  • 运行虚拟环境,在环境中安装django
pip install django
  • 新建项目
1). django-admin startproject proName        
   2). cd proName
   3). python manage.py runserver   # run
  • 新建app
    不用也能够进行接下来的操做

3. uWSGI

官网django

==注意区别:WSGI/uwsgi/uWSGI==

  • WSGI 是一种通讯协议。
  • uwsgi 是一种线路协议,在此经常使用于在 uWSGI 服务器与其余网络服务器的数据通讯。
  • uWSGI 是实现了 uwsgi 和 WSGI 两种协议的Web服务器。

安装

在虚拟环境中浏览器

pip install uwsgi

检测 uwsgi 是否正常工做

  • 在与venv同目录下写一个模拟站点文件 test.py
# test.py
def application(env, start_response):
    start_response('200 OK', [('Content-Type','text/html')])
    return [b"Hello World"]     # python3
  • 运行
uwsgi --http :8080 --wsgi-file test.py  # 假设访问端口号8080
  • 浏览器访问
http://serverIP:8080

若显示站点文件中的输出,说明uwsgi生效服务器

路径 web client <-> uwsgi <-> python网络

部署 django

  • 首先运行django确保django能正常工做
python manage.py runserver 0.0.0.0:8000
  • 在manage.py同级目录下运行
uwsgi --http :8080 --module djangoProName.wsgi

--module djangoProName.wsgi 表明 djangoProName 目录下的 wsgi.py 文件app

  • 浏览器访问
http://serverIP:8080

4. nginx

官网socket

不在虚拟环境中安装
因为服务器上已经安装了 nginx 因此安装步骤省略,只须要在 nginx.conf 中添加配置便可。

  • 配置 nginx

nginx.conf 结构:

user www-data;
worker_processes auto;
pid /run/nginx.pid;

events {
    worker_connections 768;
}

http {
   # server{ ... }
}

添加 server

server {
        listen       98 default_server;   # 访问时输入的端口 本地和外部浏览器后面都要加这个端口号
        server_name  10.41.95.85;          # 本身网站的域名

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;
        
        location / {                      # location : 文件系统配置 去应答一些要服务器资源的请求
            include uwsgi_params;
            uwsgi_pass 127.0.0.1:9898;    # 与ini文件对接端口 与上面的 93 端口没有关系
        }
    }

配置完了以后记得重启nginx

  • 配置 uwsgi

将配置项所有写入ini文件
在venv同目录下本身新建uwsgi的ini文件

[uwsgi]
socket = 127.0.0.1:9898                               ; 与 nginx 对接 IP
; django pro dir
chdir = /root/Odin/TrackManagement/TrackManagement/   ; django project dir
wsgi-file = TrackManagement/wsgi.py                   ; 表明 TrackManagement 目录下的 wsgi.py 文件
; module = TrackManagement.wsgi                       ; 有上面的wsgi配置这个就不用写了

processes = 2                                         ; 进程
threads = 1                                           ; 线程
stats = 127.0.0.1:9696                                ; 经过该端口能够监控 uwsgi 的负载状况 内部配置访问ip 与socket区别开
  • 浏览器访问
http://10.41.95.85:98

若显示django画面 则 uwsgi+nginx生效

路径 web client <-> nginx <-> uwsgi <-> django





过程当中踩的坑在另外一篇博文中 -> virtualvenv+django+uWSGI+nginx 部署 踩坑记录

相关文章
相关标签/搜索