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配置文 ...
随机推荐
- Bootstrap学习笔记(3)--菜鸟网CDN
Bootstrap CDN 推荐 本站实例采用的是自建的静态资源库上的Bootstrap资源. <!-- 新 Bootstrap 核心 CSS 文件 --> <link href=& ...
- 一款基于jQuery的带Tooltip表单验证的注册表单
今天给大家分享一款基于jQuery的注册表单,这款注册表单的特点是确认提交注册信息时,表单会自动验证所填写的信息,如果信息填写有误,即会在相应的字段内以Tooltip提示框的形式显示错误信息.这款jQ ...
- Qt中将QString转换为char *或者相反
1.将QString转换为std::string,可以通过QString的成员函数toStdString() QString Qstr="123";std::string str= ...
- Okra框架(三) 搭建HTTP服务器
Okra通过封装成熟高效的框架以简化应用程序服务器构建的过程.上一篇介绍了使用Okra快速搭建Socket服务器. 本篇承接上一篇,介绍快速搭建简单高性能的Http服务器. 这里需要说明一下Okra框 ...
- 数据库事务隔离级别<转>
数据库事务的隔离级别有4个,由低到高依次为Read uncommitted.Read committed.Repeatable read.Serializable,这四个级别可以逐个解决脏读.不可重复 ...
- Linux上的free命令简介
每次使用free时都比较迷惑,对于上面的内容一直都不是很清楚,今天仔细查了以下,和大家一起分享以下: 先看一下free的运行结果: free打印出的内存信息主要分为两种,一种是安装的内存,一种是用磁盘 ...
- 关于spring中注解和xml混合使用
可以混合用.文档有说明: Spring can accommodate both styles and even mix them together. 混合用的话,有个先后顺序,xml配置会覆盖ann ...
- Logstash zabbix 插件
zabbix 监控 logstash 安装社区扩展包wget http://download.elasticsearch.org/logstash/logstash/logstash-contrib- ...
- 简易博客开发(8)----django1.9 博客部署到pythonanywhere上
准备工作 首先需要注册一下,pythonanywhere的免费账户有一定的限制,只能创建一个web app,不能绑定独立域名,不能通过ssh连接,不过只是搭一个project也是够用了. 注册成功之后 ...
- com.mysql.jdbc.MysqlDataTruncation: Data trunca...
连接的是mysql数据库,插入数据时,控制台报: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for colu ...