『亚马逊云科技产品测评』活动征文 | uWSGI部署Django

提示:授权声明:本篇文章授权活动官方亚马逊云科技文章转发、改写权,包括不限于在 Developer Centre, 知乎,自媒体平台,第三方开发者媒体等亚马逊云科技官方渠道

在这里插入图片描述

文章目录

  • 前言
  • 一、创建Lightsail实例
  • 二、Django环境搭建
    • 2.1 安装pip
    • 2.2 安装uWSGI环境
    • 2.3 测试uWSGI是否正常
    • 2.4 设置安全组预览测试环境
  • 三、部署及测试Django环境
    • 3.1 安装Django
    • 3.2 创建Django
    • 3.3 允许所有主机可访问
    • 3.4 运行项目
  • 四、配置Nginx方向代理
  • 总结


前言

最近新注册了 AWS 的账号,免费领取了12个月的EC2和3个月的Lightsail,准备用来部署一个Django,本篇文章用来记录整个实践过程。

我的常用语言是PythonPythonWeb开发的支持非常好,大量的Web框架,如DjangoFlaskTornado等,使得Web开发变得更加容易和高效。

  • Django介绍

Django是一个开源的Web应用框架,使用Python语言编写,主要用于搭建Web项目。本篇文章介绍如何在Linux服务器中使用Nginx+uWSGI部署Django项目。


提示:以下是本篇文章正文内容,下面案例可供参考

一、创建Lightsail实例

Lightsail 提供了多个地区的节点供开发者选择,我这里选择东京,大家选择距离近点的访问要快一点,特别是生产环境,网络往往会是项目的一大瓶颈,东京也有几个可用区可以选择,大家可以根据需要选择不同的可用区,例如做一些灾备
在这里插入图片描述
因为我们后续会使用到Nginx做反向代理,这里 Lightsail 提供 Apps + OS 的模式直接创建实例,我们可以很方便的直接选择带有 Nginx 程序的服务器
在这里插入图片描述
再往下就是选择咱们的配置了,根据程序大小,业务情况挑选,因为我是新用户,所以可以免费试用3个月,这里我选择了 2GB 2vCPUs的配置
在这里插入图片描述

输入实例标识,然后再确认要创建的实例数量就可以以点击创建按钮完成创建了。创建完成后服务器是自带Nginx的,也就说我们直接访问服务器的公网IP地址就有一个Nginx在运行,我们尝试访问一下:
在这里插入图片描述

二、Django环境搭建

我们的项目需要使用 Python3,一般操作系统都是自带一个 Python2.7,我们来运行命令检查一下:

python3 --version

看到如下输出就是系统已经安装好了 Python3,且版本还比较新
在这里插入图片描述

2.1 安装pip

然后我们检查一下 pip 是否自带,我们需要安装python的依赖时需要这个包管理工具,通过检查后发现没有
在这里插入图片描述

我们需要自己安装一个,安装流程如下:

  • 获取pip
wget https://bootstrap.pypa.io/get-pip.py
  • 安装pip
python3 get-pip.py 

安装好后有一个提示,虽然安装成功了,但是没有设置好环境变量,还是不能全局使用,所以我们还需要设置一下环境变量

WARNING: The script wheel is installed in '/home/bitnami/.local/bin' which is not on PATH.  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
  • 设置环境变量到 .bashrc

pip的可执行文件所在目录放到 path 中即可

echo 'export PATH=/home/bitnami/.local/bin:$PATH' >> .bashrc
  • 让环境变量生效
source .bashrc 
pip3 --version

再次检测pip是否可以全局使用,看到如下输出就是正常了

在这里插入图片描述

2.2 安装uWSGI环境

因为我们需要用 uWSGI 启动 Django ,所以我们还需要安装一下这个,方便需要项目启动

  • 执行安装命令
pip3 install uwsgi

在这里插入图片描述
这里发现在 build uwsgi 的时候报错了,我们需要安装一下 python3 的开发库

  • 安装python3-dev
sudo apt-get install python3-dev
  • 重新安装uwsgi
pip3 install uwsgi

看到这种回显就是安装成功了
在这里插入图片描述

2.3 测试uWSGI是否正常

  • 创建测试目录
mkdir www
cd www/
  • 创建测试文件
vim index.py
  • 文件内写入以下内容
def application(env,start_response):        start_response('200 ok',[('Content-Type','text/html')])return [b"Hello World"]
  • 使用uwsgi启动测试项目
uwsgi --http 0.0.0.0:8001 --wsgi-file index.py

通过公网IP访问发现还是访问不了,然后就想到还没在实例上设置安全组

2.4 设置安全组预览测试环境

在实例详情页的 networking 中添加一条规则:TCP 8001,这是我们的流量类型和流量端口

在这里插入图片描述
保持再次访问IP+8001,发现已经可以正常访问到测试项目了,如预期输出 Hello World
在这里插入图片描述
在终端上也可以看到这次请求的相关信息
在这里插入图片描述

三、部署及测试Django环境

3.1 安装Django

pip3 install Django

3.2 创建Django

pip 安装后django后会有一个 django-admin 的可执行命令,我们通过 start 指令来启动一个项目模板

django-admin startproject my_website

执行完后就会在当前目录看到一个 my_website 的目录

3.3 允许所有主机可访问

  • 修改settings配置
vi my_website/my_website/settings.py 

在这里插入图片描述
设置 ALLOWED_HOSTS = ["*"] 即可保存退出

3.4 运行项目

  • 进入项目目录,运行
cd my_website
python3 manage.py runserver 0.0.0.0:8002

在这里插入图片描述
这里新启动了一个端口 8002,同样我们也需要在 networking 中添加一个准入规则
在这里插入图片描述
再次预览发现已经成功访问
在这里插入图片描述

四、配置Nginx方向代理

得益于 Lightsail 自带了 Nginx,我们不需要再自己安装配置,直接使用即可,我们使用 Nginx 反向代理到我们的 Django 项目

  • 修改Nginx配置,增加如下转发条件
location /django{proxy_pass http://localhost:8002;
}

这个配置的意思是当我们访问 IP+/django 就转发到本地的 8002 服务上

在这里插入图片描述

  • 修改后重载配置
sudo nginx -s reload

然后直接访问公网IP,不需要带8002端口了,发现已经正常访问到 Django 项目了

在这里插入图片描述

这里是因为 django 没这个路由,框架里配置一下就可以了,我们发现 django 的终端也看到了这次请求的相关信息

在这里插入图片描述
到此,项目就算部署完成了


总结

通过在 Lightsail 实例搭建了 uWSGI + Django 的项目,发现整个过程还是比较顺利,然后我们看看整个过程资源消耗,查看控制台,转到 Metrics tab栏

在这里插入图片描述
在这里插入图片描述

cpu的使用率非常低,内存也很平稳,说明配置 python django对服务器损耗很少。Lightsail的态势感知能力十分直观,一目了然。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/214568.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小程序:用户查找英语单词的意思 ← Python字典

【程序分析】 ● 字典中的条目是没有顺序的。 ● 可以对字典使用如下方法: keys()、values()、 items()、 clear()、 get(key)、 pop(key) 和popitem()【程序代码】 dictionary{"dog":"狗","apple":"苹果","banana&q…

【Flink】Standalone运行模式

独立模式是独立运行的,不依赖任何外部的资源管理平台;当然独立也是有代价的:如果资源不足,或者出现故障,没有自动扩展或重分配资源的保证,必须手动处理。所以独立模式一般只用在开发测试或作业非常少的场景…

基于若依的ruoyi-nbcio流程管理系统修改代码生成的sql菜单id修改成递增id(谨慎修改,大并发分布式有弊端)

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 1、我看我的原先系统生成的代码id都是很长如下: -- 菜单 SQL insert into sys_menu (menu_id…

海思DEMO板大放送(SCH+PCB)

海思DEMO板大放送(SCHPCB) 先不多说,上几张硬核图: 关注后台回复关键字获取,根据需要选择: HI3798CV2DMC_VER_C:下载ZZ0001 HI3798CV2DMB_VER_C:下载ZZ0002 HI3518PERB&…

rk3588配置uac功能,android13使能uac及adb的复合设备

最近,因新增需求需要在现有产品上增加UAC的功能,查阅并学习相关知识后,在rk3588 SOC硬件平台搭载android13系统平台上成功配置了uac及uac&adb的复合设备。基于开源共享精神希望给大家提供些参考。 1.技术可行性预研 (1&#…

UI自动化测试神器:RunnerGo测试平台

可以直接进入官网下载开源版或点击右上角体验企业版体验 RunnerGo UI自动化平台 RunnerGo提供从API管理到API性能再到可视化的API自动化、UI自动化测试功能模块,覆盖了整个产品测试周期。 RunnerGo UI自动化基于Selenium浏览器自动化方案构建,内嵌高度…

线上问题排查实例分析|关于 Redis 内存泄漏

Redis 作为高性能的 key-value 内存型数据库,普遍使用在对性能要求较高的系统中,同时也是滴滴内部的内存使用大户。本文从 KV 团队对线上 Redis 内存泄漏定位的时间线维度,简要介绍 Linux 上内存泄漏的问题定位思路和工具。 16:30 问题暴露 业…

数据结构:二叉查找树,平衡二叉树AVLTree,红黑树RBTree,平衡多路查找数B-Tree,B+Tree

二叉查找树 二叉树具有以下性质:左子树的键值小于根的键值,右子树的键值大于根的键值。 对该二叉树的节点进行查找发现深度为1的节点的查找次数为1,深度为2的查找次数为2,深度为n的节点的查找次数为n,因此其平均查找次…

探索移动端可能性:Capacitor5.5.1和vue2在Android studio中精细融合

介绍: 移动应用开发是日益复杂的任务,本文将带领您深入探索如何无缝集成Capacitor5.5.1、Vue2和Android Studio,以加速您的开发流程Capacitor 是一个用于构建跨平台移动应用程序的开源框架。Vue 是一个流行的 JavaScript 框架,用…

无需外接显示器,直接使用windows安装树莓派系统并可远程桌面登录

准备工作: 1.安装树莓派官方烧录工具 raspberry pi imager 2.下载树莓派系统镜像(也可选择在线下载安装) 打开imager工具,选择需要安装包树莓派版本 点击"NEXT",在弹出的选项中选择编辑设置。 设置登录名和密码,已经所连接的wif…

华大基因助力乌兹别克斯坦精准医学发展,共筑健康丝绸之路

今年上半年,中国与中亚五国元首齐聚陕西西安,举办中国-中亚峰会。过去的20年里,中国已经成为中亚国家的主要投资来源国,总投资额接近400亿美元。乌兹别克斯坦是中国-中亚合作机制的重要参与者,乌…

【100个Cocos实例】东皇太一的技能环绕效果

引言 Cocos中物体围绕物体做圆周运动。 不管是2D还是3D游戏,旋转是游戏中常见的操作之一,它可以用来改变游戏对象的方向、角度或者位置,从而创造出更加生动和有趣的游戏体验。 本文将介绍一下如何实现王者荣耀中东皇太一的技能环绕效果。 …