• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

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

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

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

      0 前言

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

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

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

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

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

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

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

      1 開發(fā)語言的選用

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      不完全代碼如下:

      然后判斷文件類型,文件類型有許多種,有jsp文件、js文件、txt文件、html文件、xml文件等等,但處理邏輯大抵相同,根據(jù)文件類型做相應(yīng)的處理,我們使用的服務(wù)器系統(tǒng)一般都是Linux,Linux 是一種自由和開放源碼的類 UNIX 操作系統(tǒng),任何個人和機(jī)構(gòu)都可以自由地使用 Linux 的所有底層源代碼,也可以自由地修改和再發(fā)布。正因為Linux系統(tǒng)的高效、免費(fèi)和自由,Linux是除了Windows操作系統(tǒng)之外最流行的操作系統(tǒng),在Linux系統(tǒng)中操作,需要了解一些Linux知識,Linux的命令很多,我們掌握一些常用的Linux命令就行了,學(xué)習(xí)成本并不是很大,比如上傳文件的時候可以使用put方法將我們的文件上傳到相應(yīng)的路徑當(dāng)中,我們要下載的時候,可以使用get方法獲取服務(wù)器上相應(yīng)路徑之下的我們想要的文件,還有其他的一些我們需要學(xué)會的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ù)器上文件時,可以先用Linux常用命令構(gòu)造好cmd語句,再用exec_command方法在遠(yuǎn)程服務(wù)器中執(zhí)行我們構(gòu)造好的cmd語句,exec_command方法執(zhí)行完以后會將元組(stdin,stdout,stderr)作為paramiko.ChanelFile對象返回,我們獲取這個元祖,就可以知道在遠(yuǎn)程服務(wù)器當(dāng)中我們發(fā)出的遠(yuǎn)程命令是否執(zhí)行成功,再以此為依據(jù)決定我們是否要進(jìn)一步修正我們的代碼。

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

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

      4 結(jié)論

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

      猜你喜歡
      域名遠(yuǎn)程服務(wù)器
      讓人膽寒的“遠(yuǎn)程殺手”:彈道導(dǎo)彈
      軍事文摘(2022年20期)2023-01-10 07:18:38
      遠(yuǎn)程工作狂綜合征
      英語文摘(2021年11期)2021-12-31 03:25:18
      通信控制服務(wù)器(CCS)維護(hù)終端的設(shè)計與實現(xiàn)
      遠(yuǎn)程詐騙
      如何購買WordPress網(wǎng)站域名及綁定域名
      得形忘意的服務(wù)器標(biāo)準(zhǔn)
      計算機(jī)網(wǎng)絡(luò)安全服務(wù)器入侵與防御
      騰訊八百萬美元收購域名
      頂級域名爭奪戰(zhàn):ICANN放出1930個通用頂級域名,申請者有上千家
      積分刷刷刷-FTP服務(wù)器篇
      阳新县| 桐城市| 永德县| 济阳县| 澄江县| 吴堡县| 桂阳县| 台东市| 苏州市| 晴隆县| 宝清县| 扶绥县| 商南县| 体育| 四川省| 日喀则市| 永靖县| 靖边县| 桂平市| 太和县| 徐闻县| 三都| 宜宾县| 巴青县| 庆阳市| 湄潭县| 得荣县| 仁怀市| 锦屏县| 靖边县| 镇平县| 博白县| 林西县| 宽城| 赫章县| 五寨县| 丹凤县| 孙吴县| 宝山区| 漾濞| 湘乡市|