使用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即可

原文地址:https://www.cnblogs.com/wendaobiancheng/p/9172425.html

时间: 2024-10-17 09:52:08

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

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

在亚马逊云服务器上装了Ubuntu系统,使用docker环境搭建nginx,启动nginx容器后,在浏览器输入地址后,显示连接超时. 在网上查了一下说有可能是服务器安全组的设置问题 然后在云服务器的安全组的入站里添加了HTTP协议,端口为80.添加之后,再次启动容器就可以通过浏览器访问了. 原文地址:https://www.cnblogs.com/wujing-hubei/p/8575934.html

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

这是<使用亚马逊云服务器EC2做深度学习>系列的第四篇文章. (一)申请竞价实例  (二)配置Jupyter Notebook服务器  (三)配置TensorFlow  (四)配置好的系统镜像 配置深度学习的环境是一个非常繁琐的过程.它要求你对Linux命令有一定地了解,与此同时各种深度学习库.驱动更新十分频繁,有可能明天教程里的安装脚本就不管用了. AMI AMI就是解决方法.AMI是可以直接在EC2启动的系统镜像,有的系统镜像已经配置好了使用GPU的深度学习环境,这样启动实例后,你就可以直

亚马逊云服务器AWS安装CentOS

亚马逊云服务器默认创建的实例,在停止之后再启动的情况下,IP会发生改变.所以我们最好先创建一个弹性IP,即EIP,不过我也不清楚这个费用. 1.按如图操作创建一个弹性IP,弹性IP创建之后可以随便绑定到该region下的实例 2.创建好弹性IP之后,然后去创建实例: 3.点启动实例之后,会进入到Amazon 系统映像(AMI)的选择: 4.我这里以安装Centos为例,点击上图中的“AWS Marketplace”,从镜像市场选择centos安装,可以慢慢找,也可以搜索centos然后再找合适的

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

申请的亚马逊云服务器EC2,实例为ubuntu系统 一.打开终端,定位到放置密钥的文件夹: 二.确保私有秘钥不是公开可见的: p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px "Andale Mono"; color: #75b900; background-color: #252525 } span.s1 { } chmod 400 密钥文件名.pem 三.两种方式连接云服务器:(假设实例的对公IP为:11.22.33.44)

在Windows中连接亚马逊云服务器

使用 PuTTY 连接到您的 Linux 实例,具体步骤如下: 1. 在AWS Web console中获取服务器的访问密钥(即*.pem文件)并保存到本地,并设置允许从指定的IP 地址到实例的入站 SSH 流量. 2. 下载putty和puttygen两个程序,也可下载windows安装包,并安装putty. 3. 由于putty不支持私有密匙类型,需要用puttygen进行转换,具体过程如下: 打开puttygen程序,然后点击“Load”选择第一步获取的.pem文件,如果看不到,选择下面的

亚马逊云代码部署(NodeJS)

首先需要使用ssh或者putty登陆AWS ec2的linux实例(在Windows中使用putty连接linux实例参见:在Windows中连接亚马逊云服务器). 一 .为了方便文件传输  需要安装两个软件 1. winscp  WinSCP是一个Windows环境下使用SSH的开源图形化SFTP客户端.同时支持SCP协议.它的主要功能就是在本地与远程计算机间安全的复制文件. 支持基于SSH-1.SSH-2的SFTP和SCP协议[2] 支持批处理脚本和命令行方式 多种半自动.自动的目录同步方式

Day 1之后,AWS亚马逊云给出了Day 2人工智能生存指南

1997年,亚马逊发表了著名的"Day 1"致股东信,贝索斯在信中说" this is Day 1 for the Internet and, if we execute well, for Amazon.com". 在过去的20年间,亚马逊一直保持在Day 1状态.20年后,贝索斯再次在股东信里强调,"Day 2公司将停滞不前,接着将变得无关紧要,然后将经历痛苦的衰退,直至最终死亡.这就是为何我们总是要做Day 1公司的原因." 尽管贝索斯所在

亚马逊云、阿里云、腾讯云三国鼎立-横向对比

随着亚马逊AWS步入中国市场,阿里云和腾讯云进军国际市场,目前我们所看到的,是一种愈来愈明显的三国鼎立的态势,亚马逊云.阿里云.腾讯云逐渐割据国内云服务的产业版图. 阿里云.腾讯云.亚马逊云到底该选谁?谁的性价比高?谁又更适合我?恐怕大家都是各执一词,说什么的都有.我也曾为此而困惑,相信很多人也是一头雾水吧.不过,通过近期研究,对这几个厂商有了一定的了解,做一个横向对比,如下: 一.厂商规模 亚马逊AWS,论全球线路资源和数据中心实力,亚马逊是毋庸置疑的行业老大.2006年开始涉足云计算,今年8

手把手教你用亚马逊云搭建免费VPN服务器

第一步 注册亚马逊云(已注册直接进入第二步) 开始前需要准备好:有外币支付功能的信用卡一张(注册需要,不扣钱).Email地址.电话(手机更方便一些) 访问 http://aws.amazon.com/ 点击Sign Up按钮进入Sign In or Create an AWS Account页面 填入E-mail地址 单击I'm a new user单选框 单击Sign in using our secure server按钮进入Login Credentials页面 My name is后面