virtualvenv+django+uWSGI+nginx 部署
1. virtualvenv
virtualvenv install
首先要安装python3
因为系统已经装了 python3.6 所以接下来直接装虚拟环境 virtualvenv
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
注意区别: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 文件
- 浏览器访问
http://serverIP:8080
4. nginx
不在虚拟环境中安装
由于服务器上已经安装了 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 部署 踩坑记录
virtualvenv+django+uWSGI+nginx 部署的更多相关文章
- virtualvenv+django+uWSGI+nginx 部署 踩坑记录
原创博文 转载请注明出处! uwsgi: unrecognized option '--http:8089' uwsgi: unrecognized option '--http' uwsgi trk ...
- django+uwsgi+nginx部署(非常详细)
django+uwsgi+nginx部署 1.介绍: 在网上看了很多教程,但自己部署了很久都没有成功,这篇博文记录自己所踩过得坑. 2.环境: Ubuntu 16.04.1 LTS (GNU/Linu ...
- Linux 集群概念 , wsgi , Nginx负载均衡实验 , 部署CRM(Django+uwsgi+nginx), 部署学城项目(vue+uwsgi+nginx)
Linux 集群概念 , wsgi , Nginx负载均衡实验 , 部署CRM(Django+uwsgi+nginx), 部署学城项目(vue+uwsgi+nginx) 一丶集群和Nginx反向代理 ...
- Django+uWSGI+Nginx 部署网站
Django 1.11设置 保证Django在本地调试没有问题: 当然这是前提^_^ 收集静态文件至指定文件夹 Django静态文件设置具体参考:https://docs.djangoproject. ...
- Ubuntu下Django+uWSGI+nginx部署
本文采用uwsgi+nginx来部署django 这种方式是将nginx作为服务端前端,将接受web所有的请求,统一管理,Nginx把所有的静态请求自己处理,然后把所有非静态请求通过uwsgi传递给D ...
- Django+Uwsgi+Nginx部署
一 uwsgi介绍 uWSGI是一个Web服务器,它实现了WSGI协议,uwsgi, http等协议. Nginx中HttpUwsgiMoule的作用是与uWSGI服务器进行交换 1 WSGI是一种W ...
- django+uwsgi+nginx 部署生产环境
一.Uwsgi安装 python3 -m pip install uwsgi cp /usr/local/python3/bin/uwsgi /usr/bin/ 测试 在django项目主目录下cre ...
- Ubuntu+Django+uWSGI+Nginx部署Django项目
安装uWSGI,pip依据自己要使用的python版本自行选择,python2.x版本使用pip进行安装,python3.x版本使用pip3进行安装 pip install uwsgi 配置uWSGI ...
- Django Uwsgi Nginx 部署
1.django的settings配置 参照博客 https://www.cnblogs.com/xiaonq/p/8932266.html # 1.修改配置 # 正式上线关闭调试模式, 不会暴露服务 ...
随机推荐
- IT兄弟连 JavaWeb教程 监听器2
4 监听HttpSession域对象的创建和销毁 HttpSessionListener接口用于监听HttpSession对象的创建和销毁. 创建一个Session时,激发sessionCreate ...
- K-th Number
区间第K大 题目链接 #include <stdio.h> #include <algorithm> #include <vector> #include < ...
- Java中对象拷贝的两种方式
引用的拷贝 //引用拷贝 private static void copyReferenceObject(){ Person p = new Person(23, "zhang") ...
- Codeforces 1159E(拓扑序、思路)
要点 序列上各位置之间的关系常用连边的手段转化为图的问题. 经过一番举例探索不难发现当存在两条有向边交叉时是非法的. -1是模糊的,也就是填多少都可以,那为了尽量避免交叉我们贪心地让它后面那个连它就行 ...
- 前端JavaScript(2) --常用内置对象,函数,伪数组 arguments,关于DOM的事件操作,DOM介绍
昨日内容回顾 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 ...
- JS——变量声明、变量类型、命名规范
变量声明: JavaScript是一种弱类型语言,它的变量类型由它的值来决定,var是变量声明. 变量类型: 基本类型:number.string.boolean(布尔类型:var a=true/fa ...
- mysql 无法启动 unkown command
1. https://serverfault.com/questions/490656/mysql-not-starting-error-usr-sbin-mysqld-unknown-option- ...
- CQRS之旅——旅程4(扩展和增强订单和注册限界上下文)
旅程4:扩展和增强订单和注册限界上下文 进一步探索订单和注册的有界上下文. "我明白,如果一个人想看些新鲜的东西,旅行并不是没有意义的."儒勒·凡尔纳,环游世界80天 对限界上下文 ...
- 【0 基础学Dojo】第【1】篇 HelloWord
打开dojo 官网首页 http://dojotoolkit.org/,我们看到 点击get dojo 你将得到下载Dojo 的不同方式 2,点击下面方式下载, 解压后 新建myTest.html, ...
- Ionic开发-搭建开发环境
1安装node.js 2安装ionic & cordova: 命令行输入:npm install –g cordova ionic 注:-g表示全局安装,也可以进入指定的目录安装,但这里推荐全 ...