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

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(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ì)普通用戶程序項(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用戶使用策略配置權(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訪問(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訪問(wèn)賬號(hào)IAM服務(wù)AWSIdentityandAccessManagement(IAM)是一項(xiàng)AWS的托管服務(wù),為使用AmazonWebServices(AWS)的客戶在AWS中管理用戶和用戶權(quán)限。借助IAM,可以集中管理用戶、訪問(wèn)密鑰等安全憑證,以及用于管理用戶訪問(wèn)AWS資源的權(quán)限。項(xiàng)目1.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)1.1.1創(chuàng)建AWS訪問(wèn)賬號(hào)AWS賬號(hào)訪問(wèn)IAM用戶訪問(wèn)亞馬遜云科技的方式主要有三種,管理控制臺(tái)、CLI命令行界面和SDK編程訪問(wèn)。在創(chuàng)建用戶時(shí),可以按照需求進(jìn)行選擇。(1)管理控制臺(tái)是一個(gè)基于Web的平臺(tái),可以使用這個(gè)平臺(tái)操作亞馬遜云科技的各種云服務(wù),通過(guò)用戶名、密碼可以登錄到亞馬遜云科技管理控制臺(tái)。項(xiàng)目1.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)1.1.1創(chuàng)建AWS訪問(wèn)賬號(hào)AWS賬號(hào)訪問(wèn)(2)CLI命令行界面讓用戶能夠在命令行Shell中使用命令與亞馬遜云科技服務(wù)進(jìn)行交互。用戶也可以通過(guò)Python語(yǔ)言調(diào)用亞馬遜云科技的SDK程序操作云服務(wù)。這兩種方式操作云服務(wù)時(shí),需要?jiǎng)?chuàng)建IAM用戶時(shí)生成的訪問(wèn)密鑰(訪問(wèn)密鑰ID(AccessKeyID)和秘密訪問(wèn)密鑰(SecretAccessKey))。項(xiàng)目1.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)1.1.1創(chuàng)建AWS訪問(wèn)賬號(hào)創(chuàng)建IAM用戶(1)使用根用戶登錄控制臺(tái),選擇IAM服務(wù)。(2)添加用戶,選擇訪問(wèn)權(quán)限類(lèi)型為“編程訪問(wèn)”以及“AWS管理控制臺(tái)訪問(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訪問(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訪問(wèn)賬號(hào)(5)審核創(chuàng)建的用戶信息,點(diǎn)擊“創(chuàng)建用戶”。項(xiàng)目1.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)1.1.1創(chuàng)建AWS訪問(wèn)賬號(hào)保存AWS賬號(hào)信息創(chuàng)建用戶成功,賬號(hào)的AccessKeyID(訪問(wèn)密鑰ID)與AccessSecretKey(秘密訪問(wèn)密鑰)包含在一個(gè).csv文件中,下載這個(gè)文件后可以獲取這些值。項(xiàng)目1.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)1.1.2使用策略配置權(quán)限訪問(wèn)控制當(dāng)IAM用戶在AWS中發(fā)出請(qǐng)求時(shí),AWS云服務(wù)會(huì)檢查其是否具有權(quán)限。我們可以創(chuàng)建策略并將其附加到IAM身份或AWS資源上,以便管理AWS中的訪問(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ì)資源的訪問(wèn)時(shí),可以選擇基于身份的策略或基于資源的策略?;谏矸莸牟呗钥梢愿郊拥絀AM用戶、組或角色。這些策略可讓您指定該身份可執(zhí)行哪些操作(其權(quán)限)?;谫Y源的策略附加到某個(gè)資源。項(xiàng)目1.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)1.1.2使用策略配置權(quán)限為用戶分配權(quán)限的方式有三種:將用戶添加到組、從現(xiàn)有用戶復(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)查看用戶現(xiàn)有權(quán)限。(2)添加訪問(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)再次查看用戶權(quán)限。項(xiàng)目1.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)1.1.2使用策略配置權(quán)限將用戶添加到組作為AWS最佳實(shí)踐,我們可以將策略附加到組,然后使用戶成為相應(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)將用戶加入EC2-Support組。(4)查看用戶現(xiàn)有權(quán)限。項(xiàng)目1.1—?jiǎng)?chuàng)建虛擬機(jī)與數(shù)據(jù)庫(kù)1.1.2使用策略配置權(quán)限從現(xiàn)有用戶復(fù)制權(quán)限選擇此選項(xiàng)可從現(xiàn)有用戶將所有策略復(fù)制到新用戶。項(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客戶端。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í)例的用戶名,對(duì)于AmazonLinux系統(tǒng),用戶名為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ù),讓用戶能夠在AWS云中更輕松地設(shè)置、操作和擴(kuò)展關(guān)系數(shù)據(jù)庫(kù)。AmazonRDS提供六種常見(jiàn)的數(shù)據(jù)庫(kù)引擎選項(xiàng),包括AmazonAurora、MySQL、MariaDB、Oracle、MicrosoftSQLServer和PostgreSQL。它可以為用戶提供經(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用戶添“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.用戶管理數(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.用戶管理數(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.用戶管理數(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.用戶管理數(shù)據(jù)庫(kù)設(shè)計(jì)在表user中插入admin管理員用戶,密碼為1(用sha256加密),SQL語(yǔ)句如下:INSERTINTOuserVALUES(1,’admin’,’6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b’,’123@’);2項(xiàng)目1.2設(shè)計(jì)普通用戶程序安裝Python開(kāi)發(fā)程序設(shè)計(jì)用戶登錄程序設(shè)計(jì)用戶注冊(cè)程序設(shè)計(jì)信息更新程序項(xiàng)目1.2設(shè)計(jì)普通用戶程序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ì)普通用戶程序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ì)普通用戶程序1.2.2設(shè)計(jì)用戶登錄程序任務(wù)描述用戶登錄模塊主要用于實(shí)現(xiàn)用戶的登錄。用戶需要填寫(xiě)正確的用戶名和密碼,點(diǎn)擊“登錄”按鈕,即可實(shí)現(xiàn)用戶登錄,跳轉(zhuǎn)至相應(yīng)的用戶界面。如果輸入的用戶名或密碼不正確,則提示錯(cuò)誤。同時(shí),在此頁(yè)面上也可以點(diǎn)擊“注冊(cè)”按鈕,進(jìn)行新用戶的注冊(cè)。項(xiàng)目1.2設(shè)計(jì)普通用戶程序1.2.2設(shè)計(jì)用戶登錄程序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ì)普通用戶程序1.2.2設(shè)計(jì)用戶登錄程序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ì)普通用戶程序1.2.2設(shè)計(jì)用戶登錄程序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ì)普通用戶程序1.2.2設(shè)計(jì)用戶登錄程序4.jsonify的使用Flask提供了jsonify函數(shù)供用戶處理返回的序列化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ì)普通用戶程序1.2.2設(shè)計(jì)用戶登錄程序#連接數(shù)據(jù)庫(kù),參數(shù)分別是主機(jī)名或IP、用戶名、密碼、數(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í)行查詢操作try:cur.execute("select*fromdemoTable")result=cur.fetchall()print("demoColumn1","demoColumn2")#關(guān)閉數(shù)據(jù)庫(kù)連接db.close()項(xiàng)目1.2設(shè)計(jì)普通用戶程序1.2.2設(shè)計(jì)用戶登錄程序6.用戶登錄頁(yè)面index.html項(xiàng)目1.2設(shè)計(jì)普通用戶程序1.2.2設(shè)計(jì)用戶登錄程序7.設(shè)計(jì)SHA256加密函數(shù)用戶密碼經(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ì)普通用戶程序1.2.2設(shè)計(jì)用戶登錄程序8.設(shè)計(jì)用戶登錄Web程序用來(lái)完成用戶登錄及注冊(cè)頁(yè)面的跳轉(zhuǎn)。用戶登錄時(shí),要查詢數(shù)據(jù)庫(kù),判斷表單提交的用戶名、密碼是否存在,若存在,還需要判斷該用戶是否為管理員用戶,主要結(jié)構(gòu)如下:@app.route('/')defindex():"""用戶登錄頁(yè)面"""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':'賬號(hào)密碼錯(cuò)誤,登錄失敗'})項(xiàng)目1.2設(shè)計(jì)普通用戶程序1.2.3設(shè)計(jì)用戶注冊(cè)程序用戶注冊(cè)界面主要用于實(shí)現(xiàn)注冊(cè)新用戶功能。在該頁(yè)面中,需要填寫(xiě)用戶名、郵箱、密碼和確認(rèn)密碼,同時(shí)要求用戶名稱(chēng)必須是數(shù)字和字母的組合,email要驗(yàn)證有效性,密碼和確認(rèn)密碼要一致。如果信息輸入不完整或填寫(xiě)格式不符合要求,都將提示錯(cuò)誤。項(xiàng)目1.2設(shè)計(jì)普通用戶程序1.2.3設(shè)計(jì)用戶注冊(cè)程序1.正則表達(dá)式的使用用戶在注冊(cè)時(shí),通過(guò)正則表達(dá)式驗(yàn)證用戶名與郵箱的有效性。代碼如下:user_rz=/^[0-9a-zA-Z]+$/#用戶名是數(shù)字和字母的組合,且不能為空mail_rz=/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+$/#有效郵箱項(xiàng)目1.2設(shè)計(jì)普通用戶程序1.2.3設(shè)計(jì)用戶注冊(cè)程序用戶注冊(cè)頁(yè)面userreg.html項(xiàng)目1.2設(shè)計(jì)普通用戶程序1.2.3設(shè)計(jì)用戶注冊(cè)程序設(shè)計(jì)用戶注冊(cè)程序@app.route('/user_reg/',methods=['POST','GET'])defuser_reg():"""用戶注冊(cè)頁(yè)面"""returnrender_template('userreg.html')

@app.route('/reg/',methods=['POST'])defreg():"""用戶注冊(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':'用戶已存在’})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ì)普通用戶程序1.2.4設(shè)計(jì)信息更新程序用戶信息查看頁(yè)面user.html用戶信息更新頁(yè)面userupdate.html項(xiàng)目1.2設(shè)計(jì)普通用戶程序1.2.4設(shè)計(jì)信息更新程序設(shè)計(jì)用戶信息查看程序@app.route('/user_index/')defuser_index():"""用戶首頁(yè)"""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]#返回用戶頁(yè)面returnrender_template('user.html',**data)項(xiàng)目1.2設(shè)計(jì)普通用戶程序1.2.4設(shè)計(jì)信息更新程序設(shè)計(jì)用戶信息更新程序@app.route('/user_update/')defuser_update():"""用戶信息更新頁(yè)面"""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項(xiàng)目1.3設(shè)計(jì)管理員程序設(shè)計(jì)查看與查找用戶程序設(shè)計(jì)刪除用戶程序設(shè)計(jì)重置用戶密碼程序項(xiàng)目1.3設(shè)計(jì)管理員程序1.3.1設(shè)計(jì)查看與查找用戶程序管理員頁(yè)面admin.html項(xiàng)目1.3設(shè)計(jì)管理員程序1.3.1設(shè)計(jì)查看與查找用戶程序管理員程序@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ì)查看與查找用戶程序管理員程序@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})項(xiàng)目1.3設(shè)計(jì)管理員程序1.3.2設(shè)計(jì)刪除用戶程序@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':'刪除成功'})項(xiàng)目1.3設(shè)計(jì)管理員程序1.3.3設(shè)計(jì)重置用戶密碼程序@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項(xiàng)目1.4部署應(yīng)用程序到EC2

云端實(shí)例將普通用戶程序部署到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)完成普通用戶程序的設(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í)例的用戶名為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ù)制客戶端將文件傳輸?shù)皆品?wù)器。PuTTY安全復(fù)制客戶端(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.普通用戶與管理員Web程序開(kāi)發(fā)這個(gè)Web程序向普通用戶與管理員用戶提供不同的功能。普通用戶可以注冊(cè)并登錄,登錄后能查看到用戶信息,并且可修改注冊(cè)郵箱與密碼。數(shù)據(jù)庫(kù)中內(nèi)置管理員admin用戶,管理員登錄后可查看所有注冊(cè)用戶信息,可刪除用戶,也可以修改用戶密碼。項(xiàng)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論