云應(yīng)用開(kāi)發(fā)實(shí)戰(zhàn) 課件全套 單元1-5 我的云服務(wù)器-我的云盤(pán)_第1頁(yè)
云應(yīng)用開(kāi)發(fā)實(shí)戰(zhàn) 課件全套 單元1-5 我的云服務(wù)器-我的云盤(pán)_第2頁(yè)
云應(yīng)用開(kāi)發(fā)實(shí)戰(zhàn) 課件全套 單元1-5 我的云服務(wù)器-我的云盤(pán)_第3頁(yè)
云應(yīng)用開(kāi)發(fā)實(shí)戰(zhàn) 課件全套 單元1-5 我的云服務(wù)器-我的云盤(pán)_第4頁(yè)
云應(yīng)用開(kāi)發(fā)實(shí)戰(zhàn) 課件全套 單元1-5 我的云服務(wù)器-我的云盤(pán)_第5頁(yè)
已閱讀5頁(yè),還剩442頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

云應(yīng)用開(kāi)發(fā)實(shí)戰(zhàn)單元1-我的云服務(wù)器項(xiàng)目1.1創(chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)項(xiàng)目1.2設(shè)計(jì)普通用戶(hù)程序項(xiàng)目1.3設(shè)計(jì)管理員程序項(xiàng)目1.4部署應(yīng)用程序到EC2云端實(shí)例項(xiàng)目1.5綜合實(shí)訓(xùn)—我的云服務(wù)器單元3—航班數(shù)據(jù)采集及可視化分析知識(shí)目標(biāo):掌握亞馬遜云科技賬號(hào)密鑰知識(shí)掌握亞馬遜云科技賬號(hào)的權(quán)限策略知識(shí)掌握AmazonEC2服務(wù)知識(shí)掌握Linux操作系統(tǒng)知識(shí)掌握Python在Linux中的開(kāi)發(fā)知識(shí)掌握FlaskWeb程序的開(kāi)發(fā)知識(shí)掌握SHA256加密知識(shí)掌握FlaskWeb操作數(shù)據(jù)庫(kù)的知識(shí)掌握正則表達(dá)式數(shù)據(jù)驗(yàn)證知識(shí)掌握AmazonEC2虛擬機(jī)知識(shí)

能力目標(biāo):能創(chuàng)建亞馬遜云科技賬號(hào)并獲取密鑰能使用策略配置賬號(hào)權(quán)限能使用AmazonEC2服務(wù)創(chuàng)建Linux虛擬機(jī)能在Linux中搭建Python開(kāi)發(fā)運(yùn)行環(huán)境能使用Flask開(kāi)發(fā)簡(jiǎn)單的Web程序能使用正則表達(dá)式驗(yàn)證數(shù)據(jù)的有效性能使用SHA256對(duì)密碼進(jìn)行加密存儲(chǔ)能使用Flask進(jìn)行數(shù)據(jù)庫(kù)的基本讀寫(xiě)操作能使用分頁(yè)的方式顯示數(shù)據(jù)能使用AmazonRDS創(chuàng)建MySQL數(shù)據(jù)庫(kù)實(shí)例項(xiàng)目1.1創(chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)創(chuàng)建AWSIAM用戶(hù)使用策略配置權(quán)限創(chuàng)建AmazonEC2Linux虛擬機(jī)創(chuàng)建AmazonRDSMySQL數(shù)據(jù)庫(kù)項(xiàng)目1.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)1.1.1創(chuàng)建AWS訪(fǎng)問(wèn)賬號(hào)任務(wù)描述我們要使用AWS的云服務(wù),就必須先有一個(gè)能操作云服務(wù)的賬號(hào),這個(gè)任務(wù)目的就是引導(dǎo)大家創(chuàng)建一個(gè)AWS賬號(hào)。項(xiàng)目1.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)1.1.1創(chuàng)建AWS訪(fǎng)問(wèn)賬號(hào)IAM服務(wù)AWSIdentityandAccessManagement(IAM)是一項(xiàng)AWS的托管服務(wù),為使用AmazonWebServices(AWS)的客戶(hù)在AWS中管理用戶(hù)和用戶(hù)權(quán)限。借助IAM,可以集中管理用戶(hù)、訪(fǎng)問(wèn)密鑰等安全憑證,以及用于管理用戶(hù)訪(fǎng)問(wèn)AWS資源的權(quán)限。項(xiàng)目1.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)1.1.1創(chuàng)建AWS訪(fǎng)問(wèn)賬號(hào)AWS賬號(hào)訪(fǎng)問(wèn)IAM用戶(hù)訪(fǎng)問(wèn)亞馬遜云科技的方式主要有三種,管理控制臺(tái)、CLI命令行界面和SDK編程訪(fǎng)問(wèn)。在創(chuàng)建用戶(hù)時(shí),可以按照需求進(jìn)行選擇。(1)管理控制臺(tái)是一個(gè)基于Web的平臺(tái),可以使用這個(gè)平臺(tái)操作亞馬遜云科技的各種云服務(wù),通過(guò)用戶(hù)名、密碼可以登錄到亞馬遜云科技管理控制臺(tái)。項(xiàng)目1.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)1.1.1創(chuàng)建AWS訪(fǎng)問(wèn)賬號(hào)AWS賬號(hào)訪(fǎng)問(wèn)(2)CLI命令行界面讓用戶(hù)能夠在命令行Shell中使用命令與亞馬遜云科技服務(wù)進(jìn)行交互。用戶(hù)也可以通過(guò)Python語(yǔ)言調(diào)用亞馬遜云科技的SDK程序操作云服務(wù)。這兩種方式操作云服務(wù)時(shí),需要?jiǎng)?chuàng)建IAM用戶(hù)時(shí)生成的訪(fǎng)問(wèn)密鑰(訪(fǎng)問(wèn)密鑰ID(AccessKeyID)和秘密訪(fǎng)問(wèn)密鑰(SecretAccessKey))。項(xiàng)目1.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)1.1.1創(chuàng)建AWS訪(fǎng)問(wèn)賬號(hào)創(chuàng)建IAM用戶(hù)(1)使用根用戶(hù)登錄控制臺(tái),選擇IAM服務(wù)。(2)添加用戶(hù),選擇訪(fǎng)問(wèn)權(quán)限類(lèi)型為“編程訪(fǎng)問(wèn)”以及“AWS管理控制臺(tái)訪(fǎng)問(wèn)”,并設(shè)置控制臺(tái)密碼為自定義密碼,點(diǎn)擊“下一步:權(quán)限”。項(xiàng)目1.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)1.1.1創(chuàng)建AWS訪(fǎng)問(wèn)賬號(hào)(3)不添加權(quán)限,點(diǎn)擊“下一步:標(biāo)簽”。(4)不添加標(biāo)簽,點(diǎn)擊“下一步:審核”。項(xiàng)目1.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)1.1.1創(chuàng)建AWS訪(fǎng)問(wèn)賬號(hào)(5)審核創(chuàng)建的用戶(hù)信息,點(diǎn)擊“創(chuàng)建用戶(hù)”。項(xiàng)目1.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)1.1.1創(chuàng)建AWS訪(fǎng)問(wèn)賬號(hào)保存AWS賬號(hào)信息創(chuàng)建用戶(hù)成功,賬號(hào)的AccessKeyID(訪(fǎng)問(wèn)密鑰ID)與AccessSecretKey(秘密訪(fǎng)問(wèn)密鑰)包含在一個(gè).csv文件中,下載這個(gè)文件后可以獲取這些值。項(xiàng)目1.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)1.1.2使用策略配置權(quán)限訪(fǎng)問(wèn)控制當(dāng)IAM用戶(hù)在AWS中發(fā)出請(qǐng)求時(shí),AWS云服務(wù)會(huì)檢查其是否具有權(quán)限。我們可以創(chuàng)建策略并將其附加到IAM身份或AWS資源上,以便管理AWS中的訪(fǎng)問(wèn)。策略是AWS中的JSON文檔,在附加到身份或資源時(shí),策略定義它們的權(quán)限。項(xiàng)目1.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)1.1.2使用策略配置權(quán)限基于身份的策略和基于資源的策略策略是AWS中的對(duì)象;在與標(biāo)識(shí)或資源相關(guān)聯(lián)時(shí),策略定義它們的權(quán)限。在創(chuàng)建權(quán)限策略以限制對(duì)資源的訪(fǎng)問(wèn)時(shí),可以選擇基于身份的策略或基于資源的策略?;谏矸莸牟呗钥梢愿郊拥絀AM用戶(hù)、組或角色。這些策略可讓您指定該身份可執(zhí)行哪些操作(其權(quán)限)?;谫Y源的策略附加到某個(gè)資源。項(xiàng)目1.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)1.1.2使用策略配置權(quán)限為用戶(hù)分配權(quán)限的方式有三種:將用戶(hù)添加到組、從現(xiàn)有用戶(hù)復(fù)制權(quán)限、直接附加現(xiàn)有策略。項(xiàng)目1.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)1.1.2使用策略配置權(quán)限直接附加現(xiàn)有策略(1)查看用戶(hù)現(xiàn)有權(quán)限。(2)添加訪(fǎng)問(wèn)EC2實(shí)例的權(quán)限。項(xiàng)目1.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)1.1.2使用策略配置權(quán)限直接附加現(xiàn)有策略(3)再次查看用戶(hù)權(quán)限。項(xiàng)目1.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)1.1.2使用策略配置權(quán)限將用戶(hù)添加到組作為AWS最佳實(shí)踐,我們可以將策略附加到組,然后使用戶(hù)成為相應(yīng)的組的成員。(1)創(chuàng)建組“EC2-Support”。(2)為EC2-Support組添加AmazonEC2FullAccess策略。項(xiàng)目1.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)1.1.2使用策略配置權(quán)限(3)將用戶(hù)加入EC2-Support組。(4)查看用戶(hù)現(xiàn)有權(quán)限。項(xiàng)目1.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)1.1.2使用策略配置權(quán)限從現(xiàn)有用戶(hù)復(fù)制權(quán)限選擇此選項(xiàng)可從現(xiàn)有用戶(hù)將所有策略復(fù)制到新用戶(hù)。項(xiàng)目1.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)1.1.3創(chuàng)建AmazonEC2Linux虛擬機(jī)EC2服務(wù)AmazonElasticComputeCloud(AmazonEC2)在AWS云中提供可擴(kuò)展的計(jì)算能力。使用AmazonEC2可避免前期的硬件投入,因此能夠快速開(kāi)發(fā)和部署應(yīng)用程序。通過(guò)使用AmazonEC2,可以根據(jù)自身需要啟動(dòng)任意數(shù)量、類(lèi)型的虛擬服務(wù)器、配置安全和網(wǎng)絡(luò)以及管理存儲(chǔ)。同時(shí),將AmazonEC2與彈性伸縮組(AutoScalingGroup)搭配使用,可以根據(jù)工作負(fù)載的大小動(dòng)態(tài)調(diào)整實(shí)例的數(shù)量,使成本與性能間取得更佳的平衡。項(xiàng)目1.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)1.1.3創(chuàng)建AmazonEC2Linux虛擬機(jī)實(shí)例(Instance)AWS云中的虛擬服務(wù)器,每個(gè)實(shí)例的CPU處理能力、內(nèi)存容量、存儲(chǔ)大小和聯(lián)網(wǎng)能力的組合情況各不相同,可以根據(jù)需求搭配不同的實(shí)例類(lèi)型。Amazon系統(tǒng)映像(AMI)Amazon系統(tǒng)映像(AMI)是一種包含軟件配置(例如,操作系統(tǒng)、應(yīng)用程序服務(wù)器和應(yīng)用程序)的模板,提供啟動(dòng)實(shí)例所需的信息。在啟動(dòng)實(shí)例時(shí),必須指定AMI。項(xiàng)目1.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)1.1.3創(chuàng)建AmazonEC2Linux虛擬機(jī)(1)使用IAM賬號(hào)登錄進(jìn)入控制臺(tái)(2)登錄進(jìn)入后選擇EC2服務(wù)。(3)點(diǎn)擊“啟動(dòng)實(shí)例”。1.發(fā)起實(shí)例啟動(dòng)項(xiàng)目1.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)1.1.3創(chuàng)建AmazonEC2Linux虛擬機(jī)(1)選擇Amazon系統(tǒng)映像(AMI)(2)選擇實(shí)例類(lèi)型2.啟動(dòng)實(shí)例項(xiàng)目1.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)1.1.3創(chuàng)建AmazonEC2Linux虛擬機(jī)(3)配置實(shí)例詳細(xì)信息(4)添加存儲(chǔ)2.啟動(dòng)實(shí)例項(xiàng)目1.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)1.1.3創(chuàng)建AmazonEC2Linux虛擬機(jī)(5)添加標(biāo)簽(6)配置安全組2.啟動(dòng)實(shí)例在本項(xiàng)目中以開(kāi)發(fā)/測(cè)試為主要目的,因此可將來(lái)源IP設(shè)置為任何位置,但在生產(chǎn)環(huán)境建議限制來(lái)源IP的地址。項(xiàng)目1.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)1.1.3創(chuàng)建AmazonEC2Linux虛擬機(jī)(7)核查實(shí)例啟動(dòng),點(diǎn)擊“啟動(dòng)”。創(chuàng)建新密鑰對(duì),并保存。2.啟動(dòng)實(shí)例項(xiàng)目1.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)1.1.3創(chuàng)建AmazonEC2Linux虛擬機(jī)查看實(shí)例項(xiàng)目1.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)1.1.3創(chuàng)建AmazonEC2Linux虛擬機(jī)3.連接實(shí)例(1)如果本地計(jì)算機(jī)操作系統(tǒng)是Linux或macOSXa)本地安裝SSH客戶(hù)端。b)終端窗口中,使用ssh命令連接實(shí)例,命令如下: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代表實(shí)例的用戶(hù)名,對(duì)于AmazonLinux系統(tǒng),用戶(hù)名為ec2-user;my-instance-public-dns-name代表實(shí)例的公有DNS名稱(chēng)。項(xiàng)目1.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)1.1.3創(chuàng)建AmazonEC2Linux虛擬機(jī)3.連接實(shí)例(2)如果本地計(jì)算機(jī)操作系統(tǒng)是Windowsa)本地安裝PuTTY。b)使用PuTTY提供的工具PuTTYgen,將私有密鑰my-key-pair.pem(.pem文件)轉(zhuǎn)換為my-key-pair.ppk(.ppk文件)。項(xiàng)目1.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)1.1.3創(chuàng)建AmazonEC2Linux虛擬機(jī)3.連接實(shí)例(2)如果本地計(jì)算機(jī)操作系統(tǒng)是Windowsc)使用PuTTY連接實(shí)例。啟動(dòng)PuTTY,在Category窗格中,選擇Session,在HostName框中,輸入實(shí)例的公有DNS。在Category窗格中,展開(kāi)Connection,再展開(kāi)SSH,然后選擇Auth。完成以下操作:選擇Browse,選擇為密鑰對(duì)生成的my-key-pair.ppk(.ppk文件),然后選擇打開(kāi)。項(xiàng)目1.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)1.1.4創(chuàng)建AmazonRDSMySQL數(shù)據(jù)庫(kù)AmazonRDSAmazonRelationalDatabaseService(AmazonRDS)是一項(xiàng)Web服務(wù),讓用戶(hù)能夠在AWS云中更輕松地設(shè)置、操作和擴(kuò)展關(guān)系數(shù)據(jù)庫(kù)。AmazonRDS提供六種常見(jiàn)的數(shù)據(jù)庫(kù)引擎選項(xiàng),包括AmazonAurora、MySQL、MariaDB、Oracle、MicrosoftSQLServer和PostgreSQL。它可以為用戶(hù)提供經(jīng)濟(jì)實(shí)用的可調(diào)容量,并承擔(dān)常見(jiàn)的數(shù)據(jù)庫(kù)管理任務(wù)。項(xiàng)目1.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)1.1.4創(chuàng)建AmazonRDSMySQL數(shù)據(jù)庫(kù)1.發(fā)起RDS數(shù)據(jù)庫(kù)實(shí)例啟動(dòng)(1)登錄根賬號(hào),為IAM用戶(hù)添“AmazonRDSFullAccess”策略。使用已有的IAM賬號(hào)登錄進(jìn)入控制臺(tái)。(2)打開(kāi)AmazonRDS控制臺(tái)。(3)創(chuàng)建MySQL數(shù)據(jù)庫(kù)實(shí)例。項(xiàng)目1.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)1.1.4創(chuàng)建AmazonRDSMySQL數(shù)據(jù)庫(kù)2.啟動(dòng)實(shí)例(1)選擇數(shù)據(jù)庫(kù)引擎為MySQL(2)選擇使用案例項(xiàng)目1.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)1.1.4創(chuàng)建AmazonRDSMySQL數(shù)據(jù)庫(kù)2.啟動(dòng)實(shí)例(3)指定數(shù)據(jù)庫(kù)詳細(xì)信息項(xiàng)目1.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)1.1.4創(chuàng)建AmazonRDSMySQL數(shù)據(jù)庫(kù)2.啟動(dòng)實(shí)例(4)配置高級(jí)設(shè)置項(xiàng)目1.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)1.1.4創(chuàng)建AmazonRDSMySQL數(shù)據(jù)庫(kù)2.啟動(dòng)實(shí)例(5)查看數(shù)據(jù)庫(kù)實(shí)例(6)查看數(shù)據(jù)庫(kù)實(shí)例的終端節(jié)點(diǎn)與端口項(xiàng)目1.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)1.1.4創(chuàng)建AmazonRDSMySQL數(shù)據(jù)庫(kù)3.用戶(hù)管理數(shù)據(jù)庫(kù)設(shè)計(jì)(1)連接數(shù)據(jù)庫(kù)遠(yuǎn)程連接RDS數(shù)據(jù)庫(kù),使用命令:mysql-h<endpoint>-P3306-u<mymasteruser>-p其中<endpoint>為數(shù)據(jù)庫(kù)的終端節(jié)點(diǎn)。也可以使用可視化工具(如Navicat)連接RDS數(shù)據(jù)庫(kù)。項(xiàng)目1.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)1.1.4創(chuàng)建AmazonRDSMySQL數(shù)據(jù)庫(kù)3.用戶(hù)管理數(shù)據(jù)庫(kù)設(shè)計(jì)(2)創(chuàng)建數(shù)據(jù)庫(kù)與數(shù)據(jù)表創(chuàng)建數(shù)據(jù)庫(kù)usermanage,SQL語(yǔ)句如下:CREATEDATABASEusermanageDEFAULTCHARACTERSETutf8mb4DEFAULTCOLLATEutf8mb4_general_ci;項(xiàng)目1.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)1.1.4創(chuàng)建AmazonRDSMySQL數(shù)據(jù)庫(kù)3.用戶(hù)管理數(shù)據(jù)庫(kù)設(shè)計(jì)在usermanage數(shù)據(jù)庫(kù)中創(chuàng)建數(shù)據(jù)表user,SQL語(yǔ)句如下:USEusermanage;CREATETABLEuser(idINTNOTNULLAUTO_INCREMENT,userVARCHAR(255),pwdVARCHAR(255),emailVARCHAR(255),PRIMARYKEY(id));項(xiàng)目1.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)1.1.4創(chuàng)建AmazonRDSMySQL數(shù)據(jù)庫(kù)3.用戶(hù)管理數(shù)據(jù)庫(kù)設(shè)計(jì)在表user中插入admin管理員用戶(hù),密碼為1(用sha256加密),SQL語(yǔ)句如下:INSERTINTOuserVALUES(1,’admin’,’6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b’,’123@’);2項(xiàng)目1.2設(shè)計(jì)普通用戶(hù)程序安裝Python開(kāi)發(fā)程序設(shè)計(jì)用戶(hù)登錄程序設(shè)計(jì)用戶(hù)注冊(cè)程序設(shè)計(jì)信息更新程序項(xiàng)目1.2設(shè)計(jì)普通用戶(hù)程序1.2.1安裝Python開(kāi)發(fā)程序1.在EC2實(shí)例上安裝Python運(yùn)行環(huán)境使用yum程序包管理器安裝,命令如下:yuminstallpython3-y2.使用pip安裝Flask與PyMySQL命令如下:pipinstallflaskpipinstallpymysql項(xiàng)目1.2設(shè)計(jì)普通用戶(hù)程序1.2.1安裝Python開(kāi)發(fā)程序3.Flask框架Flask是一個(gè)基于Python開(kāi)發(fā)并且依賴(lài)jinja2模板和WerkzeugWSGI服務(wù)的一個(gè)微型框架,“微”意味著Flask旨在保持核心的簡(jiǎn)單,但同時(shí)又易于擴(kuò)展。默認(rèn)情況下,F(xiàn)lask不包含數(shù)據(jù)庫(kù)抽象層、表單驗(yàn)證,或是其他任何已有多種庫(kù)可以勝任的功能。然而,F(xiàn)lask支持用擴(kuò)展來(lái)給應(yīng)用添加這些功能。Flask的這些特性,使得它在Web開(kāi)發(fā)方面變得非常流行。項(xiàng)目1.2設(shè)計(jì)普通用戶(hù)程序1.2.2設(shè)計(jì)用戶(hù)登錄程序任務(wù)描述用戶(hù)登錄模塊主要用于實(shí)現(xiàn)用戶(hù)的登錄。用戶(hù)需要填寫(xiě)正確的用戶(hù)名和密碼,點(diǎn)擊“登錄”按鈕,即可實(shí)現(xiàn)用戶(hù)登錄,跳轉(zhuǎn)至相應(yīng)的用戶(hù)界面。如果輸入的用戶(hù)名或密碼不正確,則提示錯(cuò)誤。同時(shí),在此頁(yè)面上也可以點(diǎn)擊“注冊(cè)”按鈕,進(jìn)行新用戶(hù)的注冊(cè)。項(xiàng)目1.2設(shè)計(jì)普通用戶(hù)程序1.2.2設(shè)計(jì)用戶(hù)登錄程序1.創(chuàng)建Flask項(xiàng)目在本地新建Flask項(xiàng)目app,其中包括app.py入口程序及兩個(gè)子文件夾static和templates,static文件夾存放css/js靜態(tài)資源,templates文件夾存放html模板文件。項(xiàng)目文件組織結(jié)構(gòu)如下:/app/app.py/static/templates項(xiàng)目1.2設(shè)計(jì)普通用戶(hù)程序1.2.2設(shè)計(jì)用戶(hù)登錄程序2.jQuery與layui框架jQuery是一個(gè)快速的、簡(jiǎn)潔的javaScript庫(kù)。layui是一款采用自身模塊規(guī)范編寫(xiě)的前端UI框架,遵循原生HTML/CSS/JS的書(shū)寫(xiě)與組織形式。我們可以借助jQuery與layui框架完成前端頁(yè)面的開(kāi)發(fā)。layui的使用可參考官方文檔:/doc/。項(xiàng)目1.2設(shè)計(jì)普通用戶(hù)程序1.2.2設(shè)計(jì)用戶(hù)登錄程序3.session的使用在Flask中使用session需配置“SECRET_KEY”,一般設(shè)置為24位的字符。代碼如下:#從Flask模塊導(dǎo)入sessionfromflaskimportsession#設(shè)置密鑰app=Flask(__name__)app.secrect_key='A0Zr98j/3yXR~XHH!jmN]LWX/,?RT'或者隨機(jī)數(shù)(os.urandom(24))項(xiàng)目1.2設(shè)計(jì)普通用戶(hù)程序1.2.2設(shè)計(jì)用戶(hù)登錄程序4.jsonify的使用Flask提供了jsonify函數(shù)供用戶(hù)處理返回的序列化json數(shù)據(jù)。代碼如下:#從Flask模塊導(dǎo)入jsonifyfromflaskimportjsonify5.PyMySQL的使用操作MySQL的基本流程:建立數(shù)據(jù)庫(kù)連接、創(chuàng)建游標(biāo)對(duì)象、執(zhí)行SQL語(yǔ)句、關(guān)閉游標(biāo)、關(guān)閉數(shù)據(jù)庫(kù)連接。代碼如下:importpymysql項(xiàng)目1.2設(shè)計(jì)普通用戶(hù)程序1.2.2設(shè)計(jì)用戶(hù)登錄程序#連接數(shù)據(jù)庫(kù),參數(shù)分別是主機(jī)名或IP、用戶(hù)名、密碼、數(shù)據(jù)庫(kù)名稱(chēng)、端口號(hào)、字符集db=pymysql.connect(host='',user='root',password=‘xxx',db='usermanage',port=3306,charset='utf8mb4')#操作數(shù)據(jù)庫(kù)#使用cursor()方法創(chuàng)建一個(gè)游標(biāo)對(duì)象curcur=db.cursor()#對(duì)數(shù)據(jù)庫(kù)執(zhí)行查詢(xún)操作try:cur.execute("select*fromdemoTable")result=cur.fetchall()print("demoColumn1","demoColumn2")#關(guān)閉數(shù)據(jù)庫(kù)連接db.close()項(xiàng)目1.2設(shè)計(jì)普通用戶(hù)程序1.2.2設(shè)計(jì)用戶(hù)登錄程序6.用戶(hù)登錄頁(yè)面index.html項(xiàng)目1.2設(shè)計(jì)普通用戶(hù)程序1.2.2設(shè)計(jì)用戶(hù)登錄程序7.設(shè)計(jì)SHA256加密函數(shù)用戶(hù)密碼經(jīng)過(guò)加密后存入數(shù)據(jù)庫(kù)中,編寫(xiě)函數(shù)sha256_crypt實(shí)現(xiàn)加密功能,函數(shù)如下:defsha256_crypt(s):m=hashlib.sha256()b=s.encode(encoding='utf-8')m.update(b)sm=m.hexdigest()print(sm)returnsm項(xiàng)目1.2設(shè)計(jì)普通用戶(hù)程序1.2.2設(shè)計(jì)用戶(hù)登錄程序8.設(shè)計(jì)用戶(hù)登錄Web程序用來(lái)完成用戶(hù)登錄及注冊(cè)頁(yè)面的跳轉(zhuǎn)。用戶(hù)登錄時(shí),要查詢(xún)數(shù)據(jù)庫(kù),判斷表單提交的用戶(hù)名、密碼是否存在,若存在,還需要判斷該用戶(hù)是否為管理員用戶(hù),主要結(jié)構(gòu)如下:@app.route('/')defindex():"""用戶(hù)登錄頁(yè)面"""returnrender_template('index.html')

@app.route('/login/',methods=['POST'])deflogin():"""用戶(hù)登錄"""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':'賬號(hào)密碼錯(cuò)誤,登錄失敗'})項(xiàng)目1.2設(shè)計(jì)普通用戶(hù)程序1.2.3設(shè)計(jì)用戶(hù)注冊(cè)程序用戶(hù)注冊(cè)界面主要用于實(shí)現(xiàn)注冊(cè)新用戶(hù)功能。在該頁(yè)面中,需要填寫(xiě)用戶(hù)名、郵箱、密碼和確認(rèn)密碼,同時(shí)要求用戶(hù)名稱(chēng)必須是數(shù)字和字母的組合,email要驗(yàn)證有效性,密碼和確認(rèn)密碼要一致。如果信息輸入不完整或填寫(xiě)格式不符合要求,都將提示錯(cuò)誤。項(xiàng)目1.2設(shè)計(jì)普通用戶(hù)程序1.2.3設(shè)計(jì)用戶(hù)注冊(cè)程序1.正則表達(dá)式的使用用戶(hù)在注冊(cè)時(shí),通過(guò)正則表達(dá)式驗(yàn)證用戶(hù)名與郵箱的有效性。代碼如下:user_rz=/^[0-9a-zA-Z]+$/#用戶(hù)名是數(shù)字和字母的組合,且不能為空mail_rz=/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+$/#有效郵箱項(xiàng)目1.2設(shè)計(jì)普通用戶(hù)程序1.2.3設(shè)計(jì)用戶(hù)注冊(cè)程序用戶(hù)注冊(cè)頁(yè)面userreg.html項(xiàng)目1.2設(shè)計(jì)普通用戶(hù)程序1.2.3設(shè)計(jì)用戶(hù)注冊(cè)程序設(shè)計(jì)用戶(hù)注冊(cè)程序@app.route('/user_reg/',methods=['POST','GET'])defuser_reg():"""用戶(hù)注冊(cè)頁(yè)面"""returnrender_template('userreg.html')

@app.route('/reg/',methods=['POST'])defreg():"""用戶(hù)注冊(cè)"""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':'用戶(hù)已存在’})cu.execute("insertintouser(user,pwd,email)values(%s,%s,%s)",(user,sha256_crypt(pwd),email))mit()returnjsonify({'code':0,'msg':'注冊(cè)成功'})項(xiàng)目1.2設(shè)計(jì)普通用戶(hù)程序1.2.4設(shè)計(jì)信息更新程序用戶(hù)信息查看頁(yè)面user.html用戶(hù)信息更新頁(yè)面userupdate.html項(xiàng)目1.2設(shè)計(jì)普通用戶(hù)程序1.2.4設(shè)計(jì)信息更新程序設(shè)計(jì)用戶(hù)信息查看程序@app.route('/user_index/')defuser_index():"""用戶(hù)首頁(yè)"""user=session.get('user')con=con_db()cu=con.cursor(pymysql.cursors.DictCursor)#獲取用戶(hù)信息cu.execute("selectuser,emailfromuserwhereuser=%s",(user,))data=cu.fetchall()ifdata:data=data[0]#返回用戶(hù)頁(yè)面returnrender_template('user.html',**data)項(xiàng)目1.2設(shè)計(jì)普通用戶(hù)程序1.2.4設(shè)計(jì)信息更新程序設(shè)計(jì)用戶(hù)信息更新程序@app.route('/user_update/')defuser_update():"""用戶(hù)信息更新頁(yè)面"""returnrender_template('userupdate.html')@app.route('/put/',methods=['POST','GET'])defput():"""用戶(hù)信息更新"""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項(xiàng)目1.3設(shè)計(jì)管理員程序設(shè)計(jì)查看與查找用戶(hù)程序設(shè)計(jì)刪除用戶(hù)程序設(shè)計(jì)重置用戶(hù)密碼程序項(xiàng)目1.3設(shè)計(jì)管理員程序1.3.1設(shè)計(jì)查看與查找用戶(hù)程序管理員頁(yè)面admin.html項(xiàng)目1.3設(shè)計(jì)管理員程序1.3.1設(shè)計(jì)查看與查找用戶(hù)程序管理員程序@app.route('/admin_index/')defadmin_index():"""管理首頁(yè)"""user=session.get('user')con=con_db()

cu=con.cursor(pymysql.cursors.DictCursor)returnrender_template('admin.html',**{})項(xiàng)目1.3設(shè)計(jì)管理員程序1.3.1設(shè)計(jì)查看與查找用戶(hù)程序管理員程序@app.route('/get_list/',methods=['GET’])defauser():"""用戶(hù)管理"""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})項(xiàng)目1.3設(shè)計(jì)管理員程序1.3.2設(shè)計(jì)刪除用戶(hù)程序@app.route('/adel/',methods=['POST'])defadel():"""刪除用戶(hù)"""pid=request.form.get('pid')con=con_db()cu=con.cursor(pymysql.cursors.DictCursor)cu.execute("deletefromuserwhereid=%s",(pid,))mit()returnjsonify({'code':0,'msg':'刪除成功'})項(xiàng)目1.3設(shè)計(jì)管理員程序1.3.3設(shè)計(jì)重置用戶(hù)密碼程序@app.route('/aput/',methods=['POST'])defaput():"""修改用戶(hù)"""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項(xiàng)目1.4部署應(yīng)用程序到EC2

云端實(shí)例將普通用戶(hù)程序部署到EC2云端實(shí)例將管理員程序部署到EC2云端實(shí)例項(xiàng)目1.4部署應(yīng)用程序到EC2云端實(shí)例將程序部署到EC2云端實(shí)例在項(xiàng)目1.1中,我們已經(jīng)完成AmazonEC2的創(chuàng)建,在項(xiàng)目1.2中我們已經(jīng)完成普通用戶(hù)程序的設(shè)計(jì),在項(xiàng)目1.3中我們已經(jīng)完成管理員程序的設(shè)計(jì),接下來(lái)將所有開(kāi)發(fā)好的程序上傳至EC2云端實(shí)例。項(xiàng)目1.4部署應(yīng)用程序到EC2云端實(shí)例將程序部署到EC2云端實(shí)例根據(jù)本地操作系統(tǒng)的不同,選擇SCP命令或PSCP命令將Flask項(xiàng)目文件app傳輸?shù)紼C2云端實(shí)例。項(xiàng)目1.4部署應(yīng)用程序到EC2云端實(shí)例將程序部署到EC2云端實(shí)例(1)如果本地計(jì)算機(jī)操作系統(tǒng)是Linux或macOSX使用SCP將文件傳輸?shù)皆品?wù)器。例如,如果私有密鑰文件的名稱(chēng)為my-key-pair,要傳輸?shù)奈募镾ampleFile.txt,實(shí)例的用戶(hù)名為my-instance-user-name,實(shí)例的公有DNS名稱(chēng)為my-instance-public-dns-name,在終端窗口中,輸入以下命令可將該文件復(fù)制到my-instance-user-name主目錄中:scp-i/path/my-key-pair.pem/path/SampleFile.txtmy-instance-user-name@my-instance-public-dns-name:~項(xiàng)目1.4部署應(yīng)用程序到EC2云端實(shí)例將程序部署到EC2云端實(shí)例(2)如果本地計(jì)算機(jī)操作系統(tǒng)是Windows使用PuTTY安全復(fù)制客戶(hù)端將文件傳輸?shù)皆品?wù)器。PuTTY安全復(fù)制客戶(hù)端(PSCP)是一個(gè)命令行工具,可用于在Windows計(jì)算機(jī)和Linux實(shí)例之間傳輸文件。要使用PSCP,需要使用通過(guò)PuTTYgen轉(zhuǎn)換生成的私有密鑰(.ppk文件)以及Linux實(shí)例的公有DNS名稱(chēng)。以下示例將Sample_file.txt文件從Windows計(jì)算機(jī)上的C:\驅(qū)動(dòng)器傳輸?shù)紸mazonLinux實(shí)例上的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項(xiàng)目1.5綜合實(shí)訓(xùn)—我的云服務(wù)器項(xiàng)目功能項(xiàng)目要點(diǎn)項(xiàng)目實(shí)施項(xiàng)目測(cè)試項(xiàng)目1.5綜合實(shí)訓(xùn)

我的云服務(wù)器項(xiàng)目功能這個(gè)項(xiàng)目由三部分組成。1.AmazonEC2Linux虛擬機(jī)的創(chuàng)建把Web開(kāi)發(fā)程序部署在EC2Linux實(shí)例上,創(chuàng)建我們的云服務(wù)器。2.AmazonRDSMySQL數(shù)據(jù)庫(kù)的創(chuàng)建3.普通用戶(hù)與管理員Web程序開(kāi)發(fā)這個(gè)Web程序向普通用戶(hù)與管理員用戶(hù)提供不同的功能。普通用戶(hù)可以注冊(cè)并登錄,登錄后能查看到用戶(hù)信息,并且可修改注冊(cè)郵箱與密碼。數(shù)據(jù)庫(kù)中內(nèi)置管理員admin用戶(hù),管理員登錄后可查看所有注冊(cè)用戶(hù)信息,可刪除用戶(hù),也可以修改用戶(hù)密碼。項(xiàng)目1.5綜合實(shí)訓(xùn)

我的云服務(wù)器項(xiàng)目要點(diǎn)這個(gè)綜合項(xiàng)目實(shí)際上是前面各個(gè)項(xiàng)目的綜合應(yīng)用。首先創(chuàng)建能訪(fǎng)問(wèn)EC2與RDS服務(wù)的AWS賬號(hào),分別創(chuàng)建AmazonEC2Linux實(shí)例與AmazonRDSMySQL數(shù)據(jù)庫(kù)實(shí)例,在本地完成Web程序開(kāi)發(fā),數(shù)據(jù)庫(kù)使用RDSMySQL,最終將Web開(kāi)發(fā)程序部署至云服務(wù)器上,完成我們的第一個(gè)云服務(wù)器的搭建。項(xiàng)目1.5綜合實(shí)訓(xùn)

我的云服務(wù)器項(xiàng)目實(shí)施1.創(chuàng)建AWS訪(fǎng)問(wèn)賬號(hào)并配置權(quán)限(1)登錄AWS官網(wǎng)注冊(cè)賬號(hào);(2)創(chuàng)建IAM用戶(hù),為該用戶(hù)配置AmazonEC2FullAccess、AmazonRDSFullAccess策略。項(xiàng)目1.5綜合實(shí)訓(xùn)

我的云服務(wù)器項(xiàng)目實(shí)施2.創(chuàng)建AmazonEC2Linux虛擬機(jī)(1)使用IAM用戶(hù)登錄進(jìn)入控制臺(tái);(2)創(chuàng)建EC2實(shí)例,并在本地保存好密鑰對(duì)(.pem文件);(3)連接EC2實(shí)例;(4)在EC2實(shí)例上安裝Python運(yùn)行環(huán)境;(5)在EC2實(shí)例上安裝Flask與PyMySQL。項(xiàng)目1.5綜合實(shí)訓(xùn)

我的云服務(wù)器項(xiàng)目實(shí)施3.創(chuàng)建AmazonRDSMySQL數(shù)據(jù)庫(kù)(1)使用IAM用戶(hù)登錄進(jìn)入控制臺(tái);(2)創(chuàng)建數(shù)據(jù)庫(kù)實(shí)例,數(shù)據(jù)庫(kù)引擎選擇MySQL,可用區(qū)設(shè)置為與EC2實(shí)例相同;(3)連接RDSMySQL數(shù)據(jù)庫(kù),創(chuàng)建用戶(hù)數(shù)據(jù)庫(kù)usermanage,創(chuàng)建表user,里面包含用戶(hù)ID(id)、用戶(hù)名稱(chēng)(user)、密碼(pwd)和email四個(gè)字段,id為主鍵。項(xiàng)目1.5綜合實(shí)訓(xùn)

我的云服務(wù)器項(xiàng)目實(shí)施4.創(chuàng)建Flask項(xiàng)目在本地創(chuàng)建Flask項(xiàng)目app,入口程序主程序app.py,將下載好的layui組件、jQuery庫(kù)存放在static文件夾中,html模板文件存放在templates文件夾中。目錄結(jié)構(gòu)如下:/app/app.py/static/lib/layui/jquery-1.12.4.js/templates項(xiàng)目1.5綜合實(shí)訓(xùn)

我的云服務(wù)器項(xiàng)目實(shí)施5.創(chuàng)建Web程序開(kāi)發(fā)各個(gè)網(wǎng)頁(yè)模板文件(1)用戶(hù)登錄模板index.html(2)用戶(hù)注冊(cè)模板userreg.html(3)用戶(hù)信息查看模板user.html(4)用戶(hù)信息更新模板userupdate.html(5)管理員模板admin.html6.Web開(kāi)發(fā)主程序app.py項(xiàng)目1.5綜合實(shí)訓(xùn)

我的云服務(wù)器項(xiàng)目實(shí)施7.編輯安全組使用控制臺(tái)編輯EC2主機(jī)安全組,添加一條入站規(guī)則,允許5000端口開(kāi)放給/0。8.將Web應(yīng)用程序部署到EC2云端實(shí)例根據(jù)本地操作系統(tǒng)的不同,選擇SCP命令或PSCP命令將Flask項(xiàng)目文件app上傳至EC2云端實(shí)例。項(xiàng)目1.5綜合實(shí)訓(xùn)

我的云服務(wù)器項(xiàng)目測(cè)試1.連接EC2實(shí)例2.運(yùn)行服務(wù)器使用python命令運(yùn)行app.py,即:pythonapp.py那么就可以在互聯(lián)網(wǎng)上使用這個(gè)服務(wù)器了。3.測(cè)試運(yùn)行在互聯(lián)網(wǎng),使用http://EC2實(shí)例外網(wǎng)地址:5000訪(fǎng)問(wèn),最后完成發(fā)布程序的應(yīng)用測(cè)試。項(xiàng)目1.5綜合實(shí)訓(xùn)

我的云服務(wù)器項(xiàng)目測(cè)試用戶(hù)登錄頁(yè)面用戶(hù)注冊(cè)頁(yè)面用戶(hù)信息查看頁(yè)面用戶(hù)信息更新頁(yè)面項(xiàng)目1.5綜合實(shí)訓(xùn)

我的云服務(wù)器項(xiàng)目測(cè)試使用管理員用戶(hù)admin登錄,可以查看、查詢(xún)、刪除、修改用戶(hù)信息.謝謝觀看

云應(yīng)用開(kāi)發(fā)實(shí)戰(zhàn)單元2我的有聲圖書(shū)2.1使用AmazonPolly語(yǔ)音服務(wù)2.2設(shè)計(jì)圖書(shū)管理程序2.3綜合實(shí)訓(xùn)

我的有聲圖書(shū)知識(shí)目標(biāo):掌握文字轉(zhuǎn)語(yǔ)音的基本知識(shí)掌握AmazonPolly服務(wù)知識(shí)掌握AmazonRDS數(shù)據(jù)庫(kù)存儲(chǔ)知識(shí)掌握PythonSDK與Amazon服務(wù)知識(shí)掌握FlaskWeb程序設(shè)計(jì)知識(shí)掌握HTML5語(yǔ)音文件的播放知識(shí)能力目標(biāo):能創(chuàng)建有AmazonPolly權(quán)限的AWS賬號(hào)能使用AmazonRDS數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)存儲(chǔ)能使用Flask編寫(xiě)圖書(shū)的管理程序能在Web頁(yè)面對(duì)圖書(shū)數(shù)據(jù)進(jìn)行分頁(yè)管理能使用AmazonPolly進(jìn)行文字轉(zhuǎn)語(yǔ)音能使用Flask編寫(xiě)語(yǔ)音管理與下載的程序能使用HTML5在線(xiàn)播放語(yǔ)音項(xiàng)目2.1使用AmazonPolly語(yǔ)音服務(wù)創(chuàng)建AmazonPolly訪(fǎng)問(wèn)賬號(hào)使用AmazonPolly語(yǔ)音服務(wù)使用boots訪(fǎng)問(wèn)AWS服務(wù)設(shè)計(jì)AmazonPolly應(yīng)用程序2.1.1創(chuàng)建AmazonPolly訪(fǎng)問(wèn)賬號(hào)任務(wù)描述ASWPolly是一個(gè)文字轉(zhuǎn)語(yǔ)音的服務(wù),要使用這個(gè)服務(wù)就必須先創(chuàng)建一個(gè)有訪(fǎng)問(wèn)這個(gè)服務(wù)權(quán)限的賬號(hào)。知識(shí)要點(diǎn)AWS的賬號(hào)可以通過(guò)三種方式訪(fǎng)問(wèn)AWS的云資源,一是控制臺(tái)(圖形化界面),二是CLI(命令行),三是SDK(編程訪(fǎng)問(wèn))。AWS賬號(hào)主要有兩個(gè)用途,一個(gè)用于網(wǎng)頁(yè)登錄AWS控制臺(tái)(Console),另外一個(gè)是使用程序訪(fǎng)問(wèn)AWS服務(wù),因此AWS賬號(hào)有兩種類(lèi)型。項(xiàng)目2.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)1.AWS控制臺(tái)賬號(hào)AWS控制臺(tái)是一個(gè)網(wǎng)頁(yè)界面的操作平臺(tái),可以使用這個(gè)平臺(tái)操作AWS的各種云服務(wù)。AWS控制臺(tái)賬號(hào)包括賬號(hào)名稱(chēng)賬號(hào)密碼,使用它可以登錄到AWS控制臺(tái)。2.AWS程序賬號(hào)除了可以使用AWSConsole控制臺(tái)操作云服務(wù)外,我們還可以使用Python語(yǔ)言調(diào)用AWS的SDK用程序操作云服務(wù),那么要使用AWS程序賬號(hào),這種賬號(hào)包含一個(gè)訪(fǎng)問(wèn)密鑰ID(AccessKeyID)和一個(gè)私有訪(fǎng)問(wèn)密鑰(AccessSecretKey)。項(xiàng)目2.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)三、任務(wù)實(shí)施1.創(chuàng)建AWS訪(fǎng)問(wèn)賬號(hào)創(chuàng)建一個(gè)AWS的賬號(hào),例如名稱(chēng)為“polly.audio.user”,并配置它的策略使得它有對(duì)Polly和S3的全權(quán)訪(fǎng)問(wèn)權(quán)利。⑴管理員進(jìn)入AWS服務(wù)控制臺(tái),選擇IAM創(chuàng)建用戶(hù),輸入用戶(hù)名稱(chēng)"polly.audio.user",并選擇,編程訪(fǎng)問(wèn),'與,'AWS管理控制臺(tái)訪(fǎng)問(wèn)設(shè)置控制臺(tái)訪(fǎng)問(wèn)密碼,如圖2-1-1所示。項(xiàng)目2.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)圖2-1-1添加賬號(hào)項(xiàng)目2.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)(2)選擇“直接附加現(xiàn)有策略“,然后選擇“AmazonPollyFullAccess”策略,如圖2-1-2所示。圖2-1-2選擇策略項(xiàng)目2.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)(3)直接下一步,最后看到賬號(hào)的審核,如圖2-1-3所示,確定無(wú)誤后直接點(diǎn)擊“創(chuàng)建用戶(hù)”即可創(chuàng)建該用戶(hù)賬號(hào)。圖2-1-3審核賬號(hào)項(xiàng)目2.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)2.保存AWS賬號(hào)信息接下來(lái)顯示創(chuàng)建用戶(hù)成功,并顯示賬號(hào)信息,如圖2-1-4所示。在圖中有一個(gè),'下載.csv''文件的按鈕,點(diǎn)擊后下載一個(gè)名稱(chēng)為accessKeys.csv的文件,這個(gè)CSV文件有兩行,格式如下:項(xiàng)目2.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)第一行是Key的類(lèi)型,它們使用逗號(hào)分開(kāi),第二行就是對(duì)應(yīng)的值,我們可以通過(guò)讀這個(gè)CSV文件得到各個(gè)值。圖2-1-4賬號(hào)信息項(xiàng)目2.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)任務(wù)2.1.2使用AmazonPolly語(yǔ)音服務(wù)任務(wù)描述AmazonPolly是基于人工智能的服務(wù),它能把一段文字朗讀出語(yǔ)音,并提供語(yǔ)音文件的下載。知識(shí)要點(diǎn)1.認(rèn)識(shí)AmazonPollyAmazonPolly是一種將文本轉(zhuǎn)換為逼真語(yǔ)音的服務(wù),它允許創(chuàng)建能夠說(shuō)話(huà)的應(yīng)用程序,并構(gòu)建全新類(lèi)別的支持語(yǔ)音功能的產(chǎn)品。Polly的文本轉(zhuǎn)語(yǔ)音(TTS)服務(wù)使用高級(jí)深度學(xué)習(xí)技術(shù)來(lái)合成聽(tīng)起來(lái)像自然人類(lèi)語(yǔ)言的語(yǔ)音。AmazonPolly提供眾多語(yǔ)言的幾十種逼真語(yǔ)音,可以構(gòu)建適用于許多不同國(guó)家/地區(qū)的具有語(yǔ)音功能的應(yīng)用程序。項(xiàng)目2.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)2.AmazonPolly文字轉(zhuǎn)語(yǔ)音給定一段不是太長(zhǎng)的中文或者英文文本,AmazonPolly會(huì)立即把該文字轉(zhuǎn)為語(yǔ)音,并可以立即播放該語(yǔ)音。如果文本太長(zhǎng),那么ASWPolly會(huì)啟動(dòng)一個(gè)異步的任務(wù),把轉(zhuǎn)好的語(yǔ)音文件存儲(chǔ)到AWSS3的存儲(chǔ)桶中。是同步還是異步只取決于調(diào)用的接口,在控制臺(tái)上看起來(lái)是自動(dòng)的,其實(shí)是控制臺(tái)自動(dòng)區(qū)分了,并調(diào)用了不同的接口。項(xiàng)目2.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)三、任務(wù)實(shí)施1.登錄AWS控制臺(tái)使用前面創(chuàng)建的polly.audio.user賬號(hào)登錄到AWS控制臺(tái),找到AmazonPolly服務(wù)。2.使用AmazonPolly服務(wù)

點(diǎn)擊打開(kāi)AmazonPolly服務(wù),如圖2-1-5所示,這個(gè)界面提供了幾個(gè)功能:

⑴輸入一段文字,點(diǎn)擊“收聽(tīng)語(yǔ)音”,就可以聽(tīng)到這段文字的語(yǔ)音。

項(xiàng)目2.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)(2)使用”語(yǔ)言與區(qū)域“可以選擇不同的語(yǔ)言,例如中文或者英文。(3)使用“語(yǔ)音”可以選擇不同人的聲音,例如男聲或者女聲。(4)點(diǎn)擊”下載MP3”可以下載語(yǔ)音的MP3文件。(5)點(diǎn)擊,,純文本"或者"SSML“可以選擇要轉(zhuǎn)換的文本格式。項(xiàng)目2.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)圖2-1-5Amazon

Polly服務(wù)

但是注意一點(diǎn)Polly只能現(xiàn)場(chǎng)轉(zhuǎn)換不太長(zhǎng)的文本(大約3000字符以?xún)?nèi)),太長(zhǎng)的文本轉(zhuǎn)換比較耗時(shí),Polly會(huì)啟動(dòng)一個(gè)后臺(tái)的任務(wù)進(jìn)行異步轉(zhuǎn)換,轉(zhuǎn)換好的語(yǔ)言文件會(huì)自動(dòng)存儲(chǔ)到AWSS3的一個(gè)存儲(chǔ)桶中。項(xiàng)目2.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)任務(wù)2.1.3使用boto3訪(fǎng)問(wèn)AWS服務(wù)一、任務(wù)描述

使用AWS的Python程序SDK,編寫(xiě)程序調(diào)用Polly服務(wù)把文字轉(zhuǎn)為語(yǔ)音。二、知識(shí)要點(diǎn)1.AWSSDK

AWS的服務(wù)不但可以使用控制臺(tái)操作,而且AWS提供各種常用編程語(yǔ)言的SDK,我們可以利用SDK編寫(xiě)程序訪(fǎng)問(wèn)AWS的各種服務(wù),如圖2-1-6所示。項(xiàng)目2.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)圖2-1-6AWSSDK從圖中可以看到AWS的Python的SDK名稱(chēng)為boto3,要使用Python編寫(xiě)程序訪(fǎng)問(wèn)AWS服務(wù)就必須先安裝boto3庫(kù)。2.使用AWS賬號(hào)AWS賬號(hào)的AccessKeyID與SecretAccessKey信息存儲(chǔ)在accessKeys.csv文件中,編寫(xiě)函數(shù)readKeys讀出。項(xiàng)目2.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù) 3.創(chuàng)建客戶(hù)端對(duì)象Python使用boto3包的函數(shù)庫(kù)訪(fǎng)問(wèn)AWS。創(chuàng)建客戶(hù)端對(duì)象基本方法是boto3.client方法,并傳遞aws_access_key_id與aws_access_secret_key以及region_name參數(shù),例如使用前面的cloud.disk.user賬號(hào)創(chuàng)建client如下:項(xiàng)目2.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù) 4.文本轉(zhuǎn)語(yǔ)音

使用Python調(diào)用Boto3中的synthesize_speech函數(shù)可以實(shí)現(xiàn)文本轉(zhuǎn)語(yǔ)音,該函數(shù)有許多參數(shù)。項(xiàng)目2.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)三、任務(wù)實(shí)施安裝boto3Python訪(fǎng)問(wèn)AWS的庫(kù)是boto3,使用pip命令先安裝這個(gè)包:在安裝完畢后就可以編寫(xiě)程序調(diào)用AWS的APL。

項(xiàng)目2.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)

2.查看boto3文檔

怎么樣使用boto3編寫(xiě)訪(fǎng)問(wèn)AWS服務(wù)的程序呢?實(shí)際上可以查看boto3的技術(shù)文檔,網(wǎng)址是:https://boto3.amazonaws.eom/v:l/documentation/api/latest/index.html。

項(xiàng)目2.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)

3.編寫(xiě)程序程序中語(yǔ)句18-24是實(shí)現(xiàn)語(yǔ)音轉(zhuǎn)換的關(guān)鍵語(yǔ)句項(xiàng)目2.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)任務(wù)2.1.4設(shè)計(jì)AmazonPolly應(yīng)用程序一、任務(wù)描述AmazonPolly控制臺(tái)是一個(gè)Web程序,我們使用Flask也可以創(chuàng)建一個(gè)類(lèi)似的程序,模仿AmazonPolly的控制臺(tái)那樣工作。二、知識(shí)要點(diǎn)Flask界面模版創(chuàng)建一個(gè)模版程序polly.html,它包含一個(gè)文本輸入框,一個(gè)語(yǔ)言選擇框,一個(gè)轉(zhuǎn)語(yǔ)音的按鈕,一個(gè)下載MP3文件的按鈕項(xiàng)目2.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)2.設(shè)計(jì)Flask服務(wù)器Flask服務(wù)器server.py復(fù)制顯示polly.html模版網(wǎng)頁(yè),當(dāng)用戶(hù)輸入文字提交時(shí)接收用戶(hù)的輸入,根據(jù)用戶(hù)選擇的語(yǔ)言與輸入的文字調(diào)用一個(gè)文字轉(zhuǎn)語(yǔ)音的函數(shù)convertToAudio把文字轉(zhuǎn)為語(yǔ)音。轉(zhuǎn)換的語(yǔ)音文件命名為audio.mp3,存儲(chǔ)在Flask的靜態(tài)文件夾static中。

項(xiàng)目2.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)三、任務(wù)實(shí)施編寫(xiě)polly.html網(wǎng)頁(yè)模版在這個(gè)網(wǎng)頁(yè)文件中添加了JavaScript控制函數(shù),使得在選擇中文或者英文時(shí)由例句自動(dòng)出現(xiàn),不需要用戶(hù)自己輸入。2.編寫(xiě)server.py服務(wù)器函數(shù)index是程序的入口,用戶(hù)使用它的界面提交文本,函數(shù)converttoaudio負(fù)責(zé)把文字轉(zhuǎn)為mp3的語(yǔ)音文件,函數(shù)download負(fù)責(zé)下載這個(gè)語(yǔ)音文件。項(xiàng)目2.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)測(cè)試程序執(zhí)行server.py服務(wù)器程序,效果如圖2-1-7所示,選擇中文或者英文,輸入文字后點(diǎn)擊”提交“就可以把文字轉(zhuǎn)為語(yǔ)音,并且可以在網(wǎng)頁(yè)上播放這個(gè)語(yǔ)音,點(diǎn)擊”下載”便可以下載這個(gè)audio.mp3語(yǔ)音文件。項(xiàng)目2.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)圖2-1-7文字轉(zhuǎn)語(yǔ)音到目前為止我們已經(jīng)知道怎么樣把一段文字轉(zhuǎn)為語(yǔ)音,接下來(lái)我們來(lái)做一個(gè)圖書(shū)管理程序,該程序管理一系列的圖書(shū),程序把這些圖書(shū)轉(zhuǎn)為語(yǔ)音,就做成了有聲圖書(shū)網(wǎng)站了。項(xiàng)目2.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)項(xiàng)目2.2設(shè)計(jì)圖書(shū)管理程序設(shè)計(jì)圖書(shū)存儲(chǔ)數(shù)據(jù)庫(kù)設(shè)計(jì)圖書(shū)增加程序設(shè)計(jì)圖書(shū)瀏覽與刪除程序設(shè)計(jì)圖書(shū)編輯程序任務(wù)2.2.1設(shè)計(jì)圖書(shū)存儲(chǔ)數(shù)據(jù)庫(kù)一、任務(wù)描述MySql數(shù)據(jù)庫(kù)是常用的一種關(guān)系數(shù)據(jù)庫(kù),AWS云提供了MySql的服務(wù),我們將在這個(gè)有聲圖書(shū)項(xiàng)目使用它存儲(chǔ)圖書(shū)的數(shù)據(jù)。項(xiàng)目2.2—設(shè)計(jì)圖書(shū)管理程序二、知識(shí)要點(diǎn)AmazonRDS服務(wù)

AmazonRelationalDatabaseService(AmazonRDS)能夠在云中輕松設(shè)置、操作和擴(kuò)展關(guān)系數(shù)據(jù)庫(kù)。它在自動(dòng)執(zhí)行耗時(shí)的管理任務(wù)(如硬件預(yù)置、數(shù)據(jù)庫(kù)設(shè)置、修補(bǔ)和備份)的同時(shí),可提供經(jīng)濟(jì)實(shí)用的可調(diào)容量。AmazonRDS在多種類(lèi)型的數(shù)據(jù)庫(kù)實(shí)例(針對(duì)內(nèi)存、性能或I/O進(jìn)行了優(yōu)化的實(shí)例)上均可用,并提供六種常用的數(shù)據(jù)庫(kù)引擎供您選擇,包括AmazonAurora>PostgreSQL、MySQL、MariaDB、OracleDatabase和SQLServer。項(xiàng)目2.2—設(shè)計(jì)圖書(shū)管理程序2.創(chuàng)建MySql數(shù)據(jù)庫(kù)實(shí)例MySql數(shù)據(jù)庫(kù)是最常用的數(shù)據(jù)庫(kù)之一,要使用AmazonRDS中的MySql數(shù)據(jù)庫(kù)就必須先創(chuàng)建一個(gè)MySql數(shù)據(jù)庫(kù)實(shí)例,并獲取它的服務(wù)器地址。項(xiàng)目2.2—設(shè)計(jì)圖書(shū)管理程序三、任務(wù)實(shí)施1.創(chuàng)建數(shù)據(jù)庫(kù)實(shí)例創(chuàng)建MySql實(shí)例非常簡(jiǎn)單,進(jìn)入AWS服務(wù)選擇RDS后選擇MySql數(shù)據(jù)庫(kù),在創(chuàng)建時(shí)輸入數(shù)據(jù)庫(kù)實(shí)例名稱(chēng)(例如MySql),訪(fǎng)問(wèn)用戶(hù)名稱(chēng)(例如root)以及訪(fǎng)問(wèn)密碼,如圖2-2-1所示。圖2-2-1設(shè)置數(shù)據(jù)庫(kù)項(xiàng)目2.2—設(shè)計(jì)圖書(shū)管理程序圖2-2-2數(shù)據(jù)庫(kù)地址2.獲取數(shù)據(jù)庫(kù)服務(wù)器數(shù)據(jù)庫(kù)創(chuàng)建完成后可以看到其訪(fǎng)問(wèn)的主機(jī)地址(Endpoint),其中端口(Port)為3306,這是MySql數(shù)據(jù)庫(kù)的默認(rèn)端口,如圖2-2-2所示。項(xiàng)目2.2—設(shè)計(jì)圖書(shū)管理程序圖2-2-3設(shè)置權(quán)限設(shè)置數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)權(quán)限為了能更好第使用這個(gè)數(shù)據(jù)庫(kù)實(shí)例,需要設(shè)置它的inbound與outbound的規(guī)則為0000/0,即允許從任何IP地址的服務(wù)器訪(fǎng)問(wèn)該數(shù)據(jù)庫(kù),如圖2-2-3所示。項(xiàng)目2.2—設(shè)計(jì)圖書(shū)管理程序4.保存數(shù)據(jù)庫(kù)信息復(fù)制出這個(gè)地址把它保存起來(lái),它是將來(lái)使用程序進(jìn)行數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)的主機(jī)地址,可以把數(shù)據(jù)庫(kù)地址,用戶(hù),密碼等保存到一個(gè)mySql.csv的文件中,該文件包含兩行數(shù)據(jù),數(shù)據(jù)之間用逗號(hào)隔開(kāi),格式如下:其中第一行是標(biāo)題,第二行是對(duì)應(yīng)的數(shù)據(jù)。項(xiàng)目2.2—設(shè)計(jì)圖書(shū)管理程序5.創(chuàng)建圖書(shū)數(shù)據(jù)庫(kù)這個(gè)數(shù)據(jù)庫(kù)可以命名為audiobooks,創(chuàng)建一張圖書(shū)表格books如下:其中BID是圖書(shū)的ID編號(hào),自動(dòng)增加,關(guān)鍵字;title是圖書(shū)的標(biāo)題,不可以重復(fù);author是圖書(shū)的作者;language是存儲(chǔ)的文本的語(yǔ)言,可以是英文或者中文;contents是一個(gè)longtext類(lèi)型,存儲(chǔ)圖書(shū)的文字內(nèi)容;image是圖書(shū)的封面圖像文件名稱(chēng);audio是圖書(shū)的語(yǔ)音文件名稱(chēng)。為了簡(jiǎn)化程序我們假定圖書(shū)不再劃分章節(jié),如果要?jiǎng)澐终鹿?jié)就需要另外創(chuàng)建一張關(guān)聯(lián)的章節(jié)表格。

項(xiàng)目2.2—設(shè)計(jì)圖書(shū)管理程序任務(wù)2.2.2設(shè)計(jì)圖書(shū)增加程序一、任務(wù)描述要做一個(gè)有聲圖書(shū)網(wǎng)站就必須先增加圖書(shū),只有在數(shù)據(jù)庫(kù)中存儲(chǔ)了圖書(shū)后才能存儲(chǔ)它的章節(jié)。二、知識(shí)要點(diǎn)1.設(shè)計(jì)增加圖書(shū)的網(wǎng)頁(yè)

這個(gè)增加網(wǎng)頁(yè)命名為insertBook.html,表單中包括一個(gè)圖書(shū)名稱(chēng)或者標(biāo)題的輸入框title、圖書(shū)作者輸入框author、語(yǔ)言選擇下列列表框yList、文本輸入框contents等,還包括圖書(shū)封面圖像顯示的<img>元素與語(yǔ)音播放的<audio>元素項(xiàng)目2.2—設(shè)計(jì)圖書(shū)管理程序2.設(shè)計(jì)文本轉(zhuǎn)語(yǔ)音的程序

設(shè)計(jì)一個(gè)audio.py的文件,在這個(gè)文件中設(shè)計(jì)AudioClass管理文本轉(zhuǎn)語(yǔ)音的功能,其中的converToAudio函數(shù)3.設(shè)計(jì)增加圖書(shū)的數(shù)據(jù)庫(kù)程序創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)管理程序database.py,在其中設(shè)計(jì)BookDatabase類(lèi)管理數(shù)據(jù)庫(kù),創(chuàng)建一個(gè)insertBook的函數(shù)負(fù)責(zé)增加一本圖書(shū)記錄。注意在books表中有一個(gè)BID是圖書(shū)的關(guān)鍵字,這個(gè)BID只有在新記錄插入后才能確定它的值,因此插入后立即獲取BID值,再根據(jù)這個(gè)BID值確定該圖書(shū)的封面圖像文件與語(yǔ)音文件的名稱(chēng)。圖像文件與語(yǔ)音文件都按圖書(shū)的BID編號(hào)擴(kuò)展為6位的文件名存儲(chǔ)在static文件夾。例如BID=1的圖書(shū),那么語(yǔ)音文件為000001.mp3,圖像文件為00000.1jpg。項(xiàng)目2.2—設(shè)計(jì)圖書(shū)管理程序4.設(shè)計(jì)增加圖書(shū)Web程序增加圖書(shū)的web接口是它在服務(wù)器server.py中處理5.測(cè)試程序

執(zhí)行server.py服務(wù)器,使用:5000/insertBook

地址訪(fǎng)問(wèn),結(jié)果如圖2-2-5所示,增加成功后就可以點(diǎn)擊播放其語(yǔ)音。項(xiàng)目2.2—設(shè)計(jì)圖書(shū)管理程序任務(wù)2.2.3設(shè)計(jì)瀏覽和刪除圖書(shū)程序一、任務(wù)描述增加了部分圖書(shū)后,怎么樣取查看到目前有什么圖書(shū)呢,該任務(wù)就是設(shè)計(jì)一個(gè)查看程序。如果圖書(shū)很多,查看程序應(yīng)該對(duì)圖書(shū)進(jìn)行分頁(yè)和分類(lèi),為了簡(jiǎn)單起見(jiàn)目前這個(gè)查看程序只做簡(jiǎn)單的羅列,不進(jìn)行分頁(yè)分類(lèi)。項(xiàng)目2.2—設(shè)計(jì)圖書(shū)管理程序1.設(shè)計(jì)瀏覽圖書(shū)模版設(shè)計(jì)一個(gè)selectBook.html的模版,把每本圖書(shū)放在一個(gè)<div>塊中,每個(gè)圖書(shū)<div>塊是一個(gè)display:inline-block的布局,這樣多個(gè)圖書(shū)<div>塊又放在一個(gè)大的<div>塊中,使得圖書(shū)會(huì)從左到右,從上到下依次排列2.設(shè)計(jì)服務(wù)器程序服務(wù)器的接口是“/selectBooku,這個(gè)頁(yè)面主要是管理員管理圖書(shū),主要程序如下:二、知識(shí)要點(diǎn)項(xiàng)目2.2—設(shè)計(jì)圖書(shū)管理程序項(xiàng)目2.2—設(shè)計(jì)圖書(shū)管理程序該函數(shù)如果檢測(cè)到cmd為delete,就使用deleteBook函數(shù)刪除這本圖書(shū),然后使用listBook函數(shù)獲取所有圖書(shū)books類(lèi)別,傳遞到selectBook.html中顯示。項(xiàng)目2.2—設(shè)計(jì)圖書(shū)管理程序3.設(shè)計(jì)刪除圖書(shū)程序刪除圖書(shū)時(shí)不但要從books表刪除該圖書(shū)記錄,還要?jiǎng)h除該圖書(shū)相關(guān)聯(lián)的圖像文件以及語(yǔ)音文件。由于圖像文件雨語(yǔ)音文件時(shí)按BID號(hào)形成的jpg與mp3文件,因此給定BID號(hào)后就可以刪除它們。項(xiàng)目2.2—設(shè)計(jì)圖書(shū)管理程序圖2-2-6瀏覽與刪除圖書(shū)4.測(cè)試程序

執(zhí)行server.py服務(wù)器,使用:5000/selectBook

地址訪(fǎng)問(wèn),結(jié)果如圖2-2-6所示。項(xiàng)目2.2—設(shè)計(jì)圖書(shū)管理程序任務(wù)2.2.4設(shè)計(jì)圖書(shū)編輯程序一、任務(wù)描述有些圖書(shū)信息是錯(cuò)誤的,需要修改,這個(gè)任務(wù)就是在查看圖書(shū)的頁(yè)面中增加一個(gè)修改功能。二、知識(shí)要點(diǎn)圖書(shū)編輯頁(yè)面模版與增加圖書(shū)的十分相似,這里不再贅述。項(xiàng)目2.2—設(shè)計(jì)圖書(shū)管理程序三、任務(wù)實(shí)施1.設(shè)計(jì)圖書(shū)編輯模版updateBook.html2.測(cè)試程序

在selectBook.html中增加一個(gè)編輯圖書(shū)的鏈接:項(xiàng)目2.2—設(shè)計(jì)圖書(shū)管理程序點(diǎn)擊后就開(kāi)始編輯BID編號(hào)的圖書(shū),如圖2-2-7所示。圖2-2-8編輯圖書(shū)項(xiàng)目2.2—設(shè)計(jì)圖書(shū)管理程序項(xiàng)目2.3綜合實(shí)訓(xùn)-我的有聲圖書(shū)一、項(xiàng)目功能

這個(gè)項(xiàng)目有三個(gè)部分組成,第一部分是AmazonPolly語(yǔ)音服務(wù)器,第二部分是存儲(chǔ)圖書(shū)信息的MySql數(shù)據(jù)庫(kù),第三部分是一個(gè)圖書(shū)Web服務(wù)器。1.AmazonPolly語(yǔ)音服務(wù)AmazonPolly語(yǔ)音服務(wù)能把一段文字轉(zhuǎn)為語(yǔ)音,如果要轉(zhuǎn)換的文本不是太長(zhǎng)的話(huà),Polly轉(zhuǎn)換后會(huì)立即返回轉(zhuǎn)換的語(yǔ)音文件數(shù)據(jù)。我們使用boto3中的synthesize_speech函數(shù)可以完成轉(zhuǎn)換。項(xiàng)目2.3—綜合實(shí)訓(xùn)-我的有聲圖書(shū)2.圖書(shū)信息存儲(chǔ)數(shù)據(jù)庫(kù)這個(gè)MySql數(shù)據(jù)庫(kù)可以是遠(yuǎn)程的一個(gè)數(shù)據(jù)庫(kù),例如AmazonRDS中的MySql數(shù)據(jù)庫(kù)。3.圖書(shū)Web服務(wù)器這個(gè)Web服務(wù)器負(fù)責(zé)向一般用戶(hù)分頁(yè)展示所有的圖書(shū),用戶(hù)也可以通過(guò)搜索功能查找到所要的圖書(shū)。用戶(hù)選擇圖書(shū)后即可以進(jìn)行圖書(shū)文字閱讀或者聆聽(tīng)語(yǔ)音朗讀,也可以下載語(yǔ)音文件。對(duì)于管理員用戶(hù)登錄后對(duì)所有圖書(shū)進(jìn)行管理,包括增加圖書(shū)、編輯圖書(shū)與刪除圖書(shū)、完成圖書(shū)文字到語(yǔ)音的轉(zhuǎn)換等工作。項(xiàng)目2.3—綜合實(shí)訓(xùn)-我的有聲圖書(shū)二、項(xiàng)目要點(diǎn)

這個(gè)綜合項(xiàng)目實(shí)際上是前面各個(gè)項(xiàng)目的綜合應(yīng)用,但是在圖書(shū)瀏覽中做了一些改進(jìn),增加了圖書(shū)分頁(yè)與搜索的功能,以便管理眾多的圖書(shū)。當(dāng)頁(yè)面有分頁(yè)與搜索功能時(shí),可以使用當(dāng)前頁(yè)面參數(shù)pageindex與當(dāng)前搜索過(guò)濾關(guān)鍵字key來(lái)記錄當(dāng)前頁(yè)面的狀態(tài)。因此每次從這個(gè)頁(yè)面轉(zhuǎn)去別的新頁(yè)面時(shí)都要把pageindex與key傳遞給新的頁(yè)面,以便返回時(shí)能回到目前這個(gè)頁(yè)面。(1)設(shè)計(jì)分頁(yè)查看圖書(shū)(2)設(shè)計(jì)服務(wù)器數(shù)據(jù)分頁(yè)(3)設(shè)計(jì)圖書(shū)搜索功能項(xiàng)目2.3—綜合實(shí)訓(xùn)-我的有聲圖書(shū)三、項(xiàng)目實(shí)施

1.創(chuàng)建AmazonPolly訪(fǎng)問(wèn)權(quán)限的IAM用戶(hù)這個(gè)IAM用戶(hù)的密鑰保存到accessKeys.csv文件供程序使用2.創(chuàng)建AmazonRDS數(shù)據(jù)庫(kù)實(shí)例創(chuàng)建的AmazonRDS數(shù)據(jù)庫(kù)實(shí)例用于存儲(chǔ)圖書(shū)信息,數(shù)據(jù)庫(kù)的鏈接信息存儲(chǔ)在mySql.csv文件供程序使用3.創(chuàng)建Web服務(wù)器的audio.py文件這個(gè)文件包含AudioClass類(lèi),它負(fù)責(zé)完成把文字內(nèi)容轉(zhuǎn)換為語(yǔ)音文件,語(yǔ)音文件按圖書(shū)編號(hào)BID形成mp3文件后存儲(chǔ)在static文件夾。項(xiàng)目2.3—綜合實(shí)訓(xùn)-我的有聲圖書(shū)三、項(xiàng)目實(shí)施

4.創(chuàng)建Web服務(wù)器database.py文件這個(gè)文件包含BookDatabase類(lèi),負(fù)責(zé)數(shù)據(jù)庫(kù)的初始化、增加記錄、刪除記錄、修改記錄和查看記錄等功能5.創(chuàng)建Web服務(wù)器各個(gè)網(wǎng)頁(yè)模板文件創(chuàng)建的AmazonRDS數(shù)據(jù)庫(kù)實(shí)例用于存儲(chǔ)圖書(shū)信息,數(shù)據(jù)庫(kù)的鏈接信息存儲(chǔ)在mySql.csv文件供程序使用

項(xiàng)目2.3—綜合實(shí)訓(xùn)-我的有聲圖書(shū)四、項(xiàng)目測(cè)試網(wǎng)站的主頁(yè)如圖2-3-1所示,如果圖書(shū)多的話(huà)會(huì)分頁(yè)顯示,用戶(hù)可以搜索所要的圖書(shū)。

圖2-3-1瀏覽圖書(shū)項(xiàng)目2.3—綜合實(shí)訓(xùn)-我的有聲圖書(shū)圖2-3-2閱讀圖書(shū)四、項(xiàng)目測(cè)試擇一本圖書(shū)后可以進(jìn)行閱讀、聆聽(tīng)語(yǔ)音、下載語(yǔ)音,如圖2-3-2所示。項(xiàng)目2.3—綜合實(shí)訓(xùn)-我的有聲圖書(shū)四、項(xiàng)目測(cè)試管理員登錄后進(jìn)入圖書(shū)管理,如圖2-3-3所示,管理員可以增加圖書(shū)、編輯圖書(shū)、刪除圖書(shū)。項(xiàng)目2.3—綜合實(shí)訓(xùn)-我的有聲圖書(shū)五、項(xiàng)目發(fā)布

1.創(chuàng)建云盤(pán)服務(wù)器使用AmazonEC2建立一個(gè)虛擬機(jī),配置Python與Flask運(yùn)行環(huán)境,并允許端口5000的訪(fǎng)問(wèn)。2.創(chuàng)建圖書(shū)服務(wù)器在云盤(pán)服務(wù)器建立一個(gè)文件夾例如AudioBook,把整個(gè)項(xiàng)目文件復(fù)制到這個(gè)文件夾。項(xiàng)目2.3—綜合實(shí)訓(xùn)-我的有聲圖書(shū)3.配置賬號(hào)與數(shù)據(jù)庫(kù)

配置賬號(hào)accessKeys.csv文件與數(shù)據(jù)庫(kù)文件mySql.csv,使得從云盤(pán)虛擬機(jī)能訪(fǎng)問(wèn)AmazonPolly服務(wù)與AmazonRDSMySql數(shù)據(jù)庫(kù)服務(wù)。4.修改server.py的運(yùn)行語(yǔ)句為:5.運(yùn)行服務(wù)器項(xiàng)目2.3—綜合實(shí)訓(xùn)-我的有聲圖書(shū)使用Python命令運(yùn)行server.py,即:那么就可以在互聯(lián)網(wǎng)上使用這個(gè)有聲圖書(shū)系統(tǒng)了。6.測(cè)試程序最后完成發(fā)布程序的應(yīng)用測(cè)試。六、項(xiàng)目拓展項(xiàng)目2.3—綜合實(shí)訓(xùn)-我的有聲圖書(shū)為了簡(jiǎn)單,同時(shí)也基于篇幅的考慮,該項(xiàng)目只能把不太長(zhǎng)的文本(一般不超過(guò)3000字)轉(zhuǎn)為語(yǔ)音。如果文本比較長(zhǎng),AmazonPolly會(huì)在后臺(tái)啟動(dòng)一個(gè)異步任務(wù)把文字轉(zhuǎn)為語(yǔ)音,然后把這個(gè)語(yǔ)音文件存儲(chǔ)到指定的S3存儲(chǔ)桶中。由于這個(gè)轉(zhuǎn)換需要時(shí)間,因此是異步完成的。一般處理異步程序會(huì)比較麻煩,因?yàn)槲覀儾恢肋@個(gè)過(guò)程什么

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論