一種WebApp開發(fā)部署方法及系統(tǒng)的制作方法
【技術領域】
[0001]本發(fā)明涉及互聯(lián)網(wǎng)技術領域,特別涉及一種WebApp開發(fā)部署方法及系統(tǒng)。
【背景技術】
[0002]隨著互聯(lián)網(wǎng)技術的發(fā)展,WebApp得到了越來越重要的應用。WebApp是指基于Web的系統(tǒng)和應用,其作用是向廣大的最終用戶發(fā)布一組復雜的內容和功能。webApp框架是一種簡單的與WSGI兼容的網(wǎng)絡應用程序框架,可以與App Engine配合使用。不必為了使用App Engine而使用webApp網(wǎng)絡服務器支持任何使用CGI的Python應用程序。webApp提供一種簡單的方式來開始為App Engine開發(fā)應用程序。
[0003]WebApp說白了就是一個針對Iphone、Android優(yōu)化后的web站點,它使用的技術無非就是HTML或HTML5、CSS3、JavaScript,服務端技術JAVA、PHP、ASP。需要注意的是webApp開發(fā)還是比較有限的。因為WebApp開發(fā)不能整合設備的核心功能,比如發(fā)文本信息,也不能充分使用APP Store進行銷售和更新。但是WebApp開發(fā)也有其優(yōu)勢所在。首先它解決了 iphone APP的可擴展性問題,因為它是可以跨平臺使用的。比如你開發(fā)了一款WebApp,那么它既可以在手機iphone上使用,也可以再平板ipad上使用,而不像iphone APP那樣只針對某個平臺。其次WebAPP也繞開了 APP store嚴格的提交和更新審查規(guī)則。眾所周知,隨著APP store中的APP逐漸增多,APP store也推出了一系列的提交和審查規(guī)則,可謂相當之嚴格。而WebApp則繞開了這些提交和更新審查規(guī)則,從而使得WebApp的升級和維護變得更容易。因為它是一個獨立的站點,而不是依附于app store上的,不管是升級還是維護在客戶端進行即可,無需提交審核。最后則是開發(fā)語言了。相比較Objective-C而言,HTML、CSS以及JavaScript學起來要容易多了。且對于傳統(tǒng)開發(fā)者來說,HTML、CSS以及JavaScript基本都是可以直接上手的,省去了前期的培訓工作。
[0004]對于WebApp來說,現(xiàn)有的開發(fā)部署都是基于本地開發(fā),通過FTP或SFTP部署。開發(fā)調試及部署分離,開發(fā)效率較低,缺少流程化,自動化部署人工出錯較大。亟需要一種開發(fā)調試部署一體化的整體解決方案,以提高整體WebApp的開發(fā)效率。
【發(fā)明內容】
[0005]本發(fā)明提供一種WebApp開發(fā)部署方法及系統(tǒng),用以解決現(xiàn)有技術中WebApp開發(fā)調試及部署分離,開發(fā)效率較低,缺少流程化的問題。
[0006]本發(fā)明提供一種WebApp開發(fā)部署方法,包括:
[0007]監(jiān)聽fileSystem pro ject工程列表文件目錄,當所述工程列表文件目錄中文件發(fā)生改變時,上傳所述文件到服務器;
[0008]服務器啟動監(jiān)控Demon,刷新Live服務,同時監(jiān)聽部署目錄;當所述部署目錄發(fā)生改變時,所述監(jiān)控Demon殺掉進程,重啟主程序;
[0009]前端WebApp映入Live刷新服務,重新加載刷新。
[0010]所述fileSystem pro ject工程列表文件目錄通過遞歸方式監(jiān)聽。
[0011]所述fileSystem project工程列表文件目錄中記錄工程列表文件信息,當所述工程列表文件信息發(fā)生改變時,同步更新所述工程列表文件目錄。
[0012]所述部署目錄根據(jù)工程列表文件的部署情況進行改變。
[0013]所述方法還包括:
[0014]所述主程序重啟時,通知所述前端WebApp映入Live刷新服務。
[0015]所述WebApp為本地開發(fā)。
[0016]一種WebApp開發(fā)部署系統(tǒng),包括:
[0017]開發(fā)裝置,用于監(jiān)聽fileSystem pro ject工程列表文件目錄,當所述工程列表文件目錄中文件發(fā)生改變時,上傳所述文件到服務器;
[0018]服務器,用于啟動監(jiān)控Demon,刷新Live服務,同時監(jiān)聽部署目錄;當所述部署目錄發(fā)生改變時,所述監(jiān)控Demon殺掉進程,重啟主程序;
[0019]前端WebApp,用于映入Live刷新服務,重新加載刷新。
[0020]所述開發(fā)裝置還用于本地開發(fā)所述WebApp。
[0021]所述服務器在重啟主程序后,通知所述前端WebApp映入Live刷新服務。
[0022]所述服務器還用于維護所述部署目錄,所述部署目錄根據(jù)工程列表文件的部署情況進行改變。
[0023]本發(fā)明實施例中,通過監(jiān)聽fileSystem pro ject工程列表文件目錄,當工程列表文件目錄中文件發(fā)生改變時,上傳文件到服務器;服務器啟動監(jiān)控Demon,刷新Live服務,同時監(jiān)聽部署目錄;當部署目錄發(fā)生改變時,監(jiān)控Demon殺掉進程,重啟主程序;前端WebApp映入Live刷新服務,重新加載刷新。本發(fā)明實施例能夠使WebApp達到本地開發(fā),自動上傳,服務自動部署啟動,通知前端refrsh,前端自動重載,全部自動化。減少人工干預,提高整體開發(fā)及部署能力流程化。
[0024]本發(fā)明的其它特征和優(yōu)點將在隨后的說明書中闡述,并且,部分地從說明書中變得顯而易見,或者通過實施本發(fā)明而了解。本發(fā)明的目的和其他優(yōu)點可通過在所寫的說明書、權利要求書、以及附圖中所特別指出的結構來實現(xiàn)和獲得。
[0025]下面通過附圖和實施例,對本發(fā)明的技術方案做進一步的詳細描述。
【附圖說明】
[0026]附圖用來提供對本發(fā)明的進一步理解,并且構成說明書的一部分,與本發(fā)明的實施例一起用于解釋本發(fā)明,并不構成對本發(fā)明的限制。在附圖中:
[0027]圖1為本發(fā)明實施例1提供的一種WebApp開發(fā)部署方法原理流程圖;
[0028]圖2為本發(fā)明實施例2提供的一種WebApp開發(fā)部署系統(tǒng)結構示意圖。
【具體實施方式】
[0029]以下結合附圖對本發(fā)明的優(yōu)選實施例進行說明,應當理解,此處所描述的優(yōu)選實施例僅用于說明和解釋本發(fā)明,并不用于限定本發(fā)明。
[0030]如圖1所示,為本發(fā)明實施例1提供的一種WebApp開發(fā)部署方法原理流程圖,其中,
[0031]步驟11,監(jiān)聽fileSystem project工程列表文件目錄,當工程列表文件目錄中文件發(fā)生改變時,上傳文件到服務器。
[0032]一般來說,WebApp需要本地開發(fā)。本地開發(fā)的WebApp程序文件需要通過開發(fā)調試及部署分離,其中需要大量的人工操作。這個過程中,有許多個環(huán)節(jié)可能出現(xiàn)錯誤。一旦出現(xiàn)錯誤,就會影響整理軟件開發(fā)部署進程,從而影響最終的用戶體驗。
[0033]本實施例中,通過監(jiān)聽fileSystem pro ject工程列表文件目錄D (遞歸)來監(jiān)控開發(fā)工程列表文件的改變。通常的,工程列表文件目錄D中維護著工程列表文件,其中,所有開發(fā)部署的工程文件都在此保存具體的文件信息。這些文件信息實時的保存,并在文件改變后及時進行目錄D中文件信息的變更。因而,工程列表文件目錄D中,實際上保存這所有需要部署的文件信息,因而,通過監(jiān)控該目錄D,可以及時發(fā)現(xiàn)所有工程列表文件的變化,并及時作出調整。
[0034]一般來說,工程列表文件目錄D (遞歸)中通過遞歸方式監(jiān)聽。
[0035]本實施例中,通過watchfile來監(jiān)控工程列表文件目錄D, —旦發(fā)現(xiàn)文件發(fā)生改變modified,立即將該文件以及文件信息上傳S服務器。本步驟的目的在于將監(jiān)控到發(fā)生改變的工程列表文件及時上傳到S服務器,由S服務器繼續(xù)后續(xù)的操作。
[0036]步驟12,服務器啟動監(jiān)控Demon,刷新Live服務,同時監(jiān)聽部署目錄;當所部署目錄發(fā)生改變時,監(jiān)控Demon殺掉進程,重啟主程序。
[0037]通常的S服務器中維護著所有在線進程的Live服務。在收到上傳的工程文件后,S服務器需要啟動監(jiān)控程序Demon。這個Demon監(jiān)控程序首先刷新相應的Live服務,監(jiān)控相應的改變,并監(jiān)聽部署目錄。這里的部署目錄中維護著需要部署的文件列表。當有文件需要部署時,更新該部署目錄。從而,通過監(jiān)控部署目錄就可以獲知需要部署的文件列表,從而進行相應的部署。
[0038]當部署目錄發(fā)生改變的時候,也就是有文件需要部署。此時,監(jiān)控程序Demon殺掉與該文件部署相關的進程,并重新啟動主程序。
[0039]通常,在linux下,用ps查看進程。-e顯不所有進程。-f全格式。-h不顯不標題。-1長格式。-w寬輸出。_a顯示終端上的所有進程,包括其他用戶的進程。-r只顯示正在運行的進程。-X顯示沒有控制終端的進程。一般用ps auxlgr印進程名搜索某個進程。殺死進程一般用kill進程號。比如,ps出來的某個進程如下所示:
[0040]4948 ? Ss 0: OOxinetd-stayalive-pidfile/var/run/xinetd.pid
[0041]殺死該進程命令為ki 114948。
[0042]如果要殺死一組進程用killall進程組名。
[0043]而在Windows環(huán)境下殺死進程的過程則分為以下幾種方式:
[0044]普通殺死:
[0045]Tasklist:列出所有的計算機正在運行的進程cmd-)) tasklist ;
[0046]Tskill:殺死進程tskill+進程名;
[0047]強殺:
[0048]用Windows自帶的工具就能殺大部分進程:
[0049]c:>ntsd_c q-p PID
[0050]只有System、SMSS.EXE和CSRSS.EXE不能殺。前兩個是純內核態(tài)的,最后那個是Win32子系統(tǒng),運行ntsd本身需要它。
[0051]ntsd命令是從2000開始的系統(tǒng)自帶的調試工具。被調試器附著(attach)的進程會隨調試器一起退出,所以可以用來在命令行下終止進程。
[0052]使用ntsd自動就獲得了 debug權限,從而能殺掉大部分的進程。用法:開個cmd.exe窗口,輸入:
[0053]ntsd-c q-p PID
[0054]把最后那個PID,改成你要終止的進程的ID。如果你不知道進程的ID,任務管理器一〉進程選項卡一〉查看一〉選擇列一〉勾上〃PI