设为首页 加入收藏

TOP

nginx+uWSGI+django+virtualenv+supervisor部署发布web项目(一)
2018-11-08 10:10:54 】 浏览:490
Tags:nginx uWSGI django virtualenv supervisor 部署 发布 web 项目

 Nginx (engine x) 是一个高性能的HTTP和反向代理服务,也是一个IMAP/POP3/SMTP服务。

wsgi是PythonWeb服务器网关接口(Web Server Gateway Interface),WSGI是作为Web服务器与Web应用程序或应用框架之间的一种低级别的接口,以提升可移植Web应用开发的共同点。WSGI是基于现存的[[CGI]]标准而设计的。

Django是一个开放源代码的Web应用框架,由Python写成。

Virtualenv指的的Python的虚拟环境

supervisor管理进程,是通过fork/exec的方式将这些被管理的进程当作supervisor的子进程来启动,所以我们只需要将要管理进程的可执行文件的路径添加到supervisor的配置文件中就好了。此时被管理进程被视为supervisor的子进程,若该子进程异常中断,则父进程可以准确的获取子进程异常中断的信息,通过在配置文件中设置autostart=ture,可以实现对异常中断的子进程的自动重启。

整个请求和响应流程如下:

 一、Python环境的准备

说明,系统为centos 7.3

1 安装python3

安装python 3.4和对应版本的pip 

[root@node1 ~]# yum install  python34.x86_64   python34-pip.noarch -y

2 安装虚拟环境

[root@node1 ~]# pip3 install virtualenv

(1)创建虚拟目录

[root@node1 ~]# virtualenv  django

(2)进入虚拟目录

[root@node1 ~]# cd django/

(3)启用虚拟环境

[root@node1 django]# source bin/activate

可以看到目录地下有默认的几个文件夹

(django) [root@node1 django]# ll
total 0
drwxr-xr-x 3 root root 330 Nov  5 15:00 bin
drwxr-xr-x 2 root root  24 Nov  5 14:55 include
drwxr-xr-x 3 root root  23 Nov  5 14:55 lib
lrwxrwxrwx 1 root root  16 Nov  5 14:55 lib64 -> /root/django/lib

 二、Django的安装与项目创建以及配置

1 安装Django,这里使用1.11版本

(django) [root@node1 django]# pip3 install django==1.11
Collecting django==1.11
  ……………
Installing collected packages: pytz, django
Successfully installed django-1.11 pytz-2018.7

2 创建项目和应用

(1)创建名为mysite的项目

 (django) [root@node1 django]# django-admin startproject mysite

(2)创建名为app01的应用

(django) [root@node1 django]# cd mysite/
(django) [root@node1 mysite]#python3  manage.py  startapp  app01

(3)可以看到mysite项目下有如下目录

(django) [root@node1 mysite]# ll
total 4
drwxr-xr-x 3 root root 123 Nov  5 15:07 app01
-rwxr-xr-x 1 root root 804 Nov  5 15:04 manage.py
drwxr-xr-x 3 root root  93 Nov  5 15:07 mysite

 3 修改默认配置文件

(1)修改Django配置文件mysite/settings.py

ALLOWED_HOSTS = ['*']

注册app01
INSTALLED_APPS = [
'app01.apps.App01Config',
....
]

静态文件目录
STATIC_URL = '/static/'
STATICFILES_DIRS=[
    os.path.join(BASE_DIR,"static"),
]

(2)修改路由匹配规则mysite/urls.py

from django.conf.urls import url
from django.contrib import admin
from app01 import views

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^index/', views.index),
]

(3)新建功能,修改app01/views.py

from django.shortcuts import HttpResponse

def index(request):
    return HttpResponse('Hello World!')

 4 启动Django

(django) [root@node1 mysite]# python3 manage.py  runserver
Performing system checks...
…….
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

测试访问

[root@node1 ~]# curl http://127.0.0.1:8000/index/
Hello World!

 三、uwsgi的安装与配置

1 由于使用pip3 install uwsgi 安装会报我不能解决的错误

在ubuntu上不会有这个错误

Command "/usr/bin/python3.4 -u -c "import setuptools, tokenize;
__file__='/tmp/pip-install-k0ebn5sl/uwsgi/setup.py';
f=getattr(tokenize, 'open', open)(__file__);
code=f.read().replace('\r\n', '\n');
f.close();
exec(compile(code, __file__, 'exec'))" \
install --record /tmp/pip-record-eekd779j/install-record.txt \
--single-version-externally-managed \
--compile" failed with error code 1 in /tmp/pip-install-k0ebn5sl/uwsgi/

故采用以下安装方式(仅限centos):

[root@node1 ~]# yum install uwsgi

查看版本

[root@node1 ~]# uwsgi --version
2.0.17.1

2 安装uwsgi-plugin-python3

注:插件 Ubuntu不需要此步

首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇1.Python是什么 下一篇分享个最新Python入门到实战flask..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目