应项目需求,需要使用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.exe3 运行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,如果加的后者,这样会中断编译。