云应用开发实战 课件 单元1、2 我的云服务器、我的有声图书_第1页
云应用开发实战 课件 单元1、2 我的云服务器、我的有声图书_第2页
云应用开发实战 课件 单元1、2 我的云服务器、我的有声图书_第3页
云应用开发实战 课件 单元1、2 我的云服务器、我的有声图书_第4页
云应用开发实战 课件 单元1、2 我的云服务器、我的有声图书_第5页
已阅读5页,还剩144页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

云应用开发实战单元1-我的云服务器项目1.1创建虚拟机与数据库项目1.2设计普通用户程序项目1.3设计管理员程序项目1.4部署应用程序到EC2云端实例项目1.5综合实训—我的云服务器单元3—航班数据采集及可视化分析知识目标:掌握亚马逊云科技账号密钥知识掌握亚马逊云科技账号的权限策略知识掌握AmazonEC2服务知识掌握Linux操作系统知识掌握Python在Linux中的开发知识掌握FlaskWeb程序的开发知识掌握SHA256加密知识掌握FlaskWeb操作数据库的知识掌握正则表达式数据验证知识掌握AmazonEC2虚拟机知识

能力目标:能创建亚马逊云科技账号并获取密钥能使用策略配置账号权限能使用AmazonEC2服务创建Linux虚拟机能在Linux中搭建Python开发运行环境能使用Flask开发简单的Web程序能使用正则表达式验证数据的有效性能使用SHA256对密码进行加密存储能使用Flask进行数据库的基本读写操作能使用分页的方式显示数据能使用AmazonRDS创建MySQL数据库实例项目1.1创建虚拟机与数据库创建AWSIAM用户使用策略配置权限创建AmazonEC2Linux虚拟机创建AmazonRDSMySQL数据库项目1.1—创建虚拟机与数据库1.1.1创建AWS访问账号任务描述我们要使用AWS的云服务,就必须先有一个能操作云服务的账号,这个任务目的就是引导大家创建一个AWS账号。项目1.1—创建虚拟机与数据库1.1.1创建AWS访问账号IAM服务AWSIdentityandAccessManagement(IAM)是一项AWS的托管服务,为使用AmazonWebServices(AWS)的客户在AWS中管理用户和用户权限。借助IAM,可以集中管理用户、访问密钥等安全凭证,以及用于管理用户访问AWS资源的权限。项目1.1—创建虚拟机与数据库1.1.1创建AWS访问账号AWS账号访问IAM用户访问亚马逊云科技的方式主要有三种,管理控制台、CLI命令行界面和SDK编程访问。在创建用户时,可以按照需求进行选择。(1)管理控制台是一个基于Web的平台,可以使用这个平台操作亚马逊云科技的各种云服务,通过用户名、密码可以登录到亚马逊云科技管理控制台。项目1.1—创建虚拟机与数据库1.1.1创建AWS访问账号AWS账号访问(2)CLI命令行界面让用户能够在命令行Shell中使用命令与亚马逊云科技服务进行交互。用户也可以通过Python语言调用亚马逊云科技的SDK程序操作云服务。这两种方式操作云服务时,需要创建IAM用户时生成的访问密钥(访问密钥ID(AccessKeyID)和秘密访问密钥(SecretAccessKey))。项目1.1—创建虚拟机与数据库1.1.1创建AWS访问账号创建IAM用户(1)使用根用户登录控制台,选择IAM服务。(2)添加用户,选择访问权限类型为“编程访问”以及“AWS管理控制台访问”,并设置控制台密码为自定义密码,点击“下一步:权限”。项目1.1—创建虚拟机与数据库1.1.1创建AWS访问账号(3)不添加权限,点击“下一步:标签”。(4)不添加标签,点击“下一步:审核”。项目1.1—创建虚拟机与数据库1.1.1创建AWS访问账号(5)审核创建的用户信息,点击“创建用户”。项目1.1—创建虚拟机与数据库1.1.1创建AWS访问账号保存AWS账号信息创建用户成功,账号的AccessKeyID(访问密钥ID)与AccessSecretKey(秘密访问密钥)包含在一个.csv文件中,下载这个文件后可以获取这些值。项目1.1—创建虚拟机与数据库1.1.2使用策略配置权限访问控制当IAM用户在AWS中发出请求时,AWS云服务会检查其是否具有权限。我们可以创建策略并将其附加到IAM身份或AWS资源上,以便管理AWS中的访问。策略是AWS中的JSON文档,在附加到身份或资源时,策略定义它们的权限。项目1.1—创建虚拟机与数据库1.1.2使用策略配置权限基于身份的策略和基于资源的策略策略是AWS中的对象;在与标识或资源相关联时,策略定义它们的权限。在创建权限策略以限制对资源的访问时,可以选择基于身份的策略或基于资源的策略。基于身份的策略可以附加到IAM用户、组或角色。这些策略可让您指定该身份可执行哪些操作(其权限)。基于资源的策略附加到某个资源。项目1.1—创建虚拟机与数据库1.1.2使用策略配置权限为用户分配权限的方式有三种:将用户添加到组、从现有用户复制权限、直接附加现有策略。项目1.1—创建虚拟机与数据库1.1.2使用策略配置权限直接附加现有策略(1)查看用户现有权限。(2)添加访问EC2实例的权限。项目1.1—创建虚拟机与数据库1.1.2使用策略配置权限直接附加现有策略(3)再次查看用户权限。项目1.1—创建虚拟机与数据库1.1.2使用策略配置权限将用户添加到组作为AWS最佳实践,我们可以将策略附加到组,然后使用户成为相应的组的成员。(1)创建组“EC2-Support”。(2)为EC2-Support组添加AmazonEC2FullAccess策略。项目1.1—创建虚拟机与数据库1.1.2使用策略配置权限(3)将用户加入EC2-Support组。(4)查看用户现有权限。项目1.1—创建虚拟机与数据库1.1.2使用策略配置权限从现有用户复制权限选择此选项可从现有用户将所有策略复制到新用户。项目1.1—创建虚拟机与数据库1.1.3创建AmazonEC2Linux虚拟机EC2服务AmazonElasticComputeCloud(AmazonEC2)在AWS云中提供可扩展的计算能力。使用AmazonEC2可避免前期的硬件投入,因此能够快速开发和部署应用程序。通过使用AmazonEC2,可以根据自身需要启动任意数量、类型的虚拟服务器、配置安全和网络以及管理存储。同时,将AmazonEC2与弹性伸缩组(AutoScalingGroup)搭配使用,可以根据工作负载的大小动态调整实例的数量,使成本与性能间取得更佳的平衡。项目1.1—创建虚拟机与数据库1.1.3创建AmazonEC2Linux虚拟机实例(Instance)AWS云中的虚拟服务器,每个实例的CPU处理能力、内存容量、存储大小和联网能力的组合情况各不相同,可以根据需求搭配不同的实例类型。Amazon系统映像(AMI)Amazon系统映像(AMI)是一种包含软件配置(例如,操作系统、应用程序服务器和应用程序)的模板,提供启动实例所需的信息。在启动实例时,必须指定AMI。项目1.1—创建虚拟机与数据库1.1.3创建AmazonEC2Linux虚拟机(1)使用IAM账号登录进入控制台(2)登录进入后选择EC2服务。(3)点击“启动实例”。1.发起实例启动项目1.1—创建虚拟机与数据库1.1.3创建AmazonEC2Linux虚拟机(1)选择Amazon系统映像(AMI)(2)选择实例类型2.启动实例项目1.1—创建虚拟机与数据库1.1.3创建AmazonEC2Linux虚拟机(3)配置实例详细信息(4)添加存储2.启动实例项目1.1—创建虚拟机与数据库1.1.3创建AmazonEC2Linux虚拟机(5)添加标签(6)配置安全组2.启动实例在本项目中以开发/测试为主要目的,因此可将来源IP设置为任何位置,但在生产环境建议限制来源IP的地址。项目1.1—创建虚拟机与数据库1.1.3创建AmazonEC2Linux虚拟机(7)核查实例启动,点击“启动”。创建新密钥对,并保存。2.启动实例项目1.1—创建虚拟机与数据库1.1.3创建AmazonEC2Linux虚拟机查看实例项目1.1—创建虚拟机与数据库1.1.3创建AmazonEC2Linux虚拟机3.连接实例(1)如果本地计算机操作系统是Linux或macOSXa)本地安装SSH客户端。b)终端窗口中,使用ssh命令连接实例,命令如下:ssh-i/path/my-key-pair.pemmy-instance-user-name@my-instance-public-dns-name其中/path/my-key-pair.pem代表私有密钥的本地路径和文件名(.pem);my-instance-user-name代表实例的用户名,对于AmazonLinux系统,用户名为ec2-user;my-instance-public-dns-name代表实例的公有DNS名称。项目1.1—创建虚拟机与数据库1.1.3创建AmazonEC2Linux虚拟机3.连接实例(2)如果本地计算机操作系统是Windowsa)本地安装PuTTY。b)使用PuTTY提供的工具PuTTYgen,将私有密钥my-key-pair.pem(.pem文件)转换为my-key-pair.ppk(.ppk文件)。项目1.1—创建虚拟机与数据库1.1.3创建AmazonEC2Linux虚拟机3.连接实例(2)如果本地计算机操作系统是Windowsc)使用PuTTY连接实例。启动PuTTY,在Category窗格中,选择Session,在HostName框中,输入实例的公有DNS。在Category窗格中,展开Connection,再展开SSH,然后选择Auth。完成以下操作:选择Browse,选择为密钥对生成的my-key-pair.ppk(.ppk文件),然后选择打开。项目1.1—创建虚拟机与数据库1.1.4创建AmazonRDSMySQL数据库AmazonRDSAmazonRelationalDatabaseService(AmazonRDS)是一项Web服务,让用户能够在AWS云中更轻松地设置、操作和扩展关系数据库。AmazonRDS提供六种常见的数据库引擎选项,包括AmazonAurora、MySQL、MariaDB、Oracle、MicrosoftSQLServer和PostgreSQL。它可以为用户提供经济实用的可调容量,并承担常见的数据库管理任务。项目1.1—创建虚拟机与数据库1.1.4创建AmazonRDSMySQL数据库1.发起RDS数据库实例启动(1)登录根账号,为IAM用户添“AmazonRDSFullAccess”策略。使用已有的IAM账号登录进入控制台。(2)打开AmazonRDS控制台。(3)创建MySQL数据库实例。项目1.1—创建虚拟机与数据库1.1.4创建AmazonRDSMySQL数据库2.启动实例(1)选择数据库引擎为MySQL(2)选择使用案例项目1.1—创建虚拟机与数据库1.1.4创建AmazonRDSMySQL数据库2.启动实例(3)指定数据库详细信息项目1.1—创建虚拟机与数据库1.1.4创建AmazonRDSMySQL数据库2.启动实例(4)配置高级设置项目1.1—创建虚拟机与数据库1.1.4创建AmazonRDSMySQL数据库2.启动实例(5)查看数据库实例(6)查看数据库实例的终端节点与端口项目1.1—创建虚拟机与数据库1.1.4创建AmazonRDSMySQL数据库3.用户管理数据库设计(1)连接数据库远程连接RDS数据库,使用命令:mysql-h<endpoint>-P3306-u<mymasteruser>-p其中<endpoint>为数据库的终端节点。也可以使用可视化工具(如Navicat)连接RDS数据库。项目1.1—创建虚拟机与数据库1.1.4创建AmazonRDSMySQL数据库3.用户管理数据库设计(2)创建数据库与数据表创建数据库usermanage,SQL语句如下:CREATEDATABASEusermanageDEFAULTCHARACTERSETutf8mb4DEFAULTCOLLATEutf8mb4_general_ci;项目1.1—创建虚拟机与数据库1.1.4创建AmazonRDSMySQL数据库3.用户管理数据库设计在usermanage数据库中创建数据表user,SQL语句如下:USEusermanage;CREATETABLEuser(idINTNOTNULLAUTO_INCREMENT,userVARCHAR(255),pwdVARCHAR(255),emailVARCHAR(255),PRIMARYKEY(id));项目1.1—创建虚拟机与数据库1.1.4创建AmazonRDSMySQL数据库3.用户管理数据库设计在表user中插入admin管理员用户,密码为1(用sha256加密),SQL语句如下:INSERTINTOuserVALUES(1,’admin’,’6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b’,’123@’);2项目1.2设计普通用户程序安装Python开发程序设计用户登录程序设计用户注册程序设计信息更新程序项目1.2设计普通用户程序1.2.1安装Python开发程序1.在EC2实例上安装Python运行环境使用yum程序包管理器安装,命令如下:yuminstallpython3-y2.使用pip安装Flask与PyMySQL命令如下:pipinstallflaskpipinstallpymysql项目1.2设计普通用户程序1.2.1安装Python开发程序3.Flask框架Flask是一个基于Python开发并且依赖jinja2模板和WerkzeugWSGI服务的一个微型框架,“微”意味着Flask旨在保持核心的简单,但同时又易于扩展。默认情况下,Flask不包含数据库抽象层、表单验证,或是其他任何已有多种库可以胜任的功能。然而,Flask支持用扩展来给应用添加这些功能。Flask的这些特性,使得它在Web开发方面变得非常流行。项目1.2设计普通用户程序1.2.2设计用户登录程序任务描述用户登录模块主要用于实现用户的登录。用户需要填写正确的用户名和密码,点击“登录”按钮,即可实现用户登录,跳转至相应的用户界面。如果输入的用户名或密码不正确,则提示错误。同时,在此页面上也可以点击“注册”按钮,进行新用户的注册。项目1.2设计普通用户程序1.2.2设计用户登录程序1.创建Flask项目在本地新建Flask项目app,其中包括app.py入口程序及两个子文件夹static和templates,static文件夹存放css/js静态资源,templates文件夹存放html模板文件。项目文件组织结构如下:/app/app.py/static/templates项目1.2设计普通用户程序1.2.2设计用户登录程序2.jQuery与layui框架jQuery是一个快速的、简洁的javaScript库。layui是一款采用自身模块规范编写的前端UI框架,遵循原生HTML/CSS/JS的书写与组织形式。我们可以借助jQuery与layui框架完成前端页面的开发。layui的使用可参考官方文档:/doc/。项目1.2设计普通用户程序1.2.2设计用户登录程序3.session的使用在Flask中使用session需配置“SECRET_KEY”,一般设置为24位的字符。代码如下:#从Flask模块导入sessionfromflaskimportsession#设置密钥app=Flask(__name__)app.secrect_key='A0Zr98j/3yXR~XHH!jmN]LWX/,?RT'或者随机数(os.urandom(24))项目1.2设计普通用户程序1.2.2设计用户登录程序4.jsonify的使用Flask提供了jsonify函数供用户处理返回的序列化json数据。代码如下:#从Flask模块导入jsonifyfromflaskimportjsonify5.PyMySQL的使用操作MySQL的基本流程:建立数据库连接、创建游标对象、执行SQL语句、关闭游标、关闭数据库连接。代码如下:importpymysql项目1.2设计普通用户程序1.2.2设计用户登录程序#连接数据库,参数分别是主机名或IP、用户名、密码、数据库名称、端口号、字符集db=pymysql.connect(host='',user='root',password=‘xxx',db='usermanage',port=3306,charset='utf8mb4')#操作数据库#使用cursor()方法创建一个游标对象curcur=db.cursor()#对数据库执行查询操作try:cur.execute("select*fromdemoTable")result=cur.fetchall()print("demoColumn1","demoColumn2")#关闭数据库连接db.close()项目1.2设计普通用户程序1.2.2设计用户登录程序6.用户登录页面index.html项目1.2设计普通用户程序1.2.2设计用户登录程序7.设计SHA256加密函数用户密码经过加密后存入数据库中,编写函数sha256_crypt实现加密功能,函数如下:defsha256_crypt(s):m=hashlib.sha256()b=s.encode(encoding='utf-8')m.update(b)sm=m.hexdigest()print(sm)returnsm项目1.2设计普通用户程序1.2.2设计用户登录程序8.设计用户登录Web程序用来完成用户登录及注册页面的跳转。用户登录时,要查询数据库,判断表单提交的用户名、密码是否存在,若存在,还需要判断该用户是否为管理员用户,主要结构如下:@app.route('/')defindex():"""用户登录页面"""returnrender_template('index.html')

@app.route('/login/',methods=['POST'])deflogin():"""用户登录"""user=request.form.get('user')pwd=request.form.get('pwd')con=con_db()cu=con.cursor()cu.execute("selectidfromuserwhereuser='%s'andpwd='%s'"%(user,sha256_crypt(pwd)))ifcu.fetchall():session['user']=userifuser=='admin':returnjsonify({'code':2,'msg':'登录成功'})returnjsonify({'code':0,'msg':'登录成功'})returnjsonify({'code':1,'msg':'账号密码错误,登录失败'})项目1.2设计普通用户程序1.2.3设计用户注册程序用户注册界面主要用于实现注册新用户功能。在该页面中,需要填写用户名、邮箱、密码和确认密码,同时要求用户名称必须是数字和字母的组合,email要验证有效性,密码和确认密码要一致。如果信息输入不完整或填写格式不符合要求,都将提示错误。项目1.2设计普通用户程序1.2.3设计用户注册程序1.正则表达式的使用用户在注册时,通过正则表达式验证用户名与邮箱的有效性。代码如下:user_rz=/^[0-9a-zA-Z]+$/#用户名是数字和字母的组合,且不能为空mail_rz=/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+$/#有效邮箱项目1.2设计普通用户程序1.2.3设计用户注册程序用户注册页面userreg.html项目1.2设计普通用户程序1.2.3设计用户注册程序设计用户注册程序@app.route('/user_reg/',methods=['POST','GET'])defuser_reg():"""用户注册页面"""returnrender_template('userreg.html')

@app.route('/reg/',methods=['POST'])defreg():"""用户注册"""user=request.form.get('user’)pwd=request.form.get('pwd')email=request.form.get('email')con=con_db()cu=con.cursor()cu.execute("selectidfromuserwhereuser=%s",(user,))ifcu.fetchall():returnjsonify({'code':1,'msg':'用户已存在’})cu.execute("insertintouser(user,pwd,email)values(%s,%s,%s)",(user,sha256_crypt(pwd),email))mit()returnjsonify({'code':0,'msg':'注册成功'})项目1.2设计普通用户程序1.2.4设计信息更新程序用户信息查看页面user.html用户信息更新页面userupdate.html项目1.2设计普通用户程序1.2.4设计信息更新程序设计用户信息查看程序@app.route('/user_index/')defuser_index():"""用户首页"""user=session.get('user')con=con_db()cu=con.cursor(pymysql.cursors.DictCursor)#获取用户信息cu.execute("selectuser,emailfromuserwhereuser=%s",(user,))data=cu.fetchall()ifdata:data=data[0]#返回用户页面returnrender_template('user.html',**data)项目1.2设计普通用户程序1.2.4设计信息更新程序设计用户信息更新程序@app.route('/user_update/')defuser_update():"""用户信息更新页面"""returnrender_template('userupdate.html')@app.route('/put/',methods=['POST','GET'])defput():"""用户信息更新"""con=con_db()cu=con.cursor(pymysql.cursors.DictCursor)user=session.get('user')email=request.form.get('email’)pwd=request.form.get('pwd’)print(user,pwd)ifpwd:cu.execute('updateusersetpwd=%swhereuser=%s',(sha256_crypt(pwd),user))ifemail:cu.execute('updateusersetemail=%swhereuser=%s',(email,user))mit()returnjsonify({'code':0,'msg':'修改成功'})3项目1.3设计管理员程序设计查看与查找用户程序设计删除用户程序设计重置用户密码程序项目1.3设计管理员程序1.3.1设计查看与查找用户程序管理员页面admin.html项目1.3设计管理员程序1.3.1设计查看与查找用户程序管理员程序@app.route('/admin_index/')defadmin_index():"""管理首页"""user=session.get('user')con=con_db()

cu=con.cursor(pymysql.cursors.DictCursor)returnrender_template('admin.html',**{})项目1.3设计管理员程序1.3.1设计查看与查找用户程序管理员程序@app.route('/get_list/',methods=['GET’])defauser():"""用户管理"""user=session.get('user’)sc=request.args.get('sc',None)page=int(request.args.get('page',1))limit=int(request.args.get('limit',10))print(sc)con=con_db()cu=con.cursor(pymysql.cursors.DictCursor)sql='selectcount(*)ctfromuserwhere1=1'sql1='select*fromuserwhere1=1'ifsc:sql+="anduserlike'%{}%'".format(sc)sql1+="anduserlike'%{}%'".format(sc)sql1+='groupbyid'sql1+='limit{},{}'.format((1)*limit,limit)print(sql)print(sql1)cu.execute(sql)ct=cu.fetchall()[0].get('ct’)cu.execute(sql1)data=cu.fetchall()returnjsonify({'code':0,'msg':'获取成功','data':data,'count':ct})项目1.3设计管理员程序1.3.2设计删除用户程序@app.route('/adel/',methods=['POST'])defadel():"""删除用户"""pid=request.form.get('pid')con=con_db()cu=con.cursor(pymysql.cursors.DictCursor)cu.execute("deletefromuserwhereid=%s",(pid,))mit()returnjsonify({'code':0,'msg':'删除成功'})项目1.3设计管理员程序1.3.3设计重置用户密码程序@app.route('/aput/',methods=['POST'])defaput():"""修改用户"""pid=request.form.get('pid')pwd=request.form.get('pwd')con=con_db()cu=con.cursor(pymysql.cursors.DictCursor)cu.execute("updateusersetpwd=%swhereid=%s",(sha256_crypt(pwd),pid))mit()returnjsonify({'code':0,'msg':'修改成功'})4项目1.4部署应用程序到EC2

云端实例将普通用户程序部署到EC2云端实例将管理员程序部署到EC2云端实例项目1.4部署应用程序到EC2云端实例将程序部署到EC2云端实例在项目1.1中,我们已经完成AmazonEC2的创建,在项目1.2中我们已经完成普通用户程序的设计,在项目1.3中我们已经完成管理员程序的设计,接下来将所有开发好的程序上传至EC2云端实例。项目1.4部署应用程序到EC2云端实例将程序部署到EC2云端实例根据本地操作系统的不同,选择SCP命令或PSCP命令将Flask项目文件app传输到EC2云端实例。项目1.4部署应用程序到EC2云端实例将程序部署到EC2云端实例(1)如果本地计算机操作系统是Linux或macOSX使用SCP将文件传输到云服务器。例如,如果私有密钥文件的名称为my-key-pair,要传输的文件为SampleFile.txt,实例的用户名为my-instance-user-name,实例的公有DNS名称为my-instance-public-dns-name,在终端窗口中,输入以下命令可将该文件复制到my-instance-user-name主目录中:scp-i/path/my-key-pair.pem/path/SampleFile.txtmy-instance-user-name@my-instance-public-dns-name:~项目1.4部署应用程序到EC2云端实例将程序部署到EC2云端实例(2)如果本地计算机操作系统是Windows使用PuTTY安全复制客户端将文件传输到云服务器。PuTTY安全复制客户端(PSCP)是一个命令行工具,可用于在Windows计算机和Linux实例之间传输文件。要使用PSCP,需要使用通过PuTTYgen转换生成的私有密钥(.ppk文件)以及Linux实例的公有DNS名称。以下示例将Sample_file.txt文件从Windows计算机上的C:\驱动器传输到AmazonLinux实例上的my-instance-user-name主目录。要传输文件,可使用以下命令:pscp-iC:\path\my-key-pair.ppkC:\path\Sample_file.txtmy-instance-user-name@my-instance-public-dns-name:/home/my-instance-user-name/Sample_file.txt5项目1.5综合实训—我的云服务器项目功能项目要点项目实施项目测试项目1.5综合实训

我的云服务器项目功能这个项目由三部分组成。1.AmazonEC2Linux虚拟机的创建把Web开发程序部署在EC2Linux实例上,创建我们的云服务器。2.AmazonRDSMySQL数据库的创建3.普通用户与管理员Web程序开发这个Web程序向普通用户与管理员用户提供不同的功能。普通用户可以注册并登录,登录后能查看到用户信息,并且可修改注册邮箱与密码。数据库中内置管理员admin用户,管理员登录后可查看所有注册用户信息,可删除用户,也可以修改用户密码。项目1.5综合实训

我的云服务器项目要点这个综合项目实际上是前面各个项目的综合应用。首先创建能访问EC2与RDS服务的AWS账号,分别创建AmazonEC2Linux实例与AmazonRDSMySQL数据库实例,在本地完成Web程序开发,数据库使用RDSMySQL,最终将Web开发程序部署至云服务器上,完成我们的第一个云服务器的搭建。项目1.5综合实训

我的云服务器项目实施1.创建AWS访问账号并配置权限(1)登录AWS官网注册账号;(2)创建IAM用户,为该用户配置AmazonEC2FullAccess、AmazonRDSFullAccess策略。项目1.5综合实训

我的云服务器项目实施2.创建AmazonEC2Linux虚拟机(1)使用IAM用户登录进入控制台;(2)创建EC2实例,并在本地保存好密钥对(.pem文件);(3)连接EC2实例;(4)在EC2实例上安装Python运行环境;(5)在EC2实例上安装Flask与PyMySQL。项目1.5综合实训

我的云服务器项目实施3.创建AmazonRDSMySQL数据库(1)使用IAM用户登录进入控制台;(2)创建数据库实例,数据库引擎选择MySQL,可用区设置为与EC2实例相同;(3)连接RDSMySQL数据库,创建用户数据库usermanage,创建表user,里面包含用户ID(id)、用户名称(user)、密码(pwd)和email四个字段,id为主键。项目1.5综合实训

我的云服务器项目实施4.创建Flask项目在本地创建Flask项目app,入口程序主程序app.py,将下载好的layui组件、jQuery库存放在static文件夹中,html模板文件存放在templates文件夹中。目录结构如下:/app/app.py/static/lib/layui/jquery-1.12.4.js/templates项目1.5综合实训

我的云服务器项目实施5.创建Web程序开发各个网页模板文件(1)用户登录模板index.html(2)用户注册模板userreg.html(3)用户信息查看模板user.html(4)用户信息更新模板userupdate.html(5)管理员模板admin.html6.Web开发主程序app.py项目1.5综合实训

我的云服务器项目实施7.编辑安全组使用控制台编辑EC2主机安全组,添加一条入站规则,允许5000端口开放给/0。8.将Web应用程序部署到EC2云端实例根据本地操作系统的不同,选择SCP命令或PSCP命令将Flask项目文件app上传至EC2云端实例。项目1.5综合实训

我的云服务器项目测试1.连接EC2实例2.运行服务器使用python命令运行app.py,即:pythonapp.py那么就可以在互联网上使用这个服务器了。3.测试运行在互联网,使用http://EC2实例外网地址:5000访问,最后完成发布程序的应用测试。项目1.5综合实训

我的云服务器项目测试用户登录页面用户注册页面用户信息查看页面用户信息更新页面项目1.5综合实训

我的云服务器项目测试使用管理员用户admin登录,可以查看、查询、删除、修改用户信息.谢谢观看

云应用开发实战单元2我的有声图书2.1使用AmazonPolly语音服务2.2设计图书管理程序2.3综合实训

我的有声图书知识目标:掌握文字转语音的基本知识掌握AmazonPolly服务知识掌握AmazonRDS数据库存储知识掌握PythonSDK与Amazon服务知识掌握FlaskWeb程序设计知识掌握HTML5语音文件的播放知识能力目标:能创建有AmazonPolly权限的AWS账号能使用AmazonRDS数据库进行数据存储能使用Flask编写图书的管理程序能在Web页面对图书数据进行分页管理能使用AmazonPolly进行文字转语音能使用Flask编写语音管理与下载的程序能使用HTML5在线播放语音项目2.1使用AmazonPolly语音服务创建AmazonPolly访问账号使用AmazonPolly语音服务使用boots访问AWS服务设计AmazonPolly应用程序2.1.1创建AmazonPolly访问账号任务描述ASWPolly是一个文字转语音的服务,要使用这个服务就必须先创建一个有访问这个服务权限的账号。知识要点AWS的账号可以通过三种方式访问AWS的云资源,一是控制台(图形化界面),二是CLI(命令行),三是SDK(编程访问)。AWS账号主要有两个用途,一个用于网页登录AWS控制台(Console),另外一个是使用程序访问AWS服务,因此AWS账号有两种类型。项目2.1—创建虚拟机与数据库1.AWS控制台账号AWS控制台是一个网页界面的操作平台,可以使用这个平台操作AWS的各种云服务。AWS控制台账号包括账号名称账号密码,使用它可以登录到AWS控制台。2.AWS程序账号除了可以使用AWSConsole控制台操作云服务外,我们还可以使用Python语言调用AWS的SDK用程序操作云服务,那么要使用AWS程序账号,这种账号包含一个访问密钥ID(AccessKeyID)和一个私有访问密钥(AccessSecretKey)。项目2.1—创建虚拟机与数据库三、任务实施1.创建AWS访问账号创建一个AWS的账号,例如名称为“polly.audio.user”,并配置它的策略使得它有对Polly和S3的全权访问权利。⑴管理员进入AWS服务控制台,选择IAM创建用户,输入用户名称"polly.audio.user",并选择,编程访问,'与,'AWS管理控制台访问设置控制台访问密码,如图2-1-1所示。项目2.1—创建虚拟机与数据库图2-1-1添加账号项目2.1—创建虚拟机与数据库(2)选择“直接附加现有策略“,然后选择“AmazonPollyFullAccess”策略,如图2-1-2所示。图2-1-2选择策略项目2.1—创建虚拟机与数据库(3)直接下一步,最后看到账号的审核,如图2-1-3所示,确定无误后直接点击“创建用户”即可创建该用户账号。图2-1-3审核账号项目2.1—创建虚拟机与数据库2.保存AWS账号信息接下来显示创建用户成功,并显示账号信息,如图2-1-4所示。在图中有一个,'下载.csv''文件的按钮,点击后下载一个名称为accessKeys.csv的文件,这个CSV文件有两行,格式如下:项目2.1—创建虚拟机与数据库第一行是Key的类型,它们使用逗号分开,第二行就是对应的值,我们可以通过读这个CSV文件得到各个值。图2-1-4账号信息项目2.1—创建虚拟机与数据库任务2.1.2使用AmazonPolly语音服务任务描述AmazonPolly是基于人工智能的服务,它能把一段文字朗读出语音,并提供语音文件的下载。知识要点1.认识AmazonPollyAmazonPolly是一种将文本转换为逼真语音的服务,它允许创建能够说话的应用程序,并构建全新类别的支持语音功能的产品。Polly的文本转语音(TTS)服务使用高级深度学习技术来合成听起来像自然人类语言的语音。AmazonPolly提供众多语言的几十种逼真语音,可以构建适用于许多不同国家/地区的具有语音功能的应用程序。项目2.1—创建虚拟机与数据库2.AmazonPolly文字转语音给定一段不是太长的中文或者英文文本,AmazonPolly会立即把该文字转为语音,并可以立即播放该语音。如果文本太长,那么ASWPolly会启动一个异步的任务,把转好的语音文件存储到AWSS3的存储桶中。是同步还是异步只取决于调用的接口,在控制台上看起来是自动的,其实是控制台自动区分了,并调用了不同的接口。项目2.1—创建虚拟机与数据库三、任务实施1.登录AWS控制台使用前面创建的polly.audio.user账号登录到AWS控制台,找到AmazonPolly服务。2.使用AmazonPolly服务

点击打开AmazonPolly服务,如图2-1-5所示,这个界面提供了几个功能:

⑴输入一段文字,点击“收听语音”,就可以听到这段文字的语音。

项目2.1—创建虚拟机与数据库(2)使用”语言与区域“可以选择不同的语言,例如中文或者英文。(3)使用“语音”可以选择不同人的声音,例如男声或者女声。(4)点击”下载MP3”可以下载语音的MP3文件。(5)点击,,纯文本"或者"SSML“可以选择要转换的文本格式。项目2.1—创建虚拟机与数据库图2-1-5Amazon

Polly服务

但是注意一点Polly只能现场转换不太长的文本(大约3000字符以内),太长的文本转换比较耗时,Polly会启动一个后台的任务进行异步转换,转换好的语言文件会自动存储到AWSS3的一个存储桶中。项目2.1—创建虚拟机与数据库任务2.1.3使用boto3访问AWS服务一、任务描述

使用AWS的Python程序SDK,编写程序调用Polly服务把文字转为语音。二、知识要点1.AWSSDK

AWS的服务不但可以使用控制台操作,而且AWS提供各种常用编程语言的SDK,我们可以利用SDK编写程序访问AWS的各种服务,如图2-1-6所示。项目2.1—创建虚拟机与数据库图2-1-6AWSSDK从图中可以看到AWS的Python的SDK名称为boto3,要使用Python编写程序访问AWS服务就必须先安装boto3库。2.使用AWS账号AWS账号的AccessKeyID与SecretAccessKey信息存储在accessKeys.csv文件中,编写函数readKeys读出。项目2.1—创建虚拟机与数据库 3.创建客户端对象Python使用boto3包的函数库访问AWS。创建客户端对象基本方法是boto3.client方法,并传递aws_access_key_id与aws_access_secret_key以及region_name参数,例如使用前面的cloud.disk.user账号创建client如下:项目2.1—创建虚拟机与数据库 4.文本转语音

使用Python调用Boto3中的synthesize_speech函数可以实现文本转语音,该函数有许多参数。项目2.1—创建虚拟机与数据库三、任务实施安装boto3Python访问AWS的库是boto3,使用pip命令先安装这个包:在安装完毕后就可以编写程序调用AWS的APL。

项目2.1—创建虚拟机与数据库

2.查看boto3文档

怎么样使用boto3编写访问AWS服务的程序呢?实际上可以查看boto3的技术文档,网址是:https://boto3.amazonaws.eom/v:l/documentation/api/latest/index.html。

项目2.1—创建虚拟机与数据库

3.编写程序程序中语句18-24是实现语音转换的关键语句项目2.1—创建虚拟机与数据库任务2.1.4设计AmazonPolly应用程序一、任务描述AmazonPolly控制台是一个Web程序,我们使用Flask也可以创建一个类似的程序,模仿AmazonPolly的控制台那样工作。二、知识要点Flask界面模版创建一个模版程序polly.html,它包含一个文本输入框,一个语言选择框,一个转语音的按钮,一个下载MP3文件的按钮项目2.1—创建虚拟机与数据库2.设计Flask服务器Flask服务器server.py复制显示polly.html模版网页,当用户输入文字提交时接收用户的输入,根据用户选择的语言与输入的文字调用一个文字转语音的函数convertToAudio把文字转为语音。转换的语音文件命名为audio.mp3,存储在Flask的静态文件夹static中。

项目2.1—创建虚拟机与数据库三、任务实施编写polly.html网页模版在这个网页文件中添加了JavaScript控制函数,使得在选择中文或者英文时由例句自动出现,不需要用户自己输入。2.编写server.py服务器函数index是程序的入口,用户使用它的界面提交文本,函数converttoaudio负责把文字转为mp3的语音文件,函数download负责下载这个语音文件。项目2.1—创建虚拟机与数据库测试程序执行server.py服务器程序,效果如图2-1-7所示,选择中文或者英文,输入文字后点击”提交“就可以把文字转为语音,并且可以在网页上播放这个语音,点击”下载”便可以下载这个audio.mp3语音文件。项目2.1—创建虚拟机与数据库图2-1-7文字转语音到目前为止我们已经知道怎么样把一段文字转为语音,接下来我们来做一个图书管理程序,该程序管理一系列的图书,程序把这些图书转为语音,就做成了有声图书网站了。项目2.1—创建虚拟机与数据库项目2.2设计图书管理程序设计图书存储数据库设计图书增加程序设计图书浏览与删除程序设计图书编辑程序任务2.2.1设计图书存储数据库一、任务描述MySql数据库是常用的一种关系数据库,AWS云提供了MySql的服务,我们将在这个有声图书项目使用它存储图书的数据。项目2.2—设计图书管理程序二、知识要点AmazonRDS服务

AmazonRelationalDatabaseService(AmazonRDS)能够在云中轻松设置、操作和扩展关系数据库。它在自动执行耗时的管理任务(如硬件预置、数据库设置、修补和备份)的同时,可提供经济实用的可调容量。AmazonRDS在多种类型的数据库实例(针对内存、性能或I/O进行了优化的实例)上均可用,并提供六种常用的数据库引擎供您选择,包括AmazonAurora>PostgreSQL、MySQL、MariaDB、OracleDatabase和SQLServer。项目2.2—设计图书管理程序2.创建MySql数据库实例MySql数据库是最常用的数据库之一,要使用AmazonRDS中的MySql数据库就必须先创建一个MySql数据库实例,并获取它的服务器地址。项目2.2—设计图书管理程序三、任务实施1.创建数据库实例创建MySql实例非常简单,进入AWS服务选择RDS后选择MySql数据库,在创建时输入数据库实例名称(例如MySql),访问用户名称(例如root)以及访问密码,如图2-2-1所示。图2-2-1设置数据库项目2.2—设计图书管理程序图2-2-2数据库地址2.获取数据库服务器数据库创建完成后可以看到其访问的主机地址(Endpoint),其中端口(Port)为3306,这是MySql数据库的默认端口,如图2-2-2所示。项目2.2—设计图书管理程序图2-2-3设置权限设置数据库访问权限为了能更好第使用这个数据库实例,需要设置它的inbound与outbound的规则为0000/0,即允许从任何IP地址的服务器访问该数据库,如图2-2-3所示。项目2.2—设计图书管理程序4.保存数据库信息复制出这个地址把它保存起来,它是将来使用程序进行数据库访问的主机地址,可以把数据库地址,用户,密码等保存到一个mySql.csv的文件中,该文件包含两行数据,数据之间用逗号隔开,格式如下:其中第一行是标题,第二行是对应的数据。项目2.2—设计图书管理程序5.创建图书数据库这个数据库可以命名为audiobooks,创建一张图书表格books如下:其中BID是图书的ID编号,自动增加,关键字;title是图书的标题,不可以重复;author是图书的作者;language是存储的文本的语言,可以是英文或者中文;contents是一个longtext类型,存储图书的文字内容;image是图书的封面图像文件名称;audio是图书的语音文件名称。为了简化程序我们假定图书不再划分章节,如果要划分章节就需要另外创建一张关联的章节表格。

项目2.2—设计图书管理程序任务2.2.2设计图书增加程序一、任务描述要做一个有声图书网站就必须先增加图书,只有在数据库中存储了图书后才能存储它的章节。二、知识要点1.设计增加图书的网页

这个增加网页命名为insertBook.html,表单中包括一个图书名称或者标题的输入框title、图书作者输入框author、语言选择下列列表框yList、文本输入框contents等,还包括图书封面图像显示的<img>元素与语音播放的<audio>元素项目2.2—设计图书管理程序2.设计文本转语音的程序

设计一个audio.py的文件,在这个文件中设计AudioClass管理文本转语音的功能,其中的converToAudio函数3.设计增加图书的数据库程序创建一个数据库管理程序database.py,在其中设计BookDatabase类管理数据库,创建一个insertBook的函数负责增加一本图书记录。注意在books表中有一个BID是图书的关键字,这个BID只有在新记录插入后才能确定它的值,因此插入后立即获取BID值,再根据这个BID值确定该图书的封面图像文件与语音文件的名称。图像文件与语音文件都按图书的BID编号扩展为6位的文件名存储在static文件夹。例如BID=1的图书,那么语音文件为000001.mp3,图像文件为00000.1jpg。项目2.2—设计图书管理程序4.设计增加图书Web程序增加图书的web接口是它在服务器server.py中处理5.测试程序

执行server.py服务器,使用:5000/insertBook

地址访问,结果如图2-2-5所示,增加成功后就可以点击播放其语音。项目2.2—设计图书管理程序任务2.2.3设计浏览和删除图书程序一、任务描述增加了部分图书后,怎么样取查看到目前有什么图书呢,该任务就是设计一个查看程序。如果图书很多,查看程序应该对图书进行分页和分类,为了简单起见目前这个查看程序只做简单的罗列,不进行分页分类。项目2.2—设计图书管理程序1.设计浏览图书模版设计一个selectBook.html的模版,把每本图书放在一个<div>块中,每个图书<div>块是一个display:inline-block的布局,这样多个图书<div>块又放在一个大的<div>块中,使得图书会从左到右,从上到下依次排列2.设计服务器程序服务器的接口是“/selectBooku,这个页面主要是管理员管理图书,主要程序如下:二、知识要点项目2.2—设计图书管理程序项目2.2—设计图书管理程序该函数如果检测到cmd为delete,就使用deleteBook函数删除这本图书,然后使用listBook函数获取所有图书books类别,传递到selectBook.html中显示。项目2.2—设计图书管理程序3.设计删除图书程序删除图书时不但要从books表删除该图书记录,还要删除该图书相关联的图像文件以及语音文件。由于图像文件雨语音文件时按BID号形成的jpg与mp3文件,因此给定BID号后就可以删除它们。项目2.2—设计图书管理程序图2-2-6浏览与删除图书4.测试程序

执行server.py服务器,使用:5000/selectBook

地址访问,结果如图2-2-6所示。项目2.2—设计图书管理程序任务2.2.4设计图书编辑程序一、任务描述有些图书信息是错误的,需要修改,这个任务就是在查看图书的页面中增加一个修改功能。二、知识要点图书编辑页面模版与增加

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论