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配置文 ...
随机推荐
- MDI多文档窗体--在一个窗体中装载多个窗体
创建MDI窗体之前,首先要明确两个概念:父窗体和子窗体,在MDI窗体中,起到容器作用的窗体被称为“父窗体”, 可放在父窗体中的其他窗体被称为子窗体,也成为MDI子窗体.当应用程序启动时,首先会显示父窗 ...
- Entity Framework(四):使用DbModelBuilder API创建表结构
DbContext类有一个OnModelCreating方法,它用于流利地配置领域类到数据库模式的映射.下面我们以fluent API的方式来定义映射.首先,先将Product类注释掉,重新编写该类, ...
- 在 Java 8 中获取日期
前言 前面一篇文章写了<SimpleDateFormat 如何安全的使用?>, 里面介绍了 SimpleDateFormat 如何处理日期/时间,以及如何保证线程安全,及其介绍了在 Jav ...
- 在后台运行Python脚本服务
在服务器,程序都是后台运行的,当写的python脚本时,需要: 你要是想python robot.py & 是不行的,一旦用户登出,脚本就自动退出了.用at, cron也可以实现不过我发现 ...
- This表示当前对象
This表示当前对象. Public void printNum(){ Int number=40: System.out.println(this.number); } 此时打印的是实例变量,而非局 ...
- 【BZOJ】1652: [Usaco2006 Feb]Treats for the Cows(dp)
http://www.lydsy.com/JudgeOnline/problem.php?id=1652 dp.. 我们按间隔的时间分状态k,分别为1-n天 那么每对间隔为k的i和j.而我们假设i或者 ...
- php和js实现文件拖拽上传
Dropzone.js实现文件拖拽上传 http://www.sucaihuo.com/php/1399.html demo http://www.sucaihuo.com/jquery/13/139 ...
- VC++ GetSafeHwnd()和GetSafeHandle()
GetSafeHwnd()和GetSafeHandle()的主要区别: 使用者不同: (1)窗体使用:GetSafeHwnd()用于获取窗体的安全句柄(即HWND),有了HWND我们就可以方便的对HW ...
- layui多选框
多选下拉框:http://sun.faysunshine.com/layui/formSelects-v4/example/example_v4.html 1.下载formSelects-v4.1 2 ...
- 第十五篇:使用 FP-growth 算法高效挖掘海量数据中的频繁项集
前言 对于如何发现一个数据集中的频繁项集,前文讲解的经典 Apriori 算法能够做到. 然而,对于每个潜在的频繁项,它都要检索一遍数据集,这是比较低效的.在实际的大数据应用中,这么做就更不好了. 本 ...