精华内容
下载资源
问答
  • Django应用部署

    千次阅读 2017-05-30 11:43:30
    前言 Apachewsgi 环境搭建 ...部署Django应用 参数释义 NginxuWSGI 环境搭建 整合 Nginx配置 运行 总结前言这几天又大致的复习了一下Django的相关内容,发现很多东西都忘得差不多了。看来知识的确是

    前言

    这几天又大致的复习了一下Django的相关内容,发现很多东西都忘得差不多了。看来知识的确是很容易就被遗忘的。时常按照艾宾浩斯记忆曲线来复习一下之前学过的,遗忘的速度就减慢许多了。

    废话扯多了,今天主要是写点关于Django应用部署的笔记。毕竟今后一定会用得到,于是先给自己充点电,权当是准备一下。

    总的来说有下面三种方式,接下来简答的描述一下。

    • Apache+wsgi
    • uWSGI
    • Nginx+uWSGI

    Apache+wsgi

    Apache是家喻户晓的了。当然了,不是说阿帕奇武直多么厉害,而是这个服务器。而wsgi是什么意思咧?

    wsgi全称 Web Server Gateway Interface。是专门为Python语言定义的Web服务器和Web应用程序或者框架之间的一种简单而通用的接口。

    WSGI是Web服务器与Web应用之间的一种低级别的接口,我们可以理解为一个桥梁,通过这座桥梁实现了Web应用在Web服务器上的部署。


    环境搭建

    安装Apache

    sudo apt-get -y install apache

    安装mod_wsgi

    sudo apt-get -y install libapache2-mod-wsgi

    添加django.wsgi文件

    这个django.wsgi文件的作用就是告诉Apache服务器,到底要怎么将Django应用程序和Apache服务器联系起来。

    文件的内容如下:

    #!/usr/bin/env python3
    # coding: utf8
    
    import os
    import sys
    # Django的项目的绝对目录
    path = 'home/biao/guest/'
    sys.path.append(path)
    sys.path.append(path+'guest')
    
    os.environ['DJANGO_SETTINGS_MODULE'] = 'guest.settings'
    
    import django.core.handlers.wsgi
    application = django.core.handlers.wsgi.WSGIHandler()
    

    配置/etc/apache2/httpd.conf

    ……
    #添加mod_wsgi.so 模块
    LoadModule wsgi_module modules/mod_wsgi.so
    
    #指定myweb项目的wsgi.py配置文件路径
    WSGIScriptAlias / /home/biao/guest/django.wsgi
    
    #指定项目路径
    WSGIPythonPath /home/biao/guest
    
    <Directory /home/biao/guest>
    <Files wsgi.py>
        Require all granted
    </Files>
    </Directory>

    wsgi.py配置

    最后是修改guest应用下的wsgi.py文件。

    ……
    import os
    
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "guest.settings")
    
    from django.core.wsgi import get_wsgi_application
    application = get_wsgi_application()

    跑起来吧

    然后重启一下Apache服务即可。

    service apache2 reload

    或者使用下面的命令

    sudo /etc/init.d/apache2 restart

    uWSGI

    uWSGI 是一个Web服务器,它实现了WSGI, uwsgi,HTTP等协议(这里姑且把WSGI接口看作是一个协议吧)。 这一点要和uwsgi区别对待即可。

    环境搭建

    首先当然是得先安装这个服务器了。

    pip install uWSGI

    具体的版本可以在 https://pypi.python.org/pypi/uWSGI 处下载。

    测试一下

    安装完毕之后,我们先来测试一下uWSGI能否正常工作。根据其实现了uwsgi和WSGI协议,我们可以写出下面的桥接

    # coding: utf8
    # file: test.py
    # author: 郭璞
    
    def application(env, start_response):
        start_response('200 OK', [('Content-Type', 'text/html')]
        return [b'It Works.']

    运行文件命令

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

    uWSGI 方式运行代码

    部署Django应用

    部署Django应用的命令很长,接下来一一讲解各个参数的含义。

    uwsgi --http :8080 --chdir /home/biao/guest --wsgi-file guest/wsgi.py --master --processes 4 
    root@iZ2zeigvkok5ldc6x0m6itZ:/home/biao/guest# uwsgi --http :8080 --chdir /home/biao/guest --wsgi-file guest/wsgi.py --master --processes 4
    *** Starting uWSGI 2.0.15 (64bit) on [Tue May 30 10:57:10 2017] ***
    compiled with version: 4.8.4 on 29 May 2017 15:26:43
    os: Linux-3.13.0-86-generic #130-Ubuntu SMP Mon Apr 18 18:27:15 UTC 2016
    nodename: iZ2zeigvkok5ldc6x0m6itZ
    machine: x86_64
    clock source: unix
    detected number of CPU cores: 1
    current working directory: /home/biao/guest
    detected binary path: /usr/local/bin/uwsgi
    !!! no internal routing support, rebuild with pcre support !!!
    uWSGI running as root, you can use --uid/--gid/--chroot options
    *** WARNING: you are running uWSGI as root !!! (use the --uid flag) *** 
    chdir() to /home/biao/guest
    your processes number limit is 7781
    your memory page size is 4096 bytes
    detected max file descriptor number: 65535
    lock engine: pthread robust mutexes
    thunder lock: disabled (you can enable it with --thunder-lock)
    uWSGI http bound on :8080 fd 4
    uwsgi socket 0 bound to TCP address 127.0.0.1:41481 (port auto-assigned) fd 3
    Python version: 3.4.3 (default, Nov 17 2016, 01:12:14)  [GCC 4.8.4]
    *** Python threads support is disabled. You can enable it with --enable-threads ***
    Python main interpreter initialized at 0x25f0d10
    your server socket listen backlog is limited to 100 connections
    your mercy for graceful operations on workers is 60 seconds
    mapped 363800 bytes (355 KB) for 4 cores
    *** Operational MODE: preforking ***
    WSGI app 0 (mountpoint='') ready in 1 seconds on interpreter 0x25f0d10 pid: 16143 (default app)
    *** uWSGI is running in multiple interpreter mode ***
    spawned uWSGI master process (pid: 16143)
    spawned uWSGI worker 1 (pid: 16145, cores: 1)
    spawned uWSGI worker 2 (pid: 16146, cores: 1)
    spawned uWSGI worker 3 (pid: 16147, cores: 1)
    spawned uWSGI worker 4 (pid: 16148, cores: 1)
    spawned uWSGI http 1 (pid: 16149)
    

    参数释义

    • --http: 协议类型和端口号 ,一般形式 –http :port
    • --processes: 开启的进程数量,对比上述的日志,我们可以看出有四个进程
    • --chdir: 指定项目的路径。
    • --wsgi-file: 指定wsgi文件的路径,这里是相对于chdir的路径而言的,所以可以更加清爽的写路径。
    • --master: 允许主进程存在,不写则不允许存在
    • --threads: 开启的线程数量。

    其实还有很多参数,但是对于部署而言,很多东西都要根据具体的硬件配置不断的调试,调优,才能发挥出服务器最大的能力。

    Nginx+uWSGI

    Nginx近年来可谓是风生水起。目前而言,Nginx+uWSGI作为Django应用的部署方案已经是很普遍的了。通常让Nginx作为前台接收各种请求,然后转发给下方的uWSGI来具体的处理各种请求。以此来达到一个更高的响应效率。

    环境搭建

    刚才已经安装好了uWSGI,这里就安装一下Nginx好了。具体的安装方式有源码安装和直接使用包管理工具安装,这里为了方便,就简单的采用包管理工具安装好了。

    sudo apt-get -y install nginx

    然后为了防止出现端口冲突,可以修改一下Nginx的默认监听端口。

    vim /etc/nginx/sites-avaiable/default

    修改Nginx的默认监听端口

    然后重启一下服务

    sudo /etc/init.d/nginx restart

    然后访问一下端口为8888的链接。
    Nginx端口修改后效果

    整合

    整合Nginx和uWSGI与Django应用的时候,需要一些配置文件。`.

    tree . -I *.pyc -L 4

    目录结构如下

    .
    ├── db.sqlite3
    ├── django_uwsgi.ini
    ├── django.wsgi
    ├── guest
    │   ├── __init__.py
    │   ├── __pycache__
    │   ├── settings.py
    │   ├── urls.py
    │   └── wsgi.py
    ├── manage.py
    └── sign
        ├── admin.py
        ├── apps.py
        ├── __init__.py
        ├── migrations
        │   ├── 0001_initial.py
        │   ├── __init__.py
        │   └── __pycache__
        ├── models.py
        ├── __pycache__
        ├── templates
        │   ├── event_manage.html
        │   ├── guest_manage.html
        │   ├── index.html
        │   ├── login.html
        │   └── sign_index.html
        ├── tests.py
        ├── urls.py
        ├── views_if.py
        └── views.py
    

    我们需要了解的就是Django和uWSGI的整合。uWSGI可以通过XML文件或者INI文件来读取相关的配置信息。所以我们可以在django_uwsgi.ini文件中有如下声明。
    django_uwsgi.ini文件内容

    大致的含义其实和之前第二种方式使用命令行来运行是一致的。

    可以通过命令

    uwsgi --ini django_uwsgi.ini

    如果没有报错信息,说明可以正常运行。也说明了现在后台部分已经完毕了。只需要**前台**Nginx做一下路由即可。

    Nginx配置

    现在需要修改一下Nginx的配置,让它为我们的Django应用服务。其实说白了还是对于uWSGI的路由请求的分配。

    vim /etc/nginx/sites-avaiable/default

    在文件的末尾加上如下内容。含义是让Nginx监听服务器的10010端口,然后将请求转发给后台的uWSGI服务器。并作出相应的处理。
    Nginx前台配置

    运行

    现在我们可以测试一下运行效果。也就是说:
    - 先开启uWSGI服务器。
    - 然后开启Nginx服务器。
    - 访问Nginx对外暴露的端口,看看能不能获取uWSGI的服务。

    uwsgi --ini django_uwsgi.ini
    /etc/init.d/nginx restart

    Django的admin后台访问效果

    发现已经可以正确运行了。如此即可。

    总结

    最后来总结一下需要注意的地方。

    Apache的方式不是很赞同,虽然稳定性很高,但是配置起来不是很容易而且各种依赖。
    uWSGI单独运行的话,也还可以。就是略显单薄。

    Nginx配合uWSGI 给我的感觉就是很沉稳了。后台部分可以挂载多个uWSGI。

    但是需要知道的是整合uWSGI和Nginx的时候的那个ini文件。

    • 如果想直接通过uWSGI服务器获取服务,这里的请求方式与端口配置为 http = :port

    • 如果要想通过Nginx配合uWSGI的方式获取服务,这里的请求方式与端口配置为socket = :port

    对外网而言,要想正确访问到我们的Django服务,还需要一项配置ALLOWED_HOSTS

    在项目根目录的settings.py文件中,对下面一项做下配置即可。

    ALLOWED_HOSTS = ['www.example.com', 'ip', '*']

    还有就是在生产环境下,Django的DEBUG开关也需要关闭一下。这样给用户的用户体验也会好上不少,还能在一定程度上保证应用的安全性。设置方式如下。
    在项目根目录的settings.py文件中,对下面一项做下配置即可。

    # SECURITY WARNING: don't run with debug turned on in production!
    DEBUG = False

    感觉还是有很多东西要去学习呵。

    展开全文
  • 主要介绍了Docker+Jenkins+Gitlab+Django应用部署实践,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 如何把 Django 应用部署到服务器 | 21云盒子

    如何把 Django 应用部署到服务器?

    如何把 Django 应用部署到服务器 | 21云盒子

     

    1. 创建 PostgreSQL 数据库

    2. 构建命令和启动参数配置

    3. 使用远程连接创建管理员(admin) 帐号

    详情看: https://www.21yunbox.com/docs/#/deploy-django-app

    高清视频入口: https://www.bilibili.com/video/BV1Br4y1c7C4/

    展开全文
  • Django应用部署 - 上线指南

    万次阅读 2015-07-19 20:03:07
    目前比较流行的部署、运行Django应用方式是基于Apache的mod_wsgi模块。 但更加高效、弹性,同时又更加复杂的方式是使用以下工具来部署实施:Nginx、Gunicorn、virtualenv、supervisor、Postgresql。 以下详细介绍...

    http://blog.csdn.net/pipisorry/article/details/46957613

    python manage.py runserver已经很接近于服务器的形式,但是并不能支持外网访问或多人同时访问。因此需要将网站部署到服务器上,而django在本地使用runserver运行和部署到服务器在配置文件上是不同的。

    目前比较流行的部署、运行Django应用方式是基于Apache的mod_wsgi模块。

    但更加高效、弹性,同时又更加复杂的方式是使用以下工具来部署实施:Nginx、Gunicorn、virtualenv、supervisor、Postgresql。

    以下详细介绍如何结合这些工具来部署Django应用到windows上(linux系统也类似)。

    安装和配置虚拟环境

    前提是已经安装了python3(或者python2+pip)

    pip install virtualenv

    Note:virtualenv安装完成后不要将外面的python卸载了,但外面的python可以修改成python2

    e:\mine\python_workspace >virtualenv venv

    [python virtualenv虚拟环境配置]

    进入并激活虚拟开发环境

    windows:

    env\Script\activate.bat


    Linux(mac os):

    source env/bin/activate

    mingw(git):

    venv >source Scripts/activate


    皮皮Blog



    安装Django并配置Django项目

    虚拟环境中pip安装Django

    (venv)  pip install Django

    Note: pip install Django==1.7.9指定版本安装(lz用的是1.7.9版本的django)

    python

    import django

    django.VERSION

    没有发生错误,证明已经成功安装Django了


    2. 安装包安装

    只要还在virtualenv环境里,安装Django的步骤跟实际安装Django的步骤完全一样。可以参考官网的步骤。其实就是下载,然后输入命令行的事。
    https://docs.djangoproject.com/en/1.4/topics/install/#installing-a-distribution-specific-package
    1. Download the latest release from our download page.
    2. Untar the downloaded file (e.g. tar xzvf Django-X.Y.tar.gz, where X.Y is the version number of the latest release). If you're using Windows, you can download the command-line tool bsdtar to do this, or you can use a GUI-based tool such as 7-zip.
    3. Change into the directory created in step 2 (e.g. cd Django-X.Y).
    4. If you're using Linux, Mac OS X or some other flavor of Unix, enter the command sudo python setup.py install at the shell prompt. If you're using Windows, start a command shell with administrator privileges and run the commandpython setup.py install. This will install Django in your Python installation's site-packages directory.
    安装完Django 以后,用deactivate命令,退出virtualenv。

    [使用Virtualenv搭建Python3的Django环境]


    虚拟环境目录venv中创建Django项目

    新建:创建一个空的django项目labsite

    django-admin.py startproject labsite

    [创建Django项目]

    [Django模型(view-数据库)]

    移植git clone git@github.com:***.git

    或者直接将已有的Django项目目录copy到venv目录


    生产环境中django的相关设置修改

    关闭debug

    为了安全起见,部署到服务器前需要关闭debug模式,即修改settings.py文件中的
    DEBUG = False
    TEMPLATE_DEBUG = False
    当然,我们也可以重新建一个设置文件,如settings_production.py用于生产环境。在这个py文件中设置DEBUG为False。

    当DEBUG= True时,默认使用的是django自带的404错误页面,同时页面中会显示具体的错误信息,可能会暴露隐私信息,因此需要关闭这一功能。关闭后如果出现404错误,django会在你的模版根目录中寻找名叫404.html的页面。因此,关闭了DEBUG功能后我们需要在根目录中添加有意义的404页面。

    django在Debug功能关闭后就会自动停止staticfiles功能,因此这时候会发现runserver后网页中的静态文件都没有了。
    到这一步的时候如果不需要部署到服务器上只想在电脑上测试可以使用命令python manage.py runserver –insecure网页中就会正确显示css,js等静态文件。

    修改允许的HOST

    DEBUG关闭后需要在修改ALLOWED_HOSTS = [ ‘127.0.0.1’ ]

    皮皮Blog



    安装并配置数据库相关模块(lz用的是mysql,其它数据库类似)

    首先下载安装MySQL

    django要求MySQL4.0或更高的版本。 3.X 版本不支持嵌套子查询和一些其它相当标准的SQL语句。

    [Mysql数据库安装及配置]

    Django中Mysql初始配置

    我们需要告诉Django使用什么数据库以及如何连接数据库。假定你已经完成了数据库服务器的安装和激活,并且已经在其中创建了数据库(例如,用 CREATE DATABASE books;)。 如果你使用SQLite,不需要这步安装,因为SQLite使用文件系统上的独立文件来存储数据。

    数据库配置也是在Django的配置文件里,缺省 是 settings.py

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'books',        #这里不要用绝对路径!
            'USER': 'pipi',
            'PASSWORD': '********',
            'HOST': '',
            'PORT': '',
        }
    }

    配置数据库连接插件MySQL

    需要安装对应的mysql数据库插件。MySQLdb还不支持python3,所以用的是替代品PyMySQL。
    1. 在虚拟环境中安装mysql数据库适配器:

    e:\mine\python_workspace\venv >pip install pymysql

    2. 在上面建好的django项目的init.py中加入(maybe not):

    import pymysql
    pymysql.install_as_MySQLdb()
    

    [Django模型(view-数据库]

    注意根据上面的链接中的三个步骤构建Django的初始化数据库


    配置数据库图片相关库

    pip install pillow

    Note:否则在数据库model中不能使用ImageField



    配置后台管理模块

    如果使用嵌套关联对象nested inline,安装django-nested-inline

    pip install django-nested-inline

    [Django项目实践4 - Django站点管理(后台管理员)]

    皮皮Blog



    windows下的安装部署

    可以参考使用apache+mod_wsgi相关文章[django部署]配置好mod_wsgi后,只要将django相关路径添加到apache配置文件httpd.conf中就可以启动apache使用django。

    Apache的安装和启动运行

    安装Apache 2.4
    MSI Installer安装

    1. Run the msi installer.
    2. Apache should now be seen in your computers Program Files directory under
    [PROGRAM_FILES]\Apache Software Foundation\Apache2.4. This full path to Apache is known as theServer Root.
    Zip File安装
    1. Download the appropriate zip file for your system architecture.
    2. Extract the Apache24 directory to the desired location of the Apache installation. The full installation path that you use is known as the Server Root. For the purposes of these steps we will refer to the Server Root path as [SERVER_ROOT].
    3. Open a command prompt as an Administrator. Go to [SERVER_ROOT]/bin and run the command httpd -k install.

    启动Apache

    三种方法:

    1. 手动启动Apache

    httpd -k start

    2. 使用apache自带的启动停止工具

    D:\Apache24\bin\ApacheMonitor.exe在图形界面下控制apache。

    Note:如果出现the requested operation has failed!可能是因为系统中python没有安装、安装版本不对、安装路径改变了。

    3. ApacheGUI图形管理界面安装和使用(可选)

    Apache Web 服务器管理工具,是一个免费开源的 Web 工具,用来帮助管理 Apache HTTP 服务器。

    1. Unzip the ApacheGUI archive to a directory of your choice. We will refer to this directory as [APACHEGUI_HOME] in the following installation steps.
    2. To start the web tool go to [APACHEGUI_HOME]/bin and run the batch file run.bat. Once the GUI has started it may be accessed through http://localhost:9999/ApacheGUI/


    3. To stop the web tool go to [APACHEGUI_HOME]/bin and run the batch file stop.bat

    4. 打开http://localhost:9999/ApacheGUI/后输入server root:如D:\Apache24(包含conf文件夹的目录)。name和password自己设置即可。


    Note:

    1. 要安装java并配置JAVA_HOME相关路径才能正常运行apachegui[java环境配置]

    2. 要显示ApacheGUI完整内容,IE的安全-Internet安全设置不能太高。禁用的东西太多可以GUI界面显示不全。

    3. 如果restart失败可能是因为系统中python没有安装、安装版本不对、安装路径改变了。

    [http://apachegui.net/installation]

    皮皮Blog



    linux下安装部署django应用

    可以参考下面的部署步骤,因为gunicorn不能在windows下运行

    配置Python WSGI 应用服务器 - Gunicorn

    在生产环境中,我们将不会使用Django自带的单线程的开发服务器(python manage.py runserver),而是使用专门的Python WSGI 应用服务器——gunicorn

    [gunicorn的详细介绍Gunicorn]

    在你的应用的虚拟环境中安装gunicorn

    pip install gunicorn

    windows下要下载fcntl.py文件放到虚拟环境PYTHONPATH路径即可,如E:\mine\python_workspace\venv\Lib目录下。

    [5.Re: No module named fcntl]

    [ImportError: No module named]

    安装成功后可以测试下gunicorn是否可以运行Django 应用,在项目hello目录下运行以下命令:

    (hello_django)[django@rango hello]$ gunicorn hello.wsgi:application --bind localhost:8001

    通过访问http://localhost:8001 ,可以访问到你的Gunicorn服务器。此处特意将端口从8000改为8001是为了迫使浏览器建立一个新的连接。


    Gunicorn现在已经准备好运行你的app,现在可以配置一些选项来使得Gunicorn更加有用。此处通过编写一个shell脚本来设置一些参数,脚本保存为/django_webapps/hello_django/bin/gunicorn_start:

    #!/bin/bash

    NAME="hello_app"    # Name of the application
    DJANGODIR=/django_webapps/hello_django/hello    #Django project directory
    SOCKFILE=/django_webapps/hello_django/run/gunicorn.sock    #unix socket fro communication

    USER=django                     # the user to run as
    GROUP=django_webapps                     # the group to run as
    NUM_WORKERS=5         # how many worker processes should Gunicorn spawn
    DJANGO_SETTINGS_MODULE=hello.settings # which settings file should Django use
    DJANGO_WSGI_MODULE=hello.wsgi                 # WSGI module name
     
    echo "Starting $NAME as `whoami`"
     
    # Activate the virtual environment
    cd $DJANGODIR
    source ../bin/activate
    export DJANGO_SETTINGS_MODULE=$DJANGO_SETTINGS_MODULE
    export PYTHONPATH=$DJANGODIR:$PYTHONPATH
     
    # Create the run directory if it doesn't exist
    RUNDIR=$(dirname $SOCKFILE)
    test -d $RUNDIR || mkdir -p $RUNDIR
     
    # Start your Django Unicorn
    # Programs meant to be run under supervisor should not daemonize themselves (do not use --daemon)
    exec ../bin/gunicorn ${DJANGO_WSGI_MODULE}:application \
        --name $NAME \
        --workers $NUM_WORKERS \
        --user=$USER --group=$GROUP \
        --log-level=debug \
        --bind=unix:$SOCKFILE


    为该脚本增加可执行权限:

    chmod u+x bin/gunicorn_start


    以用户django的身份来运行这个脚本:

    su - django

    bin/gunicorn_start

    Starting hello_app as django
    2014-06-15 15:17:20 [18037] [INFO] Starting gunicorn 18.0
    2014-06-15 15:17:20 [18037] [DEBUG] Arbiter booted
    2014-06-15 15:17:20 [18037] [INFO] Listening at: unix:/django_webapps/hello_django/run/gunicorn.sock (18037)
    2014-06-15 15:17:20 [18037] [INFO] Using worker: sync
    2014-06-15 15:17:20 [18048] [INFO] Booting worker with pid: 18048
    2014-06-15 15:17:20 [18049] [INFO] Booting worker with pid: 18049
    2014-06-15 15:17:20 [18050] [INFO] Booting worker with pid: 18050
    2014-06-15 15:17:20 [18051] [INFO] Booting worker with pid: 18051
    2014-06-15 15:17:20 [18052] [INFO] Booting worker with pid: 18052

    ^C

    2014-06-15 15:17:51 [18052] [INFO] Worker exiting (pid: 18052)
    2014-06-15 15:17:51 [18051] [INFO] Worker exiting (pid: 18051)
    2014-06-15 15:17:51 [18037] [INFO] Handling signal: int
    2014-06-15 15:17:51 [18048] [INFO] Worker exiting (pid: 18048)
    2014-06-15 15:17:51 [18049] [INFO] Worker exiting (pid: 18049)
    2014-06-15 15:17:51 [18050] [INFO] Worker exiting (pid: 18050)
    2014-06-15 15:17:51 [18037] [INFO] Shutting down: Master

    注解:需要按照你自己的设置来修改脚本的路径和文件名。

    1. --workers的设置一般是按照2*CPUS+1,我的cpu为双核,所以设置为5.

    2. --name(NAME)为你的应用在某些程序(top,ps)中的标识,默认为gunicorn,此处设置为hello_app以便与其他gunicorn应用区别开来。

    3. 为了能够设置--name,需要安装一个名为setproctitle的Python模块:pip install setproctitle


    通过ps可查看到哪个gunicorn属于哪个应用:

    ps aux | grep hello_app

    django   15226  0.0  0.2  15184  8068 ?        S    Jun13   0:25 gunicorn: master [hello_app]                                                                                                                                                                                                                                    
    django   15237  0.0  0.4  27636 16556 ?        S    Jun13   0:01 gunicorn: worker [hello_app]                                                                                                                                                                                                                                    
    django   15238  0.0  0.4  27640 16592 ?        S    Jun13   0:02 gunicorn: worker [hello_app]                                                                                                                                                                                                                                    
    django   15239  0.0  0.4  27644 16600 ?        S    Jun13   0:01 gunicorn: worker [hello_app]                                                                                                                                                                                                                                    
    django   15240  0.0  0.4  27656 16624 ?        S    Jun13   0:01 gunicorn: worker [hello_app]                                                                                                                                                                                                                                    
    django   15242  0.0  0.2  19276 10820 ?        S    Jun13   0:01 gunicorn: worker [hello_app]

    Note:

    1. Gunicorn是一个开源的Python WSGI HTTP服务器,移植于Ruby的Unicorn项目的采用pre-fork模式的服务器。Gunicorn服务器可与各种Web框架,包括django、flask、pyramid等。只要简单配置执行,轻量级的资源消耗,而且相当迅速。与各个Web结合紧密,部署很方便。缺点不支持HTTP 1.1,并发访问性能也不高。默认情况下,Gunicorn的工作进程是同步执行的模式,即单个进程在某个时间只处理一个请求。同时,Gunicorn也支持Gevent、Eventlet来实现异步。

    2. 关于WSGI:WSGI即Python Web server Gateway Interface,是Python专门的用于Python应用程序或框架与Web服务器之间的一种接口,没有官方的实现,因为WSGI更像一个协议,只要遵照这些协议,WSGI应用都可以在任何服务器上运行,反之亦然。

    [Setting up Django with Nginx, Gunicorn, virtualenv, supervisor and PostgreSQL]

    [python+nginx+gunicorn 部署django小记]

    [使用gunicorn部署Django]

    [Nginx + Gunicorn + Django 部署小记]

    [https://docs.djangoproject.com/en/1.7/howto/deployment/wsgi/gunicorn/]

    [Running Gunicorn]

    皮皮Blog


    Django安全配置

    [Django 安全配置(setting.py)]


    域名查询和购买

    [域名注册,国际域名,域名查询,域名申请,中文域名 - 耐思尼克]

    [网站域名购买哪个好]

    from:http://blog.csdn.net/pipisorry/article/details/46957613

    ref:django部署

    在亚马逊ec2上部署django应用


    展开全文
  • Django 应用部署到Windows服务器

    千次阅读 2018-08-03 11:41:37
    一、Django setting配置 BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))#上层目录绝对路径 ALLOWED_HOSTS = [www.baidu.com] # 填上你服务器的域名 STATIC_URL = '/static/' STATIC_...

    一、Django setting配置

    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))#上层目录绝对路径
    ALLOWED_HOSTS = [www.baidu.com] # 填上你服务器的域名
    
    
    STATIC_URL = '/static/'
    STATIC_ROOT = os.path.join(BASE_DIR, 'all_static') # 所有的静态文静聚合的目录,用python manage.py collectstatic 会把所有的static文件都复制到STATIC_ROOT文件夹下
     
    # 公共的静态文件,js/css等可以放这里,这里面的文件夹不能包含 STATIC_ROOT
    STATICFILES_DIRS = (
        os.path.join(BASE_DIR, "static"),
    )
     
    # upload folder
    MEDIA_URL = '/media/'
    MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
    

     

    二、Apache配置

    LoadFile "c:/python36/python36.dll"  #c:/python36:服务器上面python的安装路径
    LoadModule wsgi_module "c:/python36/lib/site-packages/mod_wsgi/server/mod_wsgi.cp36-win_amd64.pyd"  # "https://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi" 下载对应python、Apache和VC版本的mod_wsgi,并且pip install x.whl安装后就可以找到
    WSGIPythonHome "c:/python36"
    
    WSGIScriptAlias / D:/flash/flash/wsgi.py  #重定向你的django项目路径,这里直接是服务器的域名根目录
    
    WSGIPythonPath D:/flash  # django项目的最外层
    
    <Directory "D:/flash/flash">
    <Files wsgi.py>  
        Require all granted  #启用所有权限
    </Files> 
    </Directory>
    
    Alias /static/ D:/flash/static/  #静态文件的加载路径,也是setting里面STATICFILES_DIRS对应的路径
    <Directory D:/flash/static> 
        Options FollowSymlinks
        AllowOverride none
        Require all granted
    </Directory>

    三、配置好Apache重启,就可以通过域名+你的重定向路径访问你的 django 项目了。

    展开全文
  • Django应用部署到Apache服务器

    千次阅读 2016-12-23 21:44:42
    Django项目部署到CentOS7下的Apache服务器上
  • 周末,在一个技术群里面有同学在问Django开发部署,所以今天给大家分享一下基于Docker下Python Django框架的部署。 首先我们要知道Django常见的两种部署方式: Django + Nginx + uWSGI Django+ Nginx + Gunicorn...
  • 作者 | sitin来源 | 涛哥聊Python(ID:programmer100)周末,在一个技术群里面有同学在问Django开发部署,所以今天给大家分享一下基于Doc...
  •  浏览器请求→ python manage.py runserver(比如8000) → 到应用代码(Django,Flask等等) 部署到线上的情况:  域名请求→ DNS解析→ 服务器IP→ Nginx(80端口)→ 代理转发 127.0.0.1:8000(IP不一定是...
  • Django部署可以有很多方式,采用nginx+uwsgi的方式是其中比较常见的一种方式。 在这种方式中,我们的通常做法是,将nginx作为服务器最前端,它将接收WEB的所有请求,统一管理请求。nginx把所有静态请求自己来处理...
  • 存档日期:2019年4月18日 | 首次发布:2009年4月7日 Django是一个基于Python的开源... 但是,此服务器不适合在生产环境中使用,因此需要进一步的步骤才能将Django应用程序部署到Web。 在本文中,您将了解Django框...
  • 使用uWSGI来部署Django程序。 当然,单单只有uWSGI是不够的,在实际的部署环境中,Nginx是必不可少的工具。 在本篇文章中,我将一直延用“N步法”的风格来阐述如何将uWSGI与Nginx做连接来部署Django程序。并在最后...
  • django应用部署

    2016-05-03 16:08:50
    这里分享下对django应用部署方式,采用 django + gunicorn + nginx 部署应用。1.应用清单python2.7Django-1.8.7gunicorn-19.4.5nginx2.提前的准备由于现在大多数服务器都是centos6的操作系统,系统自带的python...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 18,144
精华内容 7,257
关键字:

django应用部署