===數據庫
聲明:如下內容本是本身寫給單位內部同事的參考手冊,可是被傳到百度文庫中。陸續有用戶就這方面的問題,經過電話,郵件等方式聯繫我。首先,感到榮幸。其次是,因爲本人當時測試和編寫的時候,因爲倉促,可能有存在着缺陷的地方。若是你們在實際的工做中,按照這個方式出現問題或者想和我交流的話,請在該文章下面留言,儘可能回覆你們。最後,我的不表明單位,也不表明官方。json
該文章百度文庫的鏈接以下:安全
我是度娘服務器
下面的內容與文庫有點不同,修改了諸如圖片序列,錯別字等低級錯誤。測試
===加密
在實際的工做環境中,服務的備份與恢復是平常基礎的維護與管理操做。可是直到10.2 的版本,ArcGIS for Server才推出站點的恢復與備份功能。這就致使10.2以前的10.1和10.1sp1的Server,在須要遷移或者從新安裝的時候,沒法重用已有服務。官方的遷移和回覆答案是對site中的全部的服務都須要從新發布。那麼問題就來了,當site中的服務特別的多,更甚發佈服務的mxd文檔找不到的時候,從新發布服務變得比較困難。這個時候就迫切的須要在不須要從新發布服務的狀況下,能批量對已有site中服務進行遷移且在新的site中可以正常的運行。url
在平常的技術支持工做中,常常遇到用戶反饋上述需求。基於上面的目的,爲了測試在不從新發布服務的狀況下,平穩的遷移site。特作了多組測試。最後總結服務遷移的操做方式。spa
測試環境:Windows Server 2008, ArcGIS for Server 10.1, Oracle 11gR23d
因爲服務的可否正常使用,一個關鍵點是服務可以找到對應的數據源,爲了不數據源帶來的影像,在情形一的全部測試中,假設發佈服務的數據源的絕對位置沒有發生變化和鏈接數據源的鏈接方式沒有發生變化。rest
A. Config-store 和directories 存放路徑相同
測試說明:
假設遷移前的ArcGIS for Server的服務目錄爲C:\arcgisserver, config-store和directories 位於該目錄下。且遷移後,新的site的服務目錄不變。
測試步驟:
STEP 1: 拷貝遷移前服務目錄中的 config-store裏面的services目錄和整個directories(更爲方便的方式是拷貝整個arcgisserver目錄)
STEP2: 刪除site
STEP 3:從新建立site,根據前提條件,目錄和原先site保存不變
STEP4:若是STEP1拷貝的只是services和directories 轉到步驟5,拷貝了整個arcgisserver目錄轉到步驟6
STEP5:將步驟1備份的Services目錄和directories 目錄拷貝到新建立的site對應的目錄下,覆蓋對應目錄。因爲data store的存儲信息沒有帶過來,故從新註冊data store(注意,data store和遷移前的如出一轍,包括,data store的名字,鏈接字符串等,不然不能稱爲數據源不變)。
STEP6: 拷貝過來的arcgisserver目錄,因爲拷貝丟失了相關的權限信息。故在文件夾屬性的安全中,賦予ArcGIS for Server的徹底控制選項。
STEP7: 從新啓動服務
結果:
測試的地圖服務,要素服務,gp服務,切片服務都能正常運行。則證實經過這種方式,徹底能夠在不用從新發布服務的狀況下,對站點中的服務進行遷移。測試中發現,STEP5中即便不註冊數據源也能成功,證實在msd中記錄了數據源的鏈接信息。
B. config-store 和directories 存放路徑不一樣
假設遷移前的confg-store和directories在C:\arcigsserver,而新安裝的ArcGIS for Server的目錄在D:\arcigsserver 目錄下。則按照上面1中的測試步驟測試。重啓服務的時候,出現瞭如圖1-1的錯誤。
圖 1‑1重啓服務出現錯誤
這錯誤也有力說明了,服務的發佈是經過msd的形式。既然是msd的路徑沒有改過來,就須要找到Server的配置文檔,並修改相對應的位置,在該過程當中,分別嘗試修改了兩個出現上面路徑的地方
路徑1:在arcgisinput的目錄下的相對應服務目錄下的manifest.json和manifest.xml文件(如arcgisinput\siteRS\MyMapServiceRS.MapServer\extracted\),經過這種方式重啓服務,任然出現圖1錯誤。說明msd的路徑的映射不在該位置。
路徑2:在config-store的services目錄中找到對應的服務目錄,修改了服務名對應的json文件中的相對應路徑(如:config-store\services\siteRS\MyMapServiceRS.MapServer\MyMapServiceRS.MapServer.json)如圖1-2所示:
圖 1‑2服務配置文件
將以上路徑,修改新site中的對應的位置,從新啓動服務。全部服務都能正常啓動。
C. ArcGIS for Server的帳戶不一樣
上面1和2的測試狀況,易出如今Server正常而site的不能正常的狀況,在能夠不從新安裝Server的狀況下,修復site中的服務。
除了上面的狀況,還有一種較爲常見的狀況,就是Server服務不能正常啓動。這個時候就手動須要修復Server。一般推薦的方式,就是經過卸載已有的ArcGIS for Server,而後從新安裝。
測試說明:
備份的ArcGIS for Server的帳戶Administrator 密碼:Administrator,而從新安裝的ArcGIS for Server的帳戶:ArcGIS 密碼:ArcGIS;且arcigsserver目錄保持不變。
測試步驟:
STEP1:卸載前,對config-store中的services和directories或者整個arcgisserver目錄進行備份。
STEP2:刪除Program Files目錄中的所有Server目錄,刪除arcgisserver目錄(也能夠不手動刪除,可是建議所有刪除)
STEP3: 從新安裝Server,建立站點
STEP4:將STEP1中的備份文件拷貝到對應的目錄下
STEP5:重啓服務,可是出現如圖1-3所示的錯誤:
圖 1‑3啓動錯誤
經過查看日誌文件,出現以下建立實例失敗。如圖1-4所示:
圖 1‑4日誌文件
一般出現該問題就是Server的帳戶沒有權限訪問到arcgisserver目錄。爲了驗證是帳戶權限致使該問題,做了以下兩種驗證:
方式1:經過Configure ArcGIS Server Account 更改Server的帳戶,操做如圖1-5所示,更改到備份前Server帳戶。重啓Server服務,服務能正常啓動和使用。
圖 1‑5修改server帳戶
方式2:在不修改server帳戶的前提下,修改arccgisserver文件夾屬性,更改其安全,如圖1-6所示,賦予新的ArcGIS Server帳戶對arccgisserver目錄的控制權限。重啓備份的服務,服務能正常啓動和使用。
圖 1‑6更改文件權限
PS:請注意ArcGIS for Server的帳戶與ArcGIS for Server的管理帳戶的區別。
上面的情形一中,都是默認數據源是相同的。可是在實際的狀況下,有可能出現以下狀況諸如:
更改了Server中的服務的數據源的鏈接字符串,如數據庫的用戶名,密碼或者ip發生了變化,致使經過註冊到Server的舊的sde鏈接字符串沒有辦法訪問新的數據庫。還又如發佈服務的時候數據存儲在filegeodatabase中,如今數據存儲轉存到sde中等等。無論怎麼樣,就是如今的Server訪問不到發佈服務的數據源。
測試說明:
爲了單純的測試數據源的不一樣,該測試中,默認遷移的時候,Server的帳戶和site的存儲位置不變。只改變了鏈接sde的密碼。
測試步驟:
和上面步驟大體同樣。啓動服務,服務可以正常啓動,如圖1-7所示:
圖 1‑7 服務界面
可是經過rest頁面訪問的時候,出現以下1-8的錯誤:
圖 1‑8 錯誤信息
因爲Server端服務的正常與否是由msd決定的。爲了探究可否直接修改msd中的數據源鏈接,來修復服務。嘗試更改了msd的後綴,將其更改成zip,然後解壓,能夠看到msd包括的內容如圖1-9所示:
圖 1‑9 msd的文件結構
其中layers裏面包含了服務的圖層的配置和渲染信息,也記錄了鏈接數據庫的信息。因爲數據庫的密碼已經被加密了,沒有辦法直接去更改xml文檔中的密碼。既然msd是由mxd生成,故選擇修復服務器端的mxd文檔,根據修改後的文檔去從新生成msd。
Mxd和msd都位於該arcgisinput目錄的對應的服務裏,如:
C:\arcgisserver\directories\ArcGISsystem\arcgisinput\SiteRS\MyMapServiceRS.MapServer\extracted\v101
結果:
使用arcmap或者arcpy修復mxd,而後經過arcpy生成msd,覆蓋現當前的msd,從新啓動服務。服務可以正常啓動和使用。同理可推,若是是將數據從file遷移到filegeodatabase或者到sde,或者三種互相遷移,一樣能夠先經過修復服務器端的mxd,而後再生成msd文件,來修復服務。
上面測試的情形,都是註冊了data store的狀況。在實際的狀況中,還有未註冊data store的狀況。因爲不註冊data-store,服務中使用的數據,已經存在在服務目錄的arcgisinput的目錄中以文件(shapefile或者影像)或者filegeodatabase的形式存在。
因爲服務的發佈是經過msd的形式,只要恢復的Server可以訪問到對應的msd文件便可。具體的更改和設置參考情形一中的多種狀況。
在實際的工做中,服務遷移,除了剛纔的在同臺服務器中遷移外,還有一種情形,就是在多臺服務器中之間遷移。
服務器A:ArcGIS for Server10.1+Windows Server2008+Oracle11gR2
服務器B和服務器A的環境一致。
服務器A上安裝了ArcGIS for Server,且具備地圖服務,切片服務,要素服務,gp服務等。須要將這些服務前移到服務器B上,在不須要從新發布服務的狀況下,可以正常使用。
按照單臺服務器遷移的多種狀況,分別進行了測試。大致以下:
首先在服務器B上,安裝與服務器A中的相同版本的Server,構建站點。將服務器A中備份的文件拷貝到服務B arcgisserver相對應的目錄下。
在多臺服務器上的遷移,根據測試的情形不一樣,出現的現象和單臺服務器測試情形徹底同樣。
不一樣的是,若是將服務器A中整個arcgisserver的目錄拷貝到B中,覆蓋B的所有ArcGIS Server目錄的話,B中的站點將會丟失。訪問manager將出現建立站點的頁面,出現這個問題的緣由是,arcgisserver中的config-store記錄了機器是否屬於某個site。爲了不去逐個修改config-store中的machine中的機器名,建議只覆蓋config-store中的services和directories目錄。
根據上面的測試,能夠徹底在不用從新發布服務的狀況下,對已有站點中的服務進行遷移。在遷移的過程當中,須要至少對services和directories目錄進行備份。根據遷移先後的狀況配置狀況,分別進行不一樣的設置。
最爲簡單的遷移模式,遷移先後的Server的用戶名和密碼保持一致,arcgsiserver的物理位置一致,數據的存儲不變,將備份的services目錄和directories目錄覆蓋到對應的目錄下,從新啓動服務便可。
如遷移先後arcgisserver的物理位置發生變化,在上面的基礎上,去config-store的services目錄下,找到服務的配置文件,修改msd的路徑,指向新的路徑。
如數據源發生變化,則須要經過ArcMap或者Arcpy修復服務器端的MXD文檔,而後使用arcpy生成msd,覆蓋舊的msd文件,重啓服務便可。