使用Nginx+uwsgi在亚马逊云服务器上部署python+django项目完整版——部署配置及相关知识

Posted 问道编程

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Nginx+uwsgi在亚马逊云服务器上部署python+django项目完整版——部署配置及相关知识相关的知识,希望对你有一定的参考价值。

一、前提:

1、django项目文件已放置在云服务器上,配置好运行环境,可正常运行

2、云服务器可正常连接

二、相关知识

1、python manage.py runserver:这是一款适合开发阶段使用的服务器,不能对大量请求进行同时处理,不适合运行在真实的生产环境中,在实际生产环境中使用WSGI作为接口,连接web和python代码(也就是django项目);

2、WSGI:Web服务器网关接口,英文为Python Web Server Gateway Interface,缩写为WSGI,是Python应用程序或框架和Web服务器之间的一种接口;

3、WSGI没有官方的实现, 因为WSGI更像一个协议,只要遵照这些协议,WSGI应用(Application)都可以在任何服务器(Server)上运行;

4、django在创建project时,会自动生成wsgi.py文件,里面会指明settings、application对象;

5、uWSGI:前面说到WSGI类似协议,可以通过uWSGI进行实现,uWSGI完全由C语言编写,运行速度快,是一个快速、自我修复、开发人员和系统管理员友好的服务器;

6、Nginx:Nginx的主要作用有两个:负载均衡(多台服务器轮流处理请求,尽可能的使多个服务器均摊请求压力);反向代理(隐藏真实服务器,更加安全);

7、使用Nginx+uWSGI配置服务器时,动态数据请求的实现架构为(静态数据直接有Nginx反馈给用户):

  客户端请求nginx,再由nginx请求uwsgi,运行django框架下的python代码

 

整个配置过程的大方向是:配置uWSGI、配置Nginx、收集静态文件。

 

三、部署前对项目的修改

  主要修改setting.py:

DEBUG = False
ALLOW_HOSTS=[‘*‘,]表示可以访问服务器的ip

  如果项目中有涉及域名的,也需要更改,如有邮箱验证、重置密码链接等功能的

四、uWSGI的安装及配置

  安装:

pip install uwsgi

  在项目根目录下新建uwsgi.ini文件,(eg:项目目录/var/www/project1)配置如下:

[uwsgi]
socket=127.0.0.1:8000        # 外网ip:端口(使用nginx连接时,使用socket)
# http=外网ip:端口(直接做web服务器,使用http,与socket只能选择一个使用)
chdir=/var/www/project1         # 项目根目录,绝对路径
wsgi-file=project1/wsgi.py  # 项目中wsgi.py文件的目录,相对于项目根目录
processes=4
threads=2
master=True
pidfile=uwsgi.pid
daemonize=uswgi.log

  相关命令:

启动:uwsgi --ini uwsgi.ini

停止:uwsgi --stop uwsgi.pid

重启:uwsgi --reload uwsgi.pid

  可使用 ps ajx|grep uwsgi 查看运行状态,这时候访问网址,发现静态文件是不能加载的,下面继续进行。

五、Nginx的安装及配置

  安装:

sudo apt-get nginx

  配置,找到安装目录,编辑安装目录下的conf/nginx.conf文件,如果没找到使用以下命令进行查找:

sudo find / -namge nginx.conf     

  修改配置:

sudo vim /ect/nginx/conf/nginx.conf   # (安装目录换成自己的)

  配置转向的路由:

location / {            # 如果没有这一项,在server内自行添加)
  include uwsgi_params;    # 将所有的参数转到uwsgi下 
  uwsgi_pass 127.0.0.1:8000; # 将用户的请求转向的地址
}

  配置静态文件目录,新建静态文件夹:

$sudo chmod 777 /var/www/proje1  # 权限更改为所有用户均有读写权限
$cd
/var/www/proje1
$mkdir static # 新建静态文件夹,用来收集、存放静态文件

  配置Nginx中静态文件目录

location /static {    # 配置静态文件路径
    alias /var/www/proje1/static/;   # 此目录必须有用户的读写权限
}

  修改setting配置:

STATIC_ROOT=‘/var/www/project1/static/‘
STATIC_URL=‘/static/‘

  收集静态文件:

$cd /var/www/project1
$python manage.py collectstatic

相关命令:

查看版本:sudo sbin/nginx -v

启动:sudo sbin/nginx

停止:sudo sbin/nginx -s stop

重启:sudo sbin/nginx -s reload

 

  整个配置完成后重启Nginx,重启uWSGI即可

 







以上是关于使用Nginx+uwsgi在亚马逊云服务器上部署python+django项目完整版——部署配置及相关知识的主要内容,如果未能解决你的问题,请参考以下文章

nginx+uwsgi阿里云ubuntu服务器上简单部署flask RESTful风格项目

Flask+uwsgi+nginx 部署

如何在阿里云上部署 Django 应用程序

使用 Nginx + uWSGI 部署 Flask 应用

Nginx+Uwsgi+Flask在阿里云服务器上的部署

在阿里云服务器使用nginx+uwsgi+venv部署Django项目