亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Python的遠(yuǎn)程自動(dòng)化程序發(fā)布系統(tǒng)

        2022-06-24 07:38:18尤海娟張亮桂康哲黃麗花
        電子制作 2022年10期
        關(guān)鍵詞:域名遠(yuǎn)程服務(wù)器

        尤海娟,張亮,桂康哲,黃麗花

        (上汽通用五菱汽車股份有限公司 廣西汽車新四化重點(diǎn)實(shí)驗(yàn)室,廣西柳州,545000)

        0 前言

        從軟件和信息技術(shù)服務(wù)業(yè)在我國(guó)落根開(kāi)始,發(fā)展力度一直在加大,穩(wěn)中有進(jìn),無(wú)論是收入還是利潤(rùn)增速,都一直在穩(wěn)定提升,我國(guó)在信息技術(shù)行業(yè)從業(yè)人數(shù)也一直在穩(wěn)定增加。我國(guó)的信息技術(shù)軟件遍地開(kāi)花,無(wú)論是云服務(wù)、大數(shù)據(jù)服務(wù)、網(wǎng)絡(luò)安全服務(wù)還是傳統(tǒng)的工業(yè)軟件、網(wǎng)上電商平臺(tái)技術(shù)服務(wù),跟我國(guó)國(guó)民的日常生活息息相關(guān)。軟件行業(yè)在我國(guó)有很好的發(fā)展?jié)摿?,擁有美好的前景?/p>

        Java進(jìn)入我國(guó)也就十幾年的時(shí)間,跟隨著我國(guó)軟件行業(yè)經(jīng)濟(jì)的穩(wěn)定快速發(fā)展,Java在我國(guó)的信息技術(shù)行業(yè)里越發(fā)普及,也變得越發(fā)舉足輕重。基于Java編程語(yǔ)言開(kāi)發(fā)的計(jì)算機(jī)軟件很多,因此Java為人們所重視,被廣泛應(yīng)用在計(jì)算機(jī)軟件的開(kāi)發(fā)上,是和我們息息相關(guān)的互聯(lián)網(wǎng)信息技術(shù),越來(lái)越廣泛地深入到人們生活的方方面面[1]。

        Java 技術(shù)具有四大優(yōu)越的特性,集成了卓越的普遍通用性、性能高效性、高可移植性和高度安全性,可以廣泛應(yīng)用于多種方向,如科學(xué)超級(jí)計(jì)算機(jī)、數(shù)據(jù)中心、移動(dòng)手機(jī)端和互聯(lián)網(wǎng)等等[2]。Java方向良多,其中的Java EE方向,名為企業(yè)級(jí)項(xiàng)目開(kāi)發(fā),可做多種領(lǐng)域,包括但不限于互聯(lián)網(wǎng),物流,電力行業(yè),電子商務(wù),證券,大型銀行應(yīng)用,生產(chǎn)制造等等ERP管理軟件和其他規(guī)模不小的網(wǎng)站和后臺(tái)的開(kāi)發(fā)應(yīng)用上[4]。

        當(dāng)開(kāi)發(fā)大型系統(tǒng)應(yīng)用時(shí),是很難一次就寫對(duì)代碼運(yùn)行成功沒(méi)有錯(cuò)誤的,往往需要經(jīng)過(guò)測(cè)試和許多次的改造才能實(shí)現(xiàn)目的,因此也很難一次程序發(fā)布完后就當(dāng)甩手掌柜,常常需要多次的程序發(fā)布。假若使用人工發(fā)布,將會(huì)大大浪費(fèi)資源。

        基于python 開(kāi)發(fā)的Java程序自動(dòng)化遠(yuǎn)程發(fā)布系統(tǒng)可以會(huì)大大減少資源的浪費(fèi)。

        Python是個(gè)輕量級(jí)的高級(jí)程序語(yǔ)言,誕生于1990 年代初,生父為荷蘭數(shù)學(xué)和計(jì)算機(jī)科學(xué)研究學(xué)會(huì)的Guido van Rossum,初衷是作為ABC語(yǔ)言的替代品。雖然Python易學(xué)好懂,但可謂“麻雀雖小,五臟俱全”,Python內(nèi)置了高效的高級(jí)數(shù)據(jù)結(jié)構(gòu),可高效地實(shí)現(xiàn)面向?qū)ο缶幊蘙5]。Python的本質(zhì)是解釋型語(yǔ)言,他那言簡(jiǎn)意賅的語(yǔ)法和動(dòng)態(tài)類型,它成為了大多數(shù)開(kāi)發(fā)者快速開(kāi)發(fā)應(yīng)用會(huì)最先想到的高級(jí)編程程序語(yǔ)言,它是開(kāi)源的,所以版本會(huì)不斷更新,不斷添加新功能新特性,可勝任那些獨(dú)立的、大型的項(xiàng)目開(kāi)發(fā)。

        Python解釋器基于易擴(kuò)展性,有需要時(shí),可以使用C語(yǔ)言或C++語(yǔ)言,擴(kuò)展Python新功能和數(shù)據(jù)類型[6]。 Python標(biāo)準(zhǔn)庫(kù)繁多,有適合于各種主要系統(tǒng)平臺(tái)的源碼或機(jī)器碼,這使Python 也可應(yīng)用于可定制化系統(tǒng)中的擴(kuò)展程序語(yǔ)言[7]。Python易學(xué)易懂,未來(lái)很有可能要跟數(shù)學(xué)、物理等理科、工科學(xué)科進(jìn)行結(jié)合,成為孩子們必須學(xué)習(xí)的一門課程,也是培養(yǎng)他們能力的核心科目,相信以后Python在中國(guó)會(huì)越來(lái)越流行,這些都將極大地增強(qiáng)Python語(yǔ)言的軟實(shí)力。

        1 開(kāi)發(fā)語(yǔ)言的選用

        因?yàn)镴ava程序遠(yuǎn)程自動(dòng)化發(fā)布系統(tǒng)的規(guī)模較小,是個(gè)人開(kāi)發(fā),需要在經(jīng)濟(jì)上,規(guī)模上,功能支持上來(lái)綜合考慮。Python開(kāi)源免費(fèi),不需要付出過(guò)多的金錢就可以達(dá)到目的,另外Python的輕量、功能支持多和社區(qū)解答氛圍的活躍,使得個(gè)人開(kāi)發(fā)的阻力也極低。此外,Python有許多可以使用的開(kāi)源工具,這些能夠極大地減少時(shí)間的消耗,讓開(kāi)發(fā)人員能夠更容易地集中精力用于理順程序邏輯,而不需要用太多的額外力氣解決細(xì)微末節(jié),因此,綜合考慮下來(lái),采用Python程序語(yǔ)言用來(lái)開(kāi)發(fā)遠(yuǎn)程自動(dòng)化發(fā)布系統(tǒng)很合適,很順手。

        2 Java程序發(fā)布的步驟

        在開(kāi)發(fā)Java程序遠(yuǎn)程自動(dòng)化發(fā)布系統(tǒng)前,首先要了解Java程序發(fā)布的步驟和順序,這將會(huì)成為即將開(kāi)發(fā)的Java程序遠(yuǎn)程自動(dòng)化發(fā)布系統(tǒng)的程序內(nèi)部邏輯支持,Java程序的發(fā)布步驟邏輯不難,十分的簡(jiǎn)單。理順程序邏輯我們就很容易就開(kāi)發(fā)出程序了,下面介紹的是Java程序發(fā)布的步驟,統(tǒng)共分為六個(gè)部分,這六個(gè)部分分別如下:

        第一步:需要準(zhǔn)備好即將發(fā)布的Java軟件項(xiàng)目,包括已經(jīng)完成并調(diào)試過(guò)的整套項(xiàng)目文件,其中包括但不限于代碼文件、數(shù)據(jù)庫(kù)文件、圖片資源、網(wǎng)頁(yè)文件和文本文件,軟件項(xiàng)目環(huán)境部署的工具。軟件項(xiàng)目可大可小,本次開(kāi)發(fā)的程序發(fā)布輔助小工具都會(huì)適用。

        第二步:需要自行購(gòu)買云服務(wù)器(ECS),這可選擇的選項(xiàng)很多,云服務(wù)器相當(dāng)于不在本地,掛在云端的計(jì)算機(jī)。云服務(wù)器廠商有很多,建議選擇大公司的廠商,這樣子會(huì)比較穩(wěn)定。穩(wěn)定性可以解決很多麻煩,不用分心,享受友好的服務(wù)的同時(shí),也能更好地分配更多的時(shí)間用于開(kāi)發(fā)和思考。

        第三步:購(gòu)買云服務(wù)器資源后,需要獲取廠商提供的云服務(wù)器的一系列信息,這些信息都很重要,需要記住,獲取后需要用這些信息遠(yuǎn)程連接云服務(wù)器,遠(yuǎn)程登錄連接云服務(wù)器以后再在服務(wù)器上配置程序運(yùn)行環(huán)境,包括但不限于Java環(huán)境、tomcat環(huán)境和數(shù)據(jù)庫(kù)環(huán)境。

        第四步:將本地開(kāi)發(fā)好的Java軟件項(xiàng)目部署進(jìn)云服務(wù)器內(nèi)。將各個(gè)文件放入服務(wù)器響應(yīng)的路徑,這一步可以按以往的經(jīng)驗(yàn)一樣布置,也可以在這個(gè)部分就開(kāi)始使用小工具進(jìn)行部署。

        第五步:部署好軟件項(xiàng)目到云服務(wù)器以后,就可以在云服務(wù)器上運(yùn)行本次的Java項(xiàng)目了,可以根據(jù)“http://ip:端口號(hào)/項(xiàng)目路徑”這個(gè)格式來(lái)配置URL,在本地訪問(wèn)該部署到云服務(wù)器的軟件項(xiàng)目。本地訪問(wèn)可以采用瀏覽器輸入U(xiǎn)RL的方式進(jìn)行訪問(wèn),像以前訪問(wèn)別的網(wǎng)頁(yè)一樣就行。

        第六步:需要購(gòu)買域名,讓網(wǎng)站可以根據(jù)域名的方式來(lái)訪問(wèn),而不必使用云服務(wù)器ip來(lái)訪問(wèn)項(xiàng)目。域名的購(gòu)買十分的簡(jiǎn)單,購(gòu)買域名成功后需要解析域名了,即把購(gòu)買的域名和購(gòu)買的云服務(wù)器ip掛靠起來(lái),將域名映射到訪問(wèn)地址。域名解析之后,通過(guò)外網(wǎng)還是暫時(shí)不能以域名的方式訪問(wèn)項(xiàng)目,原因可能出于映射的請(qǐng)求不穩(wěn)定、需要備案或者還在等待審核。這些可能都要耗費(fèi)一些時(shí)間和精力。

        基于Python的Java遠(yuǎn)程程序自動(dòng)化發(fā)布系統(tǒng)旨在解決Java程序發(fā)布的第四步的痛點(diǎn),即雖然將程序傳到服務(wù)器看起來(lái)很簡(jiǎn)單,但是,文件良多,程序的維護(hù)和修正工作要一直進(jìn)行的,而且每次可能只修改很小的一部分,不會(huì)每次都將一整個(gè)項(xiàng)目文件都進(jìn)行更新,所以,需要一直傳最新更新的個(gè)別文件到云服務(wù)上,如果單純?nèi)斯ぷ鍪謩?dòng)發(fā)布,一次兩次無(wú)礙,當(dāng)次數(shù)多了,文件多了,對(duì)人力資源來(lái)說(shuō)將會(huì)面臨大量的浪費(fèi)。這些會(huì)增加用人成本和時(shí)間。

        基于Python的Java遠(yuǎn)程程序自動(dòng)化發(fā)布系統(tǒng)會(huì)很好解決這些問(wèn)題。

        3 程序分析和程序?qū)崿F(xiàn)

        ■ 3.1 基于python的遠(yuǎn)程自動(dòng)化發(fā)布系統(tǒng)邏輯

        理順了程序邏輯以后,我們會(huì)發(fā)現(xiàn)基于python的遠(yuǎn)程自動(dòng)化發(fā)布系統(tǒng)邏輯非常簡(jiǎn)單。大體總結(jié)如下:

        總體的大概就是連接云服務(wù)器,當(dāng)有文件更新時(shí),根據(jù)要上傳的文件類型將文件上傳至云服務(wù)器的相應(yīng)位置,并根據(jù)情況處理一些額外的事件,返回處理結(jié)果。

        具體程序邏輯內(nèi)容詳細(xì)描述如下:

        (1)設(shè)定云服務(wù)器的ip,端口,賬號(hào),密碼。這將用來(lái)連接云服務(wù)器。

        (2)當(dāng)有文件更新時(shí),選擇需要上傳的文件準(zhǔn)備上傳。

        (3)如果要上傳的文件是class文件,需要檢測(cè)該class文件在云服務(wù)器的Java項(xiàng)目中是新增還是需要更換。當(dāng)是需要新增時(shí),將相應(yīng)jar文件進(jìn)行備份,再用ftp協(xié)議將該class文件上傳到相應(yīng)的jar文件位置即可。但如果是要更換時(shí),程序需要檢查云服務(wù)器的該class文件在云服務(wù)器上,同名class文件所在的jar包位置和class文件在jar包里的路徑,可能檢測(cè)到多個(gè)jar包里包含了同名文件,也可能檢測(cè)到單個(gè)jar包里有多個(gè)同名class文件。這時(shí)要選擇哪個(gè)路徑的class文件才是真正要替換的,對(duì)相應(yīng)的jar包進(jìn)行自動(dòng)備份,再替換class文件??赡苷麄€(gè)項(xiàng)目中只有一個(gè)同名class文件,這時(shí)程序會(huì)自動(dòng)備份跟替換。

        (4)當(dāng)文件是其他類型時(shí),如html文件,css文件,圖片資源文件等,也是差不多的處理方法。自動(dòng)備份和替換。新增時(shí)是直接插入。

        (5)對(duì)服務(wù)器返回的結(jié)果進(jìn)行分析。處理一些另外的事情,如是否要對(duì)該軟件項(xiàng)目進(jìn)行全部編譯等,如是否要?jiǎng)h除一些文件等。

        ■ 3.2 基于python的遠(yuǎn)程自動(dòng)化發(fā)布系統(tǒng)的實(shí)現(xiàn)

        配置完服務(wù)器ip、端口、賬號(hào)、密碼后,使用Python的paramiko遠(yuǎn)程登陸服務(wù)器,paramiko屬于第三方庫(kù),可以通過(guò)“pip3 install paramiko”在本地安裝上這個(gè)模塊,paramiko包含兩個(gè)核心組件:SSHClient和SFTPClient,SSHClient和SFTPClinet,即一個(gè)是遠(yuǎn)程連接,一個(gè)是上傳下載服務(wù)。

        SSHClient的類似于Linux的ssh命令,是對(duì)SSH會(huì)話的封裝,它封裝了傳輸,通道及SFTPClient建立的方式,用于執(zhí)行遠(yuǎn)程命令。常用方法有connect()方法,用來(lái)實(shí)現(xiàn)遠(yuǎn)程服務(wù)器的連接與認(rèn)證。用exec_command()方法在遠(yuǎn)程服務(wù)器執(zhí)行Linux命令的方法。open_sftp()方法作用是在當(dāng)前ssh會(huì)話的基礎(chǔ)上創(chuàng)建一個(gè)sftp會(huì)話,該方法會(huì)返回一個(gè)SFTPClient對(duì)象。load_system_host_keys方法加載指定遠(yuǎn)程主機(jī)的公鑰文件。

        SFTPClient類似于Linux的sftp命令,是對(duì)SFTP客戶端的封裝,可以實(shí)現(xiàn)遠(yuǎn)程文件操作,比如文件上傳、下載、修改文件權(quán)限等操作。

        Paramiko是個(gè)遵循SSH2協(xié)議,支持以加密和認(rèn)證的方式遠(yuǎn)程連接到服務(wù)器,它支持Linux, Solaris, BSD, MacOS X, Windows等平臺(tái)通過(guò)SSH從一個(gè)平臺(tái)連接到另外一個(gè)平臺(tái),是用python寫的一個(gè)模塊工具,可以查看服務(wù)器的日志,可以批量配置遠(yuǎn)程服務(wù)器,文件上傳,文件下載等,使用Paramiko,我們可以直接使用SSH協(xié)議對(duì)遠(yuǎn)程服務(wù)器執(zhí)行操作,而不是通過(guò)ssh命令對(duì)遠(yuǎn)程服務(wù)器進(jìn)行操作,它封裝了很多常用方法,足夠我們使用了。

        不完全代碼如下:

        然后判斷文件類型,文件類型有許多種,有jsp文件、js文件、txt文件、html文件、xml文件等等,但處理邏輯大抵相同,根據(jù)文件類型做相應(yīng)的處理,我們使用的服務(wù)器系統(tǒng)一般都是Linux,Linux 是一種自由和開(kāi)放源碼的類 UNIX 操作系統(tǒng),任何個(gè)人和機(jī)構(gòu)都可以自由地使用 Linux 的所有底層源代碼,也可以自由地修改和再發(fā)布。正因?yàn)長(zhǎng)inux系統(tǒng)的高效、免費(fèi)和自由,Linux是除了Windows操作系統(tǒng)之外最流行的操作系統(tǒng),在Linux系統(tǒng)中操作,需要了解一些Linux知識(shí),Linux的命令很多,我們掌握一些常用的Linux命令就行了,學(xué)習(xí)成本并不是很大,比如上傳文件的時(shí)候可以使用put方法將我們的文件上傳到相應(yīng)的路徑當(dāng)中,我們要下載的時(shí)候,可以使用get方法獲取服務(wù)器上相應(yīng)路徑之下的我們想要的文件,還有其他的一些我們需要學(xué)會(huì)的Linux常用的辦法如下:

        mkdir方法:可以用于創(chuàng)建目錄。

        remove方法:可以用于刪除目錄。

        rename方法:可以用于重命名。

        stat方法:可以用于獲取文件信息。

        ps方法:可以用于查看Linux系統(tǒng)的進(jìn)程狀態(tài)。

        chown方法: 可以用于修改所屬用戶與組。

        chmod方法 : 可以用于修改用戶的權(quán)限。

        ls或者ll方法:可以用于獲取目錄列表。

        當(dāng)我們想要使用paramiko模塊操作服務(wù)器上文件時(shí),可以先用Linux常用命令構(gòu)造好cmd語(yǔ)句,再用exec_command方法在遠(yuǎn)程服務(wù)器中執(zhí)行我們構(gòu)造好的cmd語(yǔ)句,exec_command方法執(zhí)行完以后會(huì)將元組(stdin,stdout,stderr)作為paramiko.ChanelFile對(duì)象返回,我們獲取這個(gè)元祖,就可以知道在遠(yuǎn)程服務(wù)器當(dāng)中我們發(fā)出的遠(yuǎn)程命令是否執(zhí)行成功,再以此為依據(jù)決定我們是否要進(jìn)一步修正我們的代碼。

        在python當(dāng)中,time() 方法可以返回當(dāng)前時(shí)間的時(shí)間戳。利用time.time()方法,我們可以計(jì)算兩個(gè)時(shí)間點(diǎn)之間的間隔,使用time.strftime()方法可以讓我們獲取的時(shí)間更易讀。這個(gè)方法可以讓我們發(fā)現(xiàn)是否網(wǎng)絡(luò)存在延遲等等,在寫代碼的時(shí)候可以用上。

        我們使用的不完全代碼如下:

        4 結(jié)論

        基于python的遠(yuǎn)程自動(dòng)化發(fā)布系統(tǒng)是Java項(xiàng)目開(kāi)發(fā)的好工具,使用得當(dāng)會(huì)在Java程序在系統(tǒng)實(shí)現(xiàn)的應(yīng)用中均取得了顯著的效果。有這個(gè)工具,將會(huì)減少人為發(fā)布程序的時(shí)間和成本,是個(gè)很好的節(jié)約成本的小工具。安裝使用第三方庫(kù)paramiko,可以很容易實(shí)現(xiàn)我們所需要的功能。

        猜你喜歡
        域名遠(yuǎn)程服務(wù)器
        讓人膽寒的“遠(yuǎn)程殺手”:彈道導(dǎo)彈
        軍事文摘(2022年20期)2023-01-10 07:18:38
        遠(yuǎn)程工作狂綜合征
        通信控制服務(wù)器(CCS)維護(hù)終端的設(shè)計(jì)與實(shí)現(xiàn)
        遠(yuǎn)程詐騙
        如何購(gòu)買WordPress網(wǎng)站域名及綁定域名
        得形忘意的服務(wù)器標(biāo)準(zhǔn)
        計(jì)算機(jī)網(wǎng)絡(luò)安全服務(wù)器入侵與防御
        騰訊八百萬(wàn)美元收購(gòu)域名
        頂級(jí)域名爭(zhēng)奪戰(zhàn):ICANN放出1930個(gè)通用頂級(jí)域名,申請(qǐng)者有上千家
        積分刷刷刷-FTP服務(wù)器篇
        中文字幕乱码一区av久久不卡| 国产午夜在线视频观看| 丰满少妇在线播放bd| 高清午夜福利电影在线| 麻豆婷婷狠狠色18禁久久| 狠狠噜天天噜日日噜视频麻豆| 236宅宅理论片免费| 国产精品公开免费视频| 使劲快高潮了国语对白在线| 国模精品无码一区二区二区| 午夜亚洲AV成人无码国产| 欧美熟妇与小伙性欧美交| 色妞一区二区三区免费视频| 99久久国产免费观看精品| 无码少妇丰满熟妇一区二区| 亚洲av综合永久无码精品天堂 | 亚洲区偷拍自拍29p| 欧美xxxxx精品| 国产精品一区二区蜜臀av| 亚洲av一区二区三区蜜桃| 国产日本在线视频| 亚洲综合一区二区三区久久| 国产精品网站夜色| 午夜日韩视频在线观看| 免费国产不卡在线观看| 无码乱肉视频免费大全合集| 米奇777四色精品人人爽| 久久人人97超碰超国产| 国产精品 精品国内自产拍| 亚洲精品国产一区av| 日本熟妇中出高潮视频| 日韩精品成人无码专区免费| 成人性做爰aaa片免费看| 国产尻逼视频| www.尤物视频.com| 亚洲国产av高清一区二区三区| 国产精品一区二区三区在线蜜桃| 专干老熟女视频在线观看| 一区二区传媒有限公司| 男女发生关系视频网站| 国产激情一区二区三区不卡av|