---恢复内容开始---

一、前提:

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作为直接对外的服务接口,接收到客户端发送过来的http请求,会解包、分析,
如果是静态文件请求就根据nginx配置的静态文件目录,返回请求的资源,
如果是动态的请求,nginx就通过配置文件,将请求传递给uWSGI;
uWSGI 将接收到的包进行处理,并转发给wsgi,
wsgi根据请求调用django工程的某个文件或函数,处理完后django将返回值交给wsgi,
wsgi将返回值进行打包,转发给uWSGI,
uWSGI接收后转发给nginx,nginx最终将返回值返回给客户端(如浏览器)。
*注:不同的组件之间传递信息涉及到数据格式和协议的转换

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

三、部署前对项目的修改

  主要修改setting.py:

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

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

  其他修改:

 # 新建secret_key.txt文件(例如:/var/www/secret_key.txt)
# 将配置中SECRET_KEYS等号后面的内容复制到secret_key.txt中,保存
# 将配置SECRET_KEYS改为:
with open('/var/www/secret_key.txt') as f:
SECRET_KEY = f.read().strip()

四、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 / -name nginx.conf  

  修改配置:

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

  配置域名及监听端口:

server {
listen 80 default_server;
listen [::]:80 default_server; // 监听的端口
server_name www.xxxx.xxx; // 你的域名
root /var/www/object1/templates; // 项目静态文件 ...
}

  

  配置转向的路由:

 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/; # 此目录必须有用户的读写权限
}
location /media {    # 配置静态文件路径,此项为新增
alias /var/www/blog/media/; # 此目录必须有用户的读写权限
}

  修改setting配置:

 STATIC_ROOT='/var/www/project1/static/'
2 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即可

---恢复内容结束---

一、前提:

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作为直接对外的服务接口,接收到客户端发送过来的http请求,会解包、分析,
如果是静态文件请求就根据nginx配置的静态文件目录,返回请求的资源,
如果是动态的请求,nginx就通过配置文件,将请求传递给uWSGI;
uWSGI 将接收到的包进行处理,并转发给wsgi,
wsgi根据请求调用django工程的某个文件或函数,处理完后django将返回值交给wsgi,
wsgi将返回值进行打包,转发给uWSGI,
uWSGI接收后转发给nginx,nginx最终将返回值返回给客户端(如浏览器)。
*注:不同的组件之间传递信息涉及到数据格式和协议的转换

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

三、部署前对项目的修改

  主要修改setting.py:

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

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

  其他修改:

 # 新建secret_key.txt文件(例如:/var/www/secret_key.txt)
# 将配置中SECRET_KEYS等号后面的内容复制到secret_key.txt中,保存
# 将配置SECRET_KEYS改为:
with open('/var/www/secret_key.txt') as f:
SECRET_KEY = f.read().strip()

四、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 / -name nginx.conf  

  修改配置:

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

  配置域名及监听端口:

server {
listen 80 default_server;
listen [::]:80 default_server; // 监听的端口
server_name www.xxxx.xxx; // 你的域名
root /var/www/object1/templates; // 项目静态文件 ...
}

  

  配置转向的路由:

 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/; # 此目录必须有用户的读写权限
}
location /media {    # 配置静态文件路径,此项为新增
alias /var/www/blog/media/; # 此目录必须有用户的读写权限
}

  修改setting配置:

 STATIC_ROOT='/var/www/project1/static/'
2 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项目完整版(二)——部署配置及相关知识的更多相关文章

  1. 解决亚马逊云服务器上安装nginx后无法访问的问题

    在亚马逊云服务器上装了Ubuntu系统,使用docker环境搭建nginx,启动nginx容器后,在浏览器输入地址后,显示连接超时. 在网上查了一下说有可能是服务器安全组的设置问题 然后在云服务器的安 ...

  2. 亚马逊云服务器VPS Amazon EC2 免费VPS主机配置CentOS及其它内容

    Amazon目前提供为期一年的免费VPS服务,可到地址http://aws.amazon.com 进行申请. 现在对账号申请成功后,对VPS主机配置CentOS的过程做个图文介绍 1.创建实例(Ins ...

  3. 亚马逊云服务器AWS安装CentOS

    亚马逊云服务器默认创建的实例,在停止之后再启动的情况下,IP会发生改变.所以我们最好先创建一个弹性IP,即EIP,不过我也不清楚这个费用. 1.按如图操作创建一个弹性IP,弹性IP创建之后可以随便绑定 ...

  4. mac 登录亚马逊云服务器报错:Permission denied (publickey).

    申请的亚马逊云服务器EC2,实例为ubuntu系统 一.打开终端,定位到放置密钥的文件夹: 二.确保私有秘钥不是公开可见的: p.p1 { margin: 0.0px 0.0px 0.0px 0.0p ...

  5. 使用亚马逊云服务器EC2做深度学习(四)配置好的系统镜像

    这是<使用亚马逊云服务器EC2做深度学习>系列的第四篇文章. (一)申请竞价实例  (二)配置Jupyter Notebook服务器  (三)配置TensorFlow  (四)配置好的系统 ...

  6. 使用亚马逊云服务器EC2做深度学习(三)配置TensorFlow

    这是<使用亚马逊云服务器EC2做深度学习>系列的第三篇文章. (一)申请竞价实例  (二)配置Jupyter Notebook服务器  (三)配置TensorFlow  (四)配置好的系统 ...

  7. 使用亚马逊云服务器EC2做深度学习(二)配置Jupyter Notebook服务器

    这是<使用亚马逊云服务器EC2做深度学习>系列的第二篇文章. (一)申请竞价实例  (二)配置Jupyter Notebook服务器  (三)配置TensorFlow  (四)配置好的系统 ...

  8. 使用亚马逊云服务器EC2做深度学习(一)申请竞价实例

    这是<使用亚马逊云服务器EC2做深度学习>系列的第一篇文章. (一)申请竞价实例  (二)配置Jupyter Notebook服务器  (三)配置TensorFlow  (四)配置好的系统 ...

  9. 新建的亚马逊云服务器EC2 ping 不通 解决方案

    在EC2配置安全组里面新加一条规则

随机推荐

  1. Confluence 6 属性的一个活动

    为了启用属性,使用上面描述的方法.针对所有的用户,属性每一个访问的页面,将会在你的应用服务器中进行记录,直到你对 Confluence 进行重启.请注意每次用户访问一个链接,一个单一的属性将会被打印出 ...

  2. select前台转义后台取到的值为对应的文本 select同时接受list和map

    简单描述:select动态取值 要求是根据后台传过来的值在前台进行转义,emmm干就完了 思路分析:后台同时传过去一个map一个list ,map用来前台转义,list用来获取值,list取到的值相当 ...

  3. poj3417lca+树上差分

    /* 给定n个点的树,在其中加入m条新边(称为非树边) 现在可以割断一条树边,一条非树边,使图分裂成两个联通块,请问有几种切割方式 对树边进行分情况讨论 如果树边不处在环中,则割断这条树边后可以割断任 ...

  4. poj2728 生成树01分数规划 (二分答案)

    给定整数序列a,b,求出下式的最大值 sum{ai*xi}/sum{bi*xi},xi=0|1 通俗来说,就是选出一些整数对(ai,bi),使得选出的a之和与选出的b之和商最大化 二分答案L,即选出的 ...

  5. npm run build 打包后(直接打包白屏),如何运行在本地查看效果(Apache服务)

    转载: https://www.cnblogs.com/qiu-Ann/p/7477593.html 目前,使用vue-cli脚手架写了一个前端项目,之前一直是使用npm run dev 在8080端 ...

  6. ruby安装sass和compass步骤

    依赖ruby,所以需要安装Ruby 如何安装Ruby呢?在windows下通过RubyInstaller来安装,安装过程中需要选择第二项 1.ruby -v 2.gem install sass (如 ...

  7. AI学习吧

    一:AI学习吧 项目描述 系统使用前后端分离的模式,前端使用vue框架,后端使用restframework实现. 项目需求 公司开发AI学习吧,由于公司需要一款线上学习平台,要开发具有线上视频学习.支 ...

  8. 上手TensorFlow

    tensorflow中softmax_cross_entropy和sparse_softmax_cross_entropy的区别 都是softmax cross entropy损失函数,区别在于lab ...

  9. SqlServerHelp

    using System; using System.Collections.Generic; using System.Reflection; using System.Text; using Sy ...

  10. Oracle 11g 安装过程中“检查网络配置要求 未执行”解决方法

    正在检查网络配置要求... 检查完成.此次检查的总体结果为: 未执行 网上查了一下,很多朋友都遇到这个问题而无从下手,其实解决起来很容易的. 只需要在 Windows XP 中安装 Microsoft ...