Django+uwsgi+nginx把Django项目部署到阿里云服务器详解

Django的部署可以有很多种方式,采用nginx+uwsgi的方式是其中比较常见的方式。

在这种方式中主要的业务流程是:

nginx服务器作为前端—>接收WEB的所有请求—>统一管理请求—>nginx处理所有的静态请求(nginx的强项)—>nginx将所有的非静态请求通过uwsgi传递给Django—>Django尽情处理请求,从而完成了一次完整的WEB请求。

• 由此可见,uwsgi的作用就相当于一个桥接器,起到中间桥梁的作用。

• 因为Linux的强项就是用来做服务器,所以接下来整个部署过程我们会选择在ubuntu下完成。

本次部署采用的是阿里云的轻量应用服务器,首月只要9.9元,如果只是测试的话大家可以试一下,下面附上阿里云的链接


首先进入你的服务器,在这里我就用阿里云的轻量级服务器做演示

1.进入阿里云管理后台,找到轻量应用服务器

2.创建服务器,选择ubuntu系统镜像

3.点击服务器运维下面的远程连接,然后点击设置密码(此密码是远程连接服务器的密码)

4.开启服务器

5.打开终端,输入命令ssh root@0.0.0.0

root是你服务器上的服务器账号,0.0.0.0是你服务器给你的公网IP地址

之后就进入安装过程了!

 

1.安装nginx

sudo apt-get install nginx

nginx启动:

nginx -s start  #启动
nginx -s stop  #停止
nginx -s reload #重启

nginx
2.安装uwsgi

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

3.测试uwsgi是否能够正常启用
创建test.py,源码如下:

def application(env, start_response):

    start_response(‘200 OK’, [(‘Content-Type’,‘text/html’)])

    return [“Hello World”]

通过uwsgi运行这个文件,进入test.py所在的目录:

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

参数含义:

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

打开下面url,浏览器上应该显示hello world

http:127.0.0.1:8000

 

测试成功之后就把本地的Django项目上传到服务器上,重新在本地打开一个终端,

运行:scp -r /var/path/yourproject(这里是你的项目地址) root@0.0.0.0(这是你的服务器地址):/var/www/(这是传到你服务器的地址)

scp -r /var/yourproject/ root@0.0.0.0:/var/www/

然后打开连接服务器的那个终端,进入刚传过来的Django项目

测试django项目是否运行正常

python manage.py runserver 0.0.0.0:8000ru

如果没有问题的话,接下来就去配置nginx,进入到/etc/nginx目录下会看到一个nginx.conf的文件,打开并添加:

server{

                listen           8080;#80端口容易被占用,会遇到很多不必要的麻烦

                server_name      #你的服务器(可以填写公网地址,也可以填写你的网址);

                charset UTF-8;

                access_log      /var/log/nginx/myweb_access.log; #日志生成地址

                error_log       /var/log/nginx/myweb_error.log;

                client_max_body_size 75M;

                location / {

                include uwsgi_params;#uwsgi_params 在nginx目录下有的,如果没有这个文件查一下怎么办

                uwsgi_pass     127.0.0.1:80;#这里填你的uwsgi处理端口

                uwsgi_read_timeout 2;

        }

                location /static {

                alias /var/www/IPO/mysite/static;#django项目的静态文件地址

     }

}

 

然后进入/etc/nginx/sites-enabled目录下,修改default文件

端口跟上面nginx配置的端口一致
root后填写你Django项目所在的目录;

这一步部署完成之后进入到你的django项目中,在manage.py同级目录添加myweb_uwsgi.ini

[uwsgi]

# Django-related settings

socket = :80               这是uwsgi处理的端口                             

# the base directory (full path)

chdir           = /var/www/IPO #项目目录

# Django s wsgi file

module          = IPO.wsgi   #wsgi.py文件

# process-related settings

# master

master          = true

# maximum number of worker processes

processes       = 4

# … with appropriate permissions – may be needed

# chmod-socket    = 664

# clear environment on exit

vacuum          = true

所有的都部署完成,
重启nginx服务器,nginx -s reload
进入django项目输入命令:

uwsgi –http :80 –chdir /var/www/IPO/ –wsgi-file IPO/wsgi.py

打开浏览器输入:你部署的服务器id或者是你的域名就能看到你部署的网站了

 

如有任何疑问,请与我交流!

微信:daimakuangmo


                         



 

发表评论