开发者学堂课程【存量应用快速迁移:python 应用迁移】学习笔记,与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/342/detail/4019
Python应用迁移
容器型——支持语言JAVA、PHP、Python
容器型搬站,支持存量应界尽可能少或者无需任何侵入性修改即可通过本平台把应用部署到Serverless计算服务当中。基于容器统一的交付方式,应用可以根据实际需要选用:FC、SAE、ASK计算服务。
计算型——支持语言:Python、Node
计算型搬站,基于FC的函数型Serverless,本平台提供NodeJS、Python两种语言的Serverless框架,由框架提供路由分发功能,让存量应用无需修改即可通过本平台部署到FC这种计算服务中,享受FC先进技术红利。
Python应用迁移提供了两种方案,一种是基于容器型的迁移,一种是基于Serverless框架的迁移,这里会向大家分别介绍两种方案。
首先是基于容器型的迁移:
点击云开发平台的快速开始页面选择应用搬站,选择语言为python、容器型的一个迁移方式,点击下一步输入项目名称,比如说python基于容器,之后都选默认,点击完成创建。
完成创建之后,会默认到应用详情的搬站帮助页面。之后直接选择开发部署,在开发部署里面打开IDE,打开IDE之后,已经内置了一个最简单的python项目。这个项目分为几个部分,第一部分就是app.py,这是入口文件,它是一个fast API框架的项目,框架项目很简单,它提供8020端口,然后提供了几个路由,返回hello word。
基于容器型搬站是如何操作的:
首先提供了默认的Dockerfile,采用的是云开发平台提供的3.6版本的python镜像,这个镜像内置了许多阿里云的SDK以及相关的运行环境,所以不用再设置自己的镜像,只需要将当前目录全都copy到容器中,然后gunicorn,它是一个管理工具,依次安装当前的requirements,导出8080端口。注意一定要导出8080端口,给shell脚本添加执行权限,最终执行入口文件,start.sh。大家是没看到有start文件的,其中奥秘在prepare脚本中。
prepare脚本是有很多注释的,首先提到prepare.sh文件为云开发平台构建用户自定义镜像的前置操作,处理环境变量以及启动命令等操作,所以这里面包含的一些代码是不需要改动的,改动的可能只有自定义命令。比如@cha“gunicorn application
-0.0.0.0.0:8080-w&-k uvicorn.workers.UvicornWorker” >>start.sh
gunicorn基础命令,8080端口,启动四个进程,后使用uricornworker启动命令打到start.sh文件里,start.sh实际是Dockerfile启动入口文件,这样就可以将原先的项目直接打到容器中,实现无缝运行。
如何进行部署:
可以采用本地命令在本地调试查看迁移是否成功。当项目迁移成功之后,直接在平台进行部署,点击左上角插件部署功能,选择日常环境,灰度设置为100%,之后点击部署。部署成功之后会有一个测试域名,点击测试域名就可以看到项目输出Hello World。
接下来介绍基于框架的迁移方案:
进入快速开始页面,点击应用搬站,选择Python、计算型
点击下一步,设置应用名称、应用介绍,计算服务,可根据需求进行设置。
点击开发部署,打开IDE,拖拽已有的FastAPI项目,它的项目跟刚刚容器型的项目几乎是一样的,输出的是“Hello World”。
拖拽之后查看readme,readme中提到针对不同框架的迁移文档,它支持django框架迁移、flask迁移以及fastAPI迁移,这里按照fastAPI提供的迁移文档进行操作。
首先将Serverless_config_fastapi.py文件重命名为
Serverless_config.py文件,之后将module入口设置为应用文件入口。
“module”:“app”
“module.entry”:“app”
Module文件对应的是app.py文件,module.entry文件对应的是内部导出的app对象。
添加依赖fastapi、uvicorn、uvloop以及httptools,注意要有两个内置的依赖,分别是gunicorn和request_unixsocket,还有uvloop只有0.14.0版本可以运行在Python3.6环境下,所以需要手动指定版本号,指定完依赖之后安装依赖。
安装依赖,可以直接使用pip install命令
安装完成之后进行测试,打开插件选择测试,点击按钮之后会输出一列数据,可以看到它输出了“Hello World”且给了测试连接。
点击测试连接,发现“Hello World”可以正常访问。
当测试完成之后可以直接进行部署:选择插件中的部署,直接点击部署,这样就完成了Python项目迁移。