天天看點

移植搭建阿裡雲linux伺服器

流程:linux購買—–>環境配置——>伺服器代碼移植——>伺服器代碼調試——>伺服器應用安全穩定優化—–>伺服器部署—–>連接配接測試

一、購買

1、必須有個實名認證的賬号,差別企業賬号還是個人賬号。綁定伺服器之後,賬号類型不可更改。

2、登入阿裡雲進行配置選擇,根據業務需求選型。如開通網路帶寬,預設配置設定公網靜态IP和區域網路IP。

3、付款之後,相應賬号會發送相關電腦資訊過來,包括(IP位址,執行個體号,還有控制平台連接配接的密碼)。

4、進入伺服器之後裡面就是一個原始的linux系統,基本上所有的應用軟體需要自己安裝,除去python。

二、環境配置

1、進入之後,建立使用者Ryze自己随便起就好,輸入 密碼和賬号後,使用建立的使用者進行通路,使用用戶端xshell(者别的)進行ssh連接配接。

2、進行顯示配置和python版本下載下傳,如果python使用的版本不支援我們的應用的話,我們要進行另外安裝一個版本的python,目前使用python3.3m,調用LBS應用資料會用到。

3、使用者指令行顯示配置,這個要用到/home/Ryze/目錄下,找到隐藏的.bashrc配置檔案,打開進行配置快捷方式。

4、檔案裡面會标有alias快捷鍵和PS1=’[[\e[32m]#\t#[\e[31m]\u@[\e[36m]\h \w]$[\e[m]’,這個是進行指令行顔色設定的。

5、進行第三方軟體庫的搭建/資料庫/ICE接口/libevent/log4cplus/google/OTL,這些配置中有一部分也是在/home/Ryze/目錄下,裡面的隐藏 檔案叫.bash_profile這個是環境變量的配置詳見伺服器配置檔案。例如:

移植搭建阿裡雲linux伺服器

6、這個.bash_profile運作的前提是/etc/bash_profile檔案已經起作用。ICE和ORACLE的環境變量是在/etc/bash_profile裡面實作定義和export的。

7、配置檔案配置完成之後,要把相應的檔案目錄拷貝過來,盡量的路徑不要變,因為makefile進行編譯時候路徑如果是絕對路徑的話,就會報錯,找不到目錄檔案。

三、代碼移植調試

1、按照編譯鍊的規則修改,盡量保持目錄名字和路徑一樣,進行使用環境變量進行指定路徑,否則後期移植會很麻煩。

2、把移植過來的源碼檔案進行順序編譯:

common—>protocol—>session—>balance—>task—>upload—>sending—>timing

3、編譯第一個common源碼,可能使用makefile會報很多錯誤,先進行單個.cpp檔案進行編譯,通過報出的錯誤看看是什麼資訊。在進行靜态或者是動态庫的添加。

4、編譯過程中需要的頭檔案和庫檔案

.h檔案:

/user/local/include/python3.3m

/user/local/include/log4cplus

/user/local/include/google

/opt/oracle

/opt/Ice-3.5.0

/HOME/include/common

以上的檔案一定要把全部拷貝到新的伺服器上面。

.so和.a檔案:(這些檔案是編譯連結的時候用的,不可缺少)

/user/local/lib

/$HOME/common/lib

說明:我們的應用程式隻是調用的python3.3m的庫,在linux中的一些開發環境和依賴都是python2.6.6。 兩者千萬别更新,否則應用調用失敗。

5、以上檔案準備好之後,編譯還是會有問題,這時候要進行強調内容新的ln軟連接配接建立,因為這個庫進行連接配接的時候會調用動态連結庫,可能實際

的庫在變 化,但是連結庫不會變化。

6、檔案全部編譯成功之後,代碼沒有報錯,但是運作時候直接挂掉,因為運作配置還有很多沒有配置,不符合目前的運作環境導緻出錯,我們一個個進行排查

balance程序:運作報出連接配接資料庫出錯。

@1:抛出錯誤資訊是:ORA-21561,經過查找是因為linux的hostname與/etc/sysconfig/network下的對應的127.0.0.1對應的名字不一樣導緻。

阿裡雲購買的時候給出的是伺服器串号:****************很長的名字

然而配置檔案中是:localhost,就會導緻對應連接配接的時候,oracle驗證失敗,這時候要對伺服器串号進行修改成localhost即可。之後運作DB連接配接成功。

在linux指令行下進行輸入:hostname 會顯示的阿裡雲配置設定的一串号碼.這個與/etc/sysconfig/network不同,就會導緻ORACLE驗證失敗。這時候修改這個裡面的檔案名字與/etc/hosts裡面的127.0.0.1對應的localhost一樣即可。配置完成要重新開機才生效或者重新開機網卡。這時候連接配接資料庫正常。

遠端redis出錯,這個應該是iptables端口和IP過濾的原因,之前因為是本地連接配接redis不需要進行外網開放。現在阿裡雲服務端要進行連接配接遠端redis,是以要在Iptables中進行端口源IP添加信任。現在啟用本地redis服務,再次連接配接成功。

task服務程式運作失敗:

iptables中并沒有限制,後來才發現是阿裡的服務層面做了端口限制。因為在購買的時候,上面有個預設的端口開放配置,隻開放了ICMP和22/2389端口其他的端口沒有開放。是因為購買的是香港伺服器,寬帶都是專網,沒有經典網絡選擇。實際的公網IP不針對你這台伺服器,應該是nat映射過來的資訊。是以說阿裡在控制台增加了端口配置,你開放哪個端口,他就會把相應的端口的映射到你的内網linux機子上(這是我的了解)。

登入阿裡的控制台,添加了安全政策和規則,開放了相應的的端口,再次進行連接配接成功。

sending程序:

出現ICE元件異常,ICE 異常Address family not supported by protocol family

這個是因為有的系統導緻ICE的元件異常,或者是底層的network代碼導緻用法不同導緻,例如綁定的時候

srv = “default -p 25555”,原先代碼是沒有問題的,但是移植到阿裡雲上的伺服器就出現了問題,應該是NetWork.cpp不同導緻的。

這裡是與linux系統有關系的。

這時候修改成 srv = “default -h 127.0.0.1 -p 25555”,運作時候就正常了。但是這種綁定本機回環位址的做法,外網是不可通路的,這時候

我們就必須填寫一個公網IP,于是填寫阿裡雲的外網IP。

但是提示另一個錯誤:

要解決這個問題就需要綁定内網的IP位址才可以(阿裡雲香港專網:提供内網和公網IP)。

這個公網IP不能綁定和支援,因為我們是阿裡雲香港的伺服器,這裡IP是進行虛拟nat出來的,是以外網需要映射到内網位址上才可以。

這時候因為阿裡雲提供雲控制端,是以開放端口和安全政策的時候,會自動映射到對應的内網IP上去(意思應該就是這樣)。

是以我們在控制台開放端口25555即可。(同上一個産不多)

ICE元件我覺得異常是因為系統中底層NetWork.cpp中的函數用法不一樣所導緻。要把位址寫全 就可以了。

redis-srv redis_sending.conf&

這個redis服務程式要在背景運作才可以,因為這個程式會卡住前台運作程序,導緻終端停掉。

(以上的資訊僅供參考,雖然上層應用不同,但是底層與系統打交道的我覺得還是有比較相似的地方,隻說明異常,不論其他)

四、伺服器代碼調測略過

五、伺服器代碼部署

1、啟動添加運作應用程式

/etc/rc.d/rc.local

linux啟動程序會啟動rc.1 rc.2 rc.3 …..rc.local,最後的rc.local中是我們應用層啟動的代碼應該寫的地方。

vi rc.local打開檔案需要root使用者,否則無法打開檔案,

裡面添加shell語句

runuser -l Ryze/home/coglink/release/script/run_all.sh

runuser -l Ryze /home/coglink/release/script/redis_monitor.sh

2、crontab日常程序監護運作

下載下傳crontab日常程序監控軟體,安裝之後啟用服務。

使用crontab -l進行檢視,會提示:

no crontab for 使用者名字

這個是因為,你沒有把crontab日常任務進行編寫,導緻顯示你使用者沒有任務日程,你隻要使用

crontab -e進行編輯之後儲存既可以。

10 4 * * * /HOME/release/script/run_all_upload.sh

10 9 * * * /HOME/release/script/run_all_upload.sh

5,10,15,20,25,30,35,40,45,50,55 * * * * $HOME/release/script/redis_monitor.sh

分 時 日 月 星期(0 代表周日)+ 運作腳本

相同時間屬性的要以,号隔開,最後一個不需要逗号。

其他沒填寫的用*代表,預設每個對應的時間屬性都執行。

注:以上僅供參考。

繼續閱讀