1.nginx

安装

sudo apt-get install nginx

启动,停止和重启

sudo /etc/init.d/nginx start
sudo /etc/init.d/nginx stop
sudo /etc/init.d/nginx restart

或者

sudo service nginx start
sudo service nginx stop
sudo service nginx restart

2. uWSGI安装

用蟒蛇的PIP安装最简单:

sudo apt-get install python-dev #不安装这个,下面的安装可能会失败
sudo pip install uwsgi

3.基于uWSGI和nginx部署Django

1.原理

基于nginx的和uwsgi部署的Django后,从客户端发起请求到服务器响应请求,会经过一下几个环节:

the web client <-> the web server(nginx) <-> the socket <-> uwsgi <-> Django

2.基本测试

测试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

然后,运行uWSGI:

uwsgi --http :8000 --wsgi-file test.py

参数含义:

  • http :8000:使用http协议,8000端口
  • wsgi-file test.py:加载指定文件test.py

打开下面的网址,浏览器上应该显示hello world

http://example.com:8000

如果显示正确,说明下面3个环节是通畅的:

the web client <-> uWSGI <-> Python

测试Django的项目是否正常

首先确保项目本身是正常的:

python manage.py runserver 0.0.0.0:8000

如果没问题,使用uWSGI把项目拉起来:

uwsgi --http :8000 --module mysite.wsgi
  • module mysite.wsgi:加载wsgi模块

如果项目能够正常被拉起,说明以下环节是通的:

the web client <-> uWSGI <-> Django

3.配置nginx的

安装nginx的完成后,如果能正常打开http://hostname,说明下面环节是通畅的:

the web client <-> the web server

增加nginx的配置

  • uwsgi_params文件拷贝产品到项目文件夹数下,uwsgi_params文件在/etc/nginx/目录下,可以也。从这个页面下载
  • 在项目文件夹下创建文件mysite_nginx.conf,填入并修改下面内容:
# mysite_nginx.conf

# the upstream component nginx needs to connect to
upstream django {
# server unix:///path/to/your/mysite/mysite.sock; # for a file socket
server 127.0.0.1:8001; # for a web port socket (we'll use this first)
}
# configuration of the server
server {
# the port your site will be served on
listen 8000;
# the domain name it will serve for
server_name .example.com; # substitute your machine's IP address or FQDN
charset utf-8; # max upload size
client_max_body_size 75M; # adjust to taste # Django media
location /media {
alias /path/to/your/mysite/media; # your Django project's media files - amend as required
} location /static {
alias /path/to/your/mysite/static; # your Django project's static files - amend as required
} # Finally, send all non-media requests to the Django server.
location / {
uwsgi_pass django;
include /path/to/your/mysite/uwsgi_params; # the uwsgi_params file you installed
}
}

这个配置文件告诉nginx的从文件系统中拉起媒体和静态文件作为服务,同时相应的django的请求

/etc/nginx/sites-enabled目录下创建³³本。文件的连接,使nginx的能够使用它:

sudo ln -s ~/path/to/your/mysite/mysite_nginx.conf /etc/nginx/sites-enabled/

部署静态文件

在Django中的设置文件中,添加下面一行内容:

STATIC_ROOT = os.path.join(BASE_DIR, "static/")

然后运行:

python manage.py collectstatic

测试nginx的

首先重启nginx的服务:

sudo /etc/init.d/nginx restart

然后检查media文件是否已经正常拉起:在目录/path/to/your/project/project/media directory下添加文件meida.png,然后访问http://example.com:8000/media/media.png,成功后进行下一步测试。

4.nginx和uWSGI以及test.py

执行下面代码测试能否让nginx的在页面上显示hello, world

uwsgi --socket :8001 --wsgi-file test.py

访问http://example.com:8000,如果显示hello world,则下面环节是否通畅:

the web client <-> the web server <-> the socket <-> uWSGI <-> Python

用UNIX socket取代TCP端口

mysite_nginx.conf做如下修改:

server unix:///path/to/your/mysite/mysite.sock; # for a file socket
# server 127.0.0.1:8001; # for a web port socket (we'll use this first)

重启nginx的,并在此运行uWSGI

uwsgi --socket mysite.sock --wsgi-file test.py

打开http://example.com:8000/,看看是否成功

如果没有成功:

检查nginx错误日志(/var/log/nginx/error.log)。如果错误如下:

connect() to unix:///path/to/your/mysite/mysite.sock failed (13: Permission
denied)

添加插座权限再次运行:

uwsgi --socket mysite.sock --wsgi-file test.py --chmod-socket=666 # (very permissive)

要么

uwsgi --socket mysite.sock --wsgi-file test.py --chmod-socket=664 # (more sensible)

5.使用uswgi和nginx运行Django应用程序

如果上面一切都显示正常,则下面命令可以拉起django应用

uwsgi --socket mysite.sock --module mysite.wsgi --chmod-socket=664

配置uWSGI以使用.ini文件运行

每次都运行上面命令拉起django application实在麻烦,使用.ini文件能简化工作,方法如下:

在应用程序目录下创建文件mysite_uwsgi.ini,填入并修改下面内容:

# mysite_uwsgi.ini file
[uwsgi] # Django-related settings
# the base directory (full path)
chdir = /path/to/your/project
# Django's wsgi file
module = project.wsgi
# the virtualenv (full path)
home = /path/to/virtualenv # process-related settings
# master
master = true
# maximum number of worker processes
processes = 10
# the socket (use the full path to be safe
socket = /path/to/your/project/mysite.sock
# ... with appropriate permissions - may be needed
# chmod-socket = 664
# clear environment on exit
vacuum = true

现在,只要执行以下命令,就能够拉起django应用程序:

uwsgi --ini mysite_uwsgi.ini # the --ini option is used to specify a file

在系统引导时使uWSGI启动

编辑文件/etc/rc.local,添加下面内容到这行代码之前exit 0

/usr/local/bin/uwsgi --socket /path/to/mysite.sock --module /path/to/mysite.wsgi --chmod-socket=666

uWSGI的更多配置

env = DJANGO_SETTINGS_MODULE=mysite.settings # set an environment variable
pidfile = /tmp/project-master.pid # create a pidfile
harakiri = 20 # respawn processes taking more than 20 seconds
limit-as = 128 # limit the project to 128 MB
max-requests = 5000 # respawn processes after serving 5000 requests
daemonize = /var/log/uwsgi/yourproject.log # background the process & log

Ubantu下部署Flask项目安装与配置的更多相关文章

  1. centos上部署flask项目之环境配置-MySQL的安装

    1.添加mysql 的yum源 wget 'https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm'    rpm ...

  2. 在Ubuntu下部署Flask项目

    FlaskDemo 命名为test.py # coding=utf-8 from flask import Flask app = Flask(__name__) @app.route("/ ...

  3. CentOS 下部署Nginx+Gunicorn+Supervisor部署Flask项目

    原本之前有一部分东西是在Windows Server,但是由于Gunicorn不支持Windows部署起来颇为麻烦.最近转战CentOS,折腾一段时间,终于简单部署成功.CentOS新手,作为一个总结 ...

  4. 通过Nginx部署flask项目

    用Flask开发之后,很多人,喜欢用nohup python manage.py & 这样的形式,放到后台运行,其实这样只是个发开模式,很简陋,无法支持并发,进程监控等功能.所以采用nginx ...

  5. 使用Nginx和uwsgi部署Flask项目

    前言   之前用Flask框架开发了一个Python的Web项目,使用Nginx和uWSGI部署起来感觉挺麻烦,过程中还因为对Flask框架的不熟悉,花了好长时间才把应用完全部署起来.下面分享部署成功 ...

  6. 通过IIS部署Flask项目

      本文主要介绍在Windows Server 2012R2上通过IIS部署Flask项目的过程,以及对TTFB延迟大问题的思考.关于如何申请云服务器,注册(子)域名,备案,开放云服务器端口,获取SS ...

  7. linux下部署php项目-Apache、php、mysql关联

    linux下部署php项目环境可以分为两种,一种使用Apache,php,mysql的压缩包安装,一种用yum命令进行安装. 使用三种软件的压缩包进行安装,需要手动配置三者之间的关系.apache和p ...

  8. 部署Flask项目到腾讯云服务器CentOS7

    部署Flask项目到腾讯云服务器CentOS7 安装git yum install git 安装依赖包 支持SSL传输协议 解压功能 C语言解析XML文档的 安装gdbm数据库 实现自动补全功能 sq ...

  9. Centos下部署Flask

    尝试在Centos6.5下部署Flask应用并成功,记录一下步骤,参数为什么这样配置还需要再研究uwsgi和Nginx才能回答. Python版本升级2.7 测试机器centos6.5默认自带的pyt ...

随机推荐

  1. C#调用C++的dll各种传参

    1. 如果函数只有传入参数,比如: //C++中的输出函数 int __declspec(dllexport) test(const int N) { ; } 对应的C#代码为: [DllImport ...

  2. myeclipse 工具栏 Run按钮不见了,怎么调出来啊?

    window-->new window,打开新窗口,按钮出现了.关闭老窗口,再关闭新窗口.再次打开MyEclipse,妥妥的了.

  3. Mac的MySQL无法启动的原因

    一.由于Mac OS X的升级或其他原因可能会导致一个错误: Warning:The /usr/local/mysql/data directory is not owned by the 'mysq ...

  4. 2017 趋势科技 研发4.26(offer)

    南京趋势科技外企(offer) 笔试 在华科线下笔试的,推荐多参加线下笔试,因为相对难度会低一些,好进一些. 当时笔试的估计只有60几个,然后选择题感觉有的不会,编程简单. 第二天去面试的时候,hr小 ...

  5. django 路由层(反向解析)03

    目录 ORM表关系建立 Django请求生命周期流程图 urls.py 路由层 无名分组 有名分组 反向解析 无名分组的反向解析 有名分组的反向解析 以编辑功能为例 路由分发 名称空间 伪静态 虚拟环 ...

  6. 【leetcode】1232. Check If It Is a Straight Line

    题目如下: You are given an array coordinates, coordinates[i] = [x, y], where [x, y] represents the coord ...

  7. [人物存档]【AI少女】【捏脸数据】气质学生

    点击下载(城通网盘): AISChaF_20191119010459547.png

  8. Qt修改图片的背景色及设置背景色为透明的方法

    先上干货. Qt下修改图片背景色的方法: 方法一: QPixmap CKnitWidget::ChangeImageColor(QPixmap sourcePixmap, QColor origCol ...

  9. Error: Node Sass does not yet support your current environment: Windows 64-bit with Unsupported runtime (64)

    错误提示: Error: Node Sass does not yet support your current environment: Windows 64-bit with Unsupporte ...

  10. ZJOI2010 诸神眷顾的幻想乡

    题目链接:戳我 非常不好意思,因为想要排版,所以今天先只把代码贴出来,明天补题解. #include<iostream> #include<cstdio> #include&l ...