当你使用Django完成一个web项目之后,你需要在你的服务器上部署你的Django服务,但是当你不用其他的web服务器代理,Django本身无法带动多并发,所以在实际部署中,我们一般使用Nginx加uwsgi网关服务接口来部署Django服务

1、安装并运行Nginx

Nginx是一个非常轻量级别的web代理服务器,它使用纯C语言开发,消耗内存很少,非常方便,如果你的Linux系统没有安装Nginx,可以移步我的博客教程:Linux安装nginx的web服务器

2、安装uwsgi

安装uwsgi,我们使用anaconda环境,如何你还没安装anaconda环境,可以移步我的博客教程:Linux下安装基于Python3.7的Anaconda环境

当然你有多种方式安装uwsgi

方式一:直接用pip安装

pip install uwsgi

方式二:使用网络安装器

# 这将会把uWSGI二进制安装到 /tmp/uwsgi ,你可以随意修改它
curl http://uwsgi.it/install | bash -s default /tmp/uwsgi

方式三:源码安装

wget http://projects.unbit.it/downloads/uwsgi-latest.tar.gz
tar zxvf uwsgi-latest.tar.gz
cd <dir>
make

3、配置uwsgi文件

在你的任意目录下,新建一个uwsgi.ini文件

vi uwsgi.ini

在其中加入下面的配置

# 与Nginx通信的端口
http-socket = 127.0.0.1:3031
stats = 127.0.0.1:9191
# 你的django工程目录
chdir= 你的Django工程目录
# yourproject是你的工程
module=yourproject.wsgi:application
master=True
# 进程数
processes = 4
# 线程数
threads = 2
# 你的父进程(主进程)pid文件 将来用这个文件重启,开启,关闭
pidfile=/你自定义的目录/master.pid
vacuum=True
# 最大请求数
max-requests=5000

运行

# 开启uwsgi
uwsgi --ini uwsgi.ini
# 重新加载  master.pid使我们刚刚配置进程文件
uwsgi --reload master.pid
# 停止
uwsgi --stop master.pid

4、配置运行Nginx

在server模块中配置代理,如下:

 location / {
             proxy_pass http://127.0.0.1:3031
             proxy_set_header Host $host;
             proxy_set_header X-Real-IP $remote_addr;
             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }

静态文件和媒体文件

      # Django media
      location /media  {
           alias   /home/xxx/xxx/xxx/media;  # 指向django的media目录
        }

       # Django static
       location /static  {
             alias  /home/xxx/xxx/xxx/static;  # 指向django的static目录
        }

运行Nginx

# 启动Nginx
/usr/local/nginx/sbin/nginx
# 重新加载配置文件
/usr/local/nginx/sbin/nginx -s reload 

5、测试

在你的浏览器中输入:http://ip   然后你就可以看到你的你访问的网页了

0
Posted in 软件工程

Django是一个非常强大的基于Python的Web框架,我们可以用Django处理带参数的url

1、带参数的URL

http请求的带参数的url,URL参数是追加到URL上的一个名称/值对,通常以?符号开始,如果有多个参数,用&符号隔开,案列如下:

http(s)://www.ivdone.top/article/?page=2&p=288

2、Django如何处理带参数的URL

首先在urls.py中添加路由

# coding:utf-8
from django.contrib import admin
from django.urls import path
from django.urls import re_path

from . import view

urlpatterns = [
    path('admin/', admin.site.urls),
    path('index/', view.index),
    re_path('^article/$', view.article), # 添加参数url的路由
]

然后在view.py的视图函数中获取参数url中的参数值

# coding:utf-8
import os
from django.http import HttpResponse

def article(request):
    # 判断请求类型,带参数的url请求一般是GET请求
    if request.method == "GET" and request.GET:
        # 根据参数的键获得参数的值
        page = request.GET.get('page', None)
        p = request.GET.get('p', None)
        if page is None or p is None:
            return HttpResponse("can't get the value")
        # 返回结果
        result = "the page is " + page + " the p is " + p
        return HttpResponse(result)
    else:
        return HttpResponse("error")

运行程序

# 0.0.0.0代表任意ip可以访问,8000为监听端口
python manage.py runserver 0.0.0.0:8000

3、测试

在浏览器中输入:http://ip:8000/article/?p=3&page=2

0
Posted in 学习, 软件工程

1 什么是软件过程模型

软件过程模型是对软件开发过程的一种抽象表示。用来描述软件过程活动的流程框架。

2 几种典型的软件过程模型

(1)瀑布模型
(2)增量模型
(3)原型模型
(4)基于复用的过程模型
(5)RAD模型
(6)螺旋模型

0
Posted in 软件工程

1 软件生存周期定义

软件产品从最初定义开始,到交付用户使用,直至最终废弃淘汰为止所经历的全过程,称为软件生存周期。

2 软件生存周期的阶段

软件生存周期一般可划分为以下几个阶段:
(1)制定计划:包括问题定义和可行性研究
(2)需求分析
(3)软件设计
(4)程序编码
(5)软件测试
(6)运行维护

0
Posted in 软件工程

1 软件工程项目的基本目标

基本目标:开发出高质量的软件。
(1)付出较低的开发成本;
(2)实现预期要求的软件功能;
(3)取得较好的软件性能;
(4)开发的软件易于移植(可移植性);
(5)开发的软件易于维护(可维护性);
(6)能按时完成开发,及时交付使用。

2 软件工程的七条基本原理

(1)用分阶段的生命周期计划严格管理;
(2)坚持进行阶段评审;
(3)实行严格的产品控制;
(4)采用现代程序设计技术;
(5)明确开发组织的责任和产品标准;
(6)开发小组的人员应该少而精;
(7)不断改进软件开发过程。

0
Posted in 软件工程