應項目需求,需要使用CloudStack搭建雲平臺,結合官方文檔和網上資料,網上資料參差不齊,最後還是自己總結一下安裝CloudStack的詳細教程。
目錄
Step 6) 安裝Python connector for MySQL
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,如果加的後者,這樣會中斷編譯。