搭建CloudStack環境(Windows版)

應項目需求,需要使用CloudStack搭建雲平臺,結合官方文檔和網上資料,網上資料參差不齊,最後還是自己總結一下安裝CloudStack的詳細教程。

目錄

Step 1) 安裝Cygwin

Step 2) 安裝JDK

Step 3) 安裝Python 2.7

Step 4) 安裝Tomcat 6+

Step 5) 安裝MySQL

Step 6) 安裝Python connector for MySQL

Step 7) 安裝Ant

Step 8) 安裝Maven 3.0

Step 9) 安裝mkisofs

Step 10) 下載CloudStack源代碼

Step 11) 生成SSH Key

Step 12) 配置CloudStack mysql的密碼

Step 13) 構建和運行項目

常見問題


Step 1) 安裝Cygwin

 

要安裝Cygwin,需要下載並運行安裝程序,使用以下鏡像進行正確下載和安裝。

 

Cygwin和很多程序不喜歡路徑中的空格。當安裝路徑時,使用例如“C:\bin\cygwin”或“C:\cygwin”之類無空格的路徑。

在Cygwin的安裝過程中,需要選擇從網絡下載安裝還是從本地安裝,筆者是從網絡下載安裝的,如圖下圖所示:

點擊下一步選擇鏡像,如果鏡像列表加載失敗,可以自行添加鏡像。如圖:

輸入網易鏡像,http://mirrors.163.com/cygwin/,再點擊Add。最後

選擇http://mirrors.163.com,再點擊下一步,安裝選項將下載、緩存和安裝您選擇的軟件包。

1)進入Select Packages界面:

2)選擇要安裝的默認軟件包是不夠的,因爲不包括開發和公共編輯器。

3)在“Devel”下,選擇git作爲“Install”。

4)在“Editors”下,根據你希望從Cygwin命令行獲得的內容選擇vim或emacs,筆者我選的vim編輯器;

5)在“Libs”下,選擇libsasl2;

6)在“Net”下,選擇cacertificates和openssh;

7)爲“Install”選擇Python;

8)在“Utils”下,選擇genisoimage和mkisofs

9)根據選擇的鏡像(大約30分鐘或更長),下載可能會很慢。

10)將不必要的軟件包類別設置爲“uninstall”,例如KDE和GAMES。

 

安裝後,請執行以下操作。這將確保maven構建可以訪問這兩個實用程序:

1 使用管理員權限打開命令提示符。

2 cd到安裝cygwin的目錄,即C:\cygwin\bin,創建mkisofs和genisoimage以及python的軟鏈接。

..\bin> mklink mkisofs.exe genisoimage.exe

..\bin> mklink python.exe python2.7.exe

3 運行Cygwin。

 

在/etc/fstab中將:“none/cygdrive cygdrive binary,posix=0,user 0 0” 改爲 “none/cyg  cygdrive binary,posix=0,user 0 0”。輸入/cyg/c來代替/cygdrive/c來換一個不同的驅動器,這樣會更短。它還刪除了導致生成問題的posix acl語義,因爲生成試圖操作文件權限,並導致Windows文件系統出現大問題。

 

完成安裝之後,還可以再次運行cygwin setup來更新包。在這種情況下,它將使用您最後選擇的包作爲默認值。

注意:打開Cygwin shell時,Windows環境變量(包括PATH)將會導入shell環境。

 

Step 2) 安裝JDK

 

1) 可以從http://www.oracle.com/technetwork/java/javase/downloads/index.html下載最新的JDK。

2 )選擇與O/S類型(32位或64位)相對應的自安裝可執行文件。

3 )當詢問安裝路徑時,儘量使用沒有空格的路徑。例如,“C:\bin\Java\jdk1.7.0_25”。

4 )注意您正在安裝它的位置。將Windows系統變量JAVA_HOME設置爲此路徑。

5 )刪除用戶JAVA_HOME變量,以防止系統變量被覆蓋。

6 )將%JAVA_HOME%\bin添加到PATH系統變量。

 

通過打開cygwin終端並使用它來發現java和javac的位置來驗證以上內容。如下圖:

$ which java

/cyg/c/bin/Java/jdk1.7.0_25/bin/Java

$ which javac

/cyg/c/bin/Java/jdk1.7.0_25/bin/javac

 

Step 3) 安裝Python 2.7

 

如果您在Cygwin安裝中創建了python2.7.exe的軟鏈接,則可以跳過此步驟。

CloudStack包含Python代碼的一部分。剛剛我們安裝了Cygwin Python,但是maven構建過程的某些部分還需要“本機”Python安裝,因爲它無法訪問Cygwin安裝。

1)從https://www.python.org/ftp/python/下載並安裝。

2)還可以從http://pypi.python.org/pypi/setuptools下載並安裝setuptools。

3)將路徑(通常是C:\Python27)添加到Windows系統環境變量路徑中。

 

Step 4) 安裝Tomcat 6+

 

可忽略此步驟。

出於開發目的,可以不需要Apache Tomcat。有一些Maven腳本可用來啓動Jetty中的管理服務器,它提供了Tomcat功能。

Apache Tomcat是託管CloudStack管理服務器的開源web服務器和servlet容器。

 

Step 5) 安裝MySQL

 

http://dev.mysql.com/downloads/mysql/5.0.html#downloads下載。

推薦使用5.1.x,然而,開發人員是使用的5.5版本。

在環境變量中添加mysql\bin目錄。在Cygwin可以訪問到mysql。

 

Step 6) 安裝Python connector for MySQL

Python 2.7的MySQL connector的下載地址爲http://dev.mysql.com/downloads/connector/python/,但此種下載安裝的方式可能會報錯,需要各種依賴。

推薦使用以下方式 pip mysql-python安裝:

https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysql-python下載驅動,打開網頁Ctrl+F搜索mysql-python,選擇對應版本下載,如圖。

下載完後,打開cmd利用pip安裝mysql-python,如圖。

 

Step 7) 安裝Ant

 

手動安裝Ant僅針對CloudStack 4.0需要。

Ant只有壓縮包,沒有安裝文件。將Ant壓縮包解壓到希望運行Ant的目錄下,路徑中不 要有空格,如“c:\csdev\ant”。增加Windows系統變量ANT_HOME,設置其值爲Ant的安裝 路徑。修改系統變量PATH,將“;%ANT_HOME%\bin”添加到變量值的最後。 測試環境變量時,可以打開Cygwin,執行命令“which ant”,此時將返回Ant執行文件 的路徑。

 

Step 8) 安裝Maven 3.0

 

Maven的下載地址爲http://maven.apache.org/download.html。CloudStack需要使用 Maven 3.x版本。 Maven只有壓縮包,沒有安裝文件。將Maven壓縮包解壓到希望運行Maven的目錄下, 路徑中不要有空格,如“c:\csdev\maven”。增加Windows系統變量M2_HOME,設置其值爲 Maven的安裝路徑,如“c:\csdev\maven”。增加Windows系統變量M2,設置其值“%M2_HOME%\bin”。修改系統變量PATH,將“;%M2%”添加到變量值的最後。

測試環境變量時,可以打開Cygwin,執行命令“which mvn”,此時將返回Maven執行 文件的路徑。

 

Step 9) 安裝mkisofs

 

如果您已經在步驟1下創建了軟鏈接,請忽略此步驟。使用“which”檢查mkisofs是否已經可用。如下:

$ which mkisofs

/usr/bin/mkisofs

 

Cygwin的mkisofs是一個軟鏈接。這些不能用於構建。

相反地,需要從http://svnpenn.blogspot.com/2011/06/mkisofs-forwindows_24.html下載mkisofs,放在 Cygwin\bin目錄下,然後創建軟鏈接。

 

Step 10) 下載CloudStack源代碼

 

打開Cygwin,執行命令“cd /”,創建opt目錄(自定義)。 執行“git clone https://git-wip-us.apache.org/repos/asf/CloudStack.git”命令,也可以下載源代碼的ZIP包並解壓到opt目錄。

 

Step 11) 生成SSH Key

 

在$HOME目錄中生成ssh密鑰(CloudStack管理服務器將在運行時查找此密鑰)。

可以直接使用默認值,命令如下:

$ ssh-keygen -t rsa –q

注意:在其他目錄下執行該命令可能會失敗,此時可以先通過“cd~”命令訪問 “$HOME”目錄,再執行該命令。

 

Step 12) 配置CloudStack mysql的密碼

 

修改“build/replace.properties”文件,在這裏只需要配置DBROOTPW參數(就是數據 庫root用戶的密碼),示例如下。

$ vim build/replace.properties

DBUSER=cloud

DBPW=cloud

DBROOTPW=admin@123

MSLOG=vmops.log

APISERVERLOG=api.log

DBHOST=localhost

AGENTLOGDIR=logs

AGENTLOG=logs/agent.log

MSMNTDIR=/mnt

COMPONENTS-SPEC=components-premium.xml

 

Step 13) 構建和運行項目

 

進入目錄cloudstack 源碼目錄:

執行:

1、mvn clean

2、mvn -P deps -DskipTests=true 下載依賴

3、mvn install -DskipTests=true

4、mvn -P developer -Ddeploydb -pl developer  初始化數據庫

5、運行:mvn -pl client jetty:run

 

在執行第5條命令時,報錯:

WARN  [c.c.u.s.Script] (main:null) Exception: 
/bin/bash -c if [ -f C:\Users\Think\.ssh\id_rsa.cloud ]; then rm -f C:\Users\Think\.ssh\id_rsa.cloud; fi; ssh-keygen -t rsa -N '' -f C:\Users\Think\.ssh\id_rsa.cloud -q
java.io.IOException: Cannot run program "/bin/bash": CreateProcess error=2, 系統
找不到指定的文件。
...
...
Caused by: java.io.IOException: CreateProcess error=2, 系統找不到指定的文件。
        at java.lang.ProcessImpl.create(Native Method)
        at java.lang.ProcessImpl.<init>(ProcessImpl.java:386)
        at java.lang.ProcessImpl.start(ProcessImpl.java:137)
        at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
        ... 72 more
WARN  [c.c.s.ConfigurationServerImpl] (main:null) Cannot read the public key file
java.io.FileNotFoundException: C:\Users\Think\.ssh\id_rsa.cloud.pub (系統找不到指定的文件。)
        at java.io.FileInputStream.open0(Native Method)
        at java.io.FileInputStream.open(FileInputStream.java:195)
        at java.io.FileInputStream.<init>(FileInputStream.java:138)
        at com.cloud.server.ConfigurationServerImpl.updateKeyPairs(Configuration
ServerImpl.java:721)
        at com.cloud.server.ConfigurationServerImpl.persistDefaultValues(Configu
rationServerImpl.java:291)
        at com.cloud.server.ConfigurationServerImpl.configure(ConfigurationServe
rImpl.java:152)
        at org.apache.cloudstack.spring.lifecycle.CloudStackExtendedLifeCycle$3.
with(CloudStackExtendedLifeCycle.java:117)

不要急,根據提示找問題。

1.提示“C:\Users\Think\.ssh\id_rsa.cloud.pub (系統找不到指定的文件。)”,需要將生成的.ssh文件複製到windows用戶目錄下,再改變密鑰文件名稱,將id_rsa(私有密鑰)改爲id_rsa.cloud,將id_rsa.pub(公有密鑰)改爲id_rsa.cloud.pub。如下圖:

2.提示"cannot run program bin/bash"命令,只需將Cygwin\bin目錄添加到windows系統環境變量中。

問題解決,進入目錄cloudstack 源碼目錄,再次執行第5條的命令,沒有報錯信息,啓動成功啦。

CloudStack管理服務器就在運行狀態了。

 

最後打開瀏覽器訪問http://localhost:8080/client,界面如下:

輸入CloudStack初始的賬戶名(admin)和密碼(password)。登錄成功後,第一次登錄成功會創建區域、提供點等。點擊跳過直接進入首頁如下:

部分界面如下:

 

常見問題

1) 如果啓動項目出現內存不足的情況,設置 Tomcat的JVM內存: export MAVEN_OPTS="-XX:MaxPermSize=256m -Xmx1024m -Xms256m"。

2) 修改cloudstack數據庫地址:需要修改文件:

cloudstack/build/replace.properties

cloudstack/utils/conf/db.properties 

cloudstack/tools/devcloud/devcloud.cfg

3)執行mvn -P desp 和mvn install 時,如果不加-DskipTests=true參數,可能會有一些測試模塊報錯和一些maven測試插件報錯。注意是加-DskipTests=true,不要加-Dmaven.test.skip=true,如果加的後者,這樣會中斷編譯。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章