ubuntu配置Python-Django Nginx+uwsgi 安装配置
安装Nginx
sudo apt-get install nginx
ubantu安装完Nginx后,文件结构大致为:
所有的配置文件都在 /etc/nginx下;
启动程序文件在 /usr/sbin/nginx下;
日志文件在 /var/log/nginx/下,分别是access.log和error.log;
并且在 /etc/init.d下创建了启动脚本nginx。
sudo /etc/init.d/nginx start # 启动
sudo /etc/init.d/nginx stop # 停止
sudo /etc/init.d/nginx restart # 重启
使用浏览器访问 localhost 出现界面 (局域网通过地址输入ip地址,如:http://192.168.1.90/ )

sudo apt-get install python3-dev
sudo pip3 install uwsgi
注意:
如果未安装python3 ,
使用:sudo apt-get install python3.6
如果pip3 提示:
wuchao@ubuntu:~$ pip3 install uwsig
Command 'pip3' not found, but can be installed with:
sudo apt install python3-pip
解决方案使用: sudo apt install python3-pip
至于为什么要使用uwsgi,可以参见这边博客:快速部署Python应用:Nginx+uWSGI配置详解(1)。
这样大体的流程是:nginx作为服务器最前端,负责接收client的所有请求,统一管理。静态请求由Nginx自己处理。非静态请求通过uwsgi传递给Django,由Django来进行处理,从而完成一次WEB请求。
通信原理是:
the web client <-> the web server(nginx) <-> the socket <-> uwsgi <-> Django
测试uwsgi
在Django项目下新建test.py文件,
# test.py
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
#return ["Hello World"] # python2
return [b"Hello World"] # python3
然后执行shell命令:
uwsgi --http-socket :8001 --plugin python --wsgi-file test.py
注意:如果uwsgi提示无命令 ,使用pip3 uninstall uwsgi 卸载 ,再使用 pip3 install uwsgi 重新安装
加上--plugin python3是告诉uWSGI在使用python插件,不然很有可能会出现类似这样的错误:
uwsgi: unrecognized option '--wsgi-file'
getopt_long() error
执行成功在浏览器中打开:http://localhost:8001显示Hello World说明uwsgi正常运行。
测试Django
首先得保证Django项目没有问题
sudo apt install python-django #安装django
django-admin startproject blog #创建blog项目
cd blog #进入项目
python3 manage.py runserver 0.0.0.0:8001 #运行django项目
浏览器访问:localhost:8001

然后链接Django和uwsgi,实现简单的web服务器,到Django项目目录下执行shell:
uwsgi --httlocalhost:8001 --plugin python3 --module blog.wsgi
blog为你的项目名。访问http://localhost:8001,项目正常。注意这时项目的静态文件是不会被加载的,需要用nginx做静态文件代理。
配置uwsgi
uwsgi支持通过配置文件的方式启动,可以接受更多的参数,高度可定制。我们在Django项目目录下新建uwsgi.ini
在django项目project目录下(manage.py下)创建配置文件分两种 ini
# myweb_uwsgi.ini file
[uwsgi]
# 指定IP端口
socket = :8081
# 项目目录
chdir = /home/wuchao/blog
# 指定项目的 wsgi 文件
module = blog.wsgi
# process-related settings
# 启用主进程
master = true
# maximum number of worker processes
processes = 4
# ... with appropriate permissions - may be needed
# chmod-socket = 664
# clear environment on exit
vacuum = true
# pidfile for record run pid
pidfile =pid.uwsgi
# 设置日志目录
daemonize = UWSGI.log
在shell中执行:
sudo uwsgi --ini uwsgi.ini

ps:如果实在不想配置nginx的话,单uwsgi就已经能完成部署了(把socket换成http),你可以把Django中的静态文件放到云平台中如七牛等等,这样你的Web也能被正常访问。
配置nginx
nginx默认会读取/etc/nginx/sites-enabled/default文件中的配置,修改其配置如下:追加内容如下
注意:如果文件为只读 使用chmod修改权限: sudo chmod 777 /etc/nginx/sites-enabled/default
server {
# 你的网站将会监听的端口号,如果监听80端口,部署后访问localhost自动跳转到nginx默认的欢迎界面
listen 8002;
# 绑定的域名
server_name 127.0.0.1; # substitute your machine's IP address or FQDN
charset utf-8;
# 最大上传速率
client_max_body_size 75M; # adjust to taste
# Django media(设置成自己的路径)
location /media {
alias /home/wuchao/blog/media; # 您的Django项目的媒体文件——根据需要进行修改
}
#Django 静态文件路径(设置成自己的路径)
location /static {
alias /home/wuchao/blog/static; # 您的Django项目的静态文件——根据需要进行修改
}
# 最后,将所有非媒体请求发送到Django服务器
location / {
include uwsgi_params; # the uwsgi_params file you installed
uwsgi_pass 127.0.0.1:8001;
}
}
重启nginx
sudo /etc/init.d/nginx restart
注意:重启失败则配置文件修改错误
修改项目中setting.py 配置文件28行:
ALLOWED_HOSTS = ['*']
通过本地ip地址:8002访问。如:localhost:8002 或者ip:8002
ubuntu配置Python-Django Nginx+uwsgi 安装配置的更多相关文章
- python Django Nginx+ uWSGI 安装配置
环境: CentOS7.python-3.5.3.Nignx 1.10.3 .Django 1.10.6.uWSGI 2.0.14 django项目目录:/var/webRoot/p1 项目结构: 基 ...
- 吴裕雄--天生自然Django框架开发笔记:Django Nginx+uwsgi 安装配置
Django Nginx+uwsgi 安装配置 使用 python manage.py runserver 来运行服务器.这只适用测试环境中使用. 正式发布的服务,需要一个可以稳定而持续的服务器,比如 ...
- Django Nginx+uwsgi 安装配置
使用 python manage.py runserver 来运行服务器.这只适用测试环境中使用. 正式发布的服务,我们需要一个可以稳定而持续的服务器,比如apache, Nginx, lighttp ...
- linux下Django Nginx+uwsgi 安装配置
原文链接 在前面的章节中我们使用 python manage.py runserver 来运行服务器.这只适用测试环境中使用. 正式发布的服务,我们需要一个可以稳定而持续的服务器,比如apache, ...
- Install Python+Django+Nginx+UWSGI
一.软件环境: CentOS6.6_64bit 需要用到的软件: [root@django tools]# ll 总用量 33336 -rw-r--r-- 1 root root 7497785 3月 ...
- CentOS 6.5下安装Python+Django+Nginx+uWSGI
1.安装Python31.1先安装zlib库及其他三方库安装uWSGI时需要使用zlib,否则执行python uwsgiconfig.py --build时会报ImportError,就是因为在安装 ...
- Nginx+uwsgi安装配置
一.安装基础开发包 yum groupinstall "Development tools" yum install zlib-devel bzip2-devel pcre-dev ...
- webpy+nginx+uwsgi安装配置
转:(1)安装Nginx1.1 下载nginx-1.0.5.tar.gz并解压1.2 ./configure (也可以增加--prefix= path指定安装路径)此时有可能会提示缺少pcre支持,如 ...
- Ubuntu系统搭建django+nginx+uwsgi
1. 在开发机上的准备工作 2. 在服务器上的准备工作 3.安装uwsgi 4.编写uwsgi配置文件,使用配置文件启动uwsgi 5. 安装nginx 6. 收集静态文件 7. 编写nginx配置文 ...
随机推荐
- SNP密度分布模式
1. window=100k,step=2k 统计每个window的snp密度,然后用mixtools的normalmixEM(两个组分的混合模型)统计snp的分布模式. R command: lib ...
- C语言 · 约数个数
算法提高 约数个数 时间限制:1.0s 内存限制:512.0MB 输入一个正整数N,输出其约数的个数. 样例输入 12 样例输出 6 样例说明 12的约数包括:1,2,3,4,6,1 ...
- Streams:深入剖析Redis5.0全新数据结构
Streams:深入剖析Redis5.0全新数据结构 原创: 阿飞的博客 Redis 5.0 全新的数据类型:streams,官方把它定义为:以更抽象的方式建模日志的数据结构.Redis的st ...
- js入门介绍
为什么起名叫JavaScript?原因是当时Java语言非常红火,所以网景公司希望借Java的名气来推广,但事实上JavaScript除了语法上有点像Java,其他部分基本上没啥关系. 为了让Java ...
- 一个美国人对"智能制造"的思考!
世界上制造业最强的国家仍然是美国!如今,国内工业4.0概念讨论日益喧嚣,中德合作如火如荼,但我们不能否认这个事实. “ 当下,美国似乎失去了世界第一制造大国的称号,而中国的企业也正面临产值下滑.利润下 ...
- C++ 匿名对象初始化新对象
//c++中匿名对象初始化新对象 #include<iostream> using namespace std; class Point{ public: Point(){ cout &l ...
- ]flexslider 中文文档 使用教程 参数手册
[原创]flexslider 中文文档 使用教程 参数手册 要改前人用的flexslider功能,但苦于找不到详细的文档教程,折磨了好久……(所以我才说不爱乱用插件) 为了福利下之后也苦于这个问题 ...
- 列表框清屏/CListBox清空
CListBox自带方法: MyListBox->ResetContent(); CListBox用法: 关联一个变量m_List,m_List.AddString("test&quo ...
- Java Tomcat 注册为Windows系统服务
注册方法: 1. 在DOS命令行模式下,cd到tomcat的bin目录下 cd tomcatpath 根目录加:后回车 进入到tomcat安装目录,cd bin,进入tomcat启动目录 2.在tom ...
- 后Hadoop时代的大数据架构
提到大数据分析平台,不得不说Hadoop系统,Hadoop到现在也超过10年的历史了,很多东西发生了变化,版本也从0.x进化到目前的2.6版本.我把2012年后定义成后Hadoop平台时代,这不是说不 ...