搭建CloudStack环境(Windows版)

article/2025/9/9 21:50:56

应项目需求,需要使用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,需要下载并运行安装程序,使用以下镜像进行正确下载和安装。

  • http://cygwin.com/setup.exe
  • http://mirrors.kernel.org
  • http://cygwin.mirrors.hoobly.com

 

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.propertiesDBUSER=cloudDBPW=cloudDBROOTPW=admin@123MSLOG=vmops.logAPISERVERLOG=api.logDBHOST=localhostAGENTLOGDIR=logsAGENTLOG=logs/agent.logMSMNTDIR=/mntCOMPONENTS-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,如果加的后者,这样会中断编译。

 


http://chatgpt.dhexx.cn/article/gRQvlLVq.shtml

相关文章

CloudStack高级网络设置

基本设置 参考 https://blog.csdn.net/dandanfengyun/article/details/105726448 测试使用高级网络设置。和基本网络设置基本一样直到添加资源域时状态。。。 开始添加 资源域 添加资源以 选择高级网络设置 配置区域 和基本网络设置类似 注 来宾CIDR 没有必要去修改。。。如…

cloudstack java api_CloudStack API编程指引

前言 本文阐述为CloudStack编写新API或者更新已存在API时应遵循的约定和编程指引。 参考文档 (暂略) 介绍 当你需要为CS添加新的API时&#xff0c;需要创建一个Request类和Response类(或者在扩展CS API功能时它的API Responese已经定义的情况下重用已经存在的API Response类)。…

CloudStack 4.17 安装部署

市面上cloudstack大多部署教程都比较旧&#xff0c;这里写一篇最新版本的部署安装教程&#xff08;4.17&#xff09;&#xff0c;为了方便解释相关配置以及进行相关配置&#xff0c;本篇会把管理节点和计算节点分开写 1.管理节点部署&#xff08;admin&#xff09; 管理节点ip&…

Cloudstack

1、cloudstack介绍 一个开源具有高可用性及扩展性的云计算平台&#xff0c;Cloudstack是一个开源的云操作系统&#xff1b; cloudstack支持管理大部分主流的hypervisors&#xff0c;如&#xff1a;VMware&#xff0c;KVM&#xff0c;Citrix XenServer&#xff0c;Xen Cloud Pla…

【私有云架构】Cloudstack 与 OpenStack:哪个更适合您?

创建云管理平台是因为云计算几乎已成为大多数日常业务使用的必需品。CloudStack 与 OpenStack 之争并不是很重要&#xff0c;而是在控制大量数据的高级云管理平台之间进行选择。 对于许多组织而言&#xff0c;重要的一步是实施逻辑云管理&#xff0c;该管理拥有许多用于控制各种…

CloudStack那些事儿1 : 初识CloudStack

CloudStack是什么呢&#xff1f;百科上对CloudStack的定义如下&#xff1a; CloudStack是一个开源的具有高可用性及扩展性的云计算平台&#xff0c;同时是一个开源云计算解决方案。可以加速高伸缩性的公共和私有云&#xff08;IaaS&#xff09;的部署、管理、配置。使用CloudSt…

OpenStack与CloudStack

目录 一、云计算 二、IaaS 三、OpenStack与CloudStack &#xff08;一&#xff09;概述 &#xff08;二&#xff09;项目历史与运营团队 &#xff08;三&#xff09;架构 &#xff08;四&#xff09;计算 &#xff08;五&#xff09;网络 &#xff08;六&#xff09;存…

CloudStack(二)基础网络模式安装部署

概述: 在CloudStack(一)简介及相关理论介绍里面简单的介绍了下cloudstack的相关概念好让我们安装部署的时候好理解一点,在cloudstack的区域里面有两种网络模式, 基础模式 基础网络模式只提供了简单的网络模型,管理网络、来宾网络(只支持1个来宾网络)、存储网络、V-Route(只提供…

CloudStack 云计算平台框架

前言 CloudStack 和OpenStack 一样都是IaaS层 开源框架&#xff0c;可以管理XenServer、ESXI、KVM、OVM等主流虚拟机&#xff0c;相对OpenStack比较简单、稳定&#xff1b; 二、Cloud Stack架构 Zone&#xff1a;相当于现实中的1个数据中心&#xff0c;它是CloudStack中最大的一…

【大数据实验1】cloudstack安装部署(小白式傻瓜教学)

cloudstack安装部署 0 说明1 Prerequisites 先决条件2 Environment 环境2.0 先看看有没有KVM2.1 Operating System 操作系统2.2 Configuring the network 配置网络2.3 Hostname2.4 SELinux2.5 NTP2.6 Configuring the CloudStack Package Repository 配置CloudStack软件包存储库…

Java线程池

目录 一、什么是线程池 二、线程池有哪些好处? ①降低资源的消耗 ②提高响应速度 ③提高线程的可管理能力 三、线程池如何使用 ①创建线程池​编辑 工厂模式: 工厂模式代码实现: ②往线程池当中添加任务 四、Java当中有哪些线程池 ​编辑 ①Executors.newFixedThreadPool …

线程池(一)线程池的基本使用

一、线程池简介 线程池的概念 线程池就是首先创建一些线相衬&#xff0c;它们的集合称为线程池&#xff0c;使用线程池可以很好的提高性能&#xff0c;线程池在系统启动时既创建大量空闲的线程&#xff0c;程序将一个任务传给线程池。线程池就会启动一条线程来执行这个任务&…

线程池介绍及创建线程池的4种方式

1. 什么是线程池 Java中的线程池是运用场景最多的并发框架&#xff0c;几乎所有需要异步或并发执行任务的程序 都可以使用线程池。在开发过程中&#xff0c;合理地使用线程池能够带来3个好处。 第一&#xff1a;降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成…

线程池的使用

1.线程池使用场景 java中经常需要用到多线程来处理一些业务&#xff0c;我们非常不建议单纯使用继承Thread或者实现Runnable接口的方式来创建线程&#xff0c;那样势必有创建及销毁线程耗费资源、线程上下文切换问题。同时创建过多的线程也可能引发资源耗尽的风险&#xff0c;这…

线程池_线程池详解

1 线程池使用场景&#xff1f; java中经常需要用到多线程来处理一些业务&#xff0c;我们非常不建议单纯使用继承Thread或者实现Runnable接口的方式来创建线程&#xff0c;那样势必有创建及销毁线程耗费资源、线程上下文切换问题。同时创建过多的线程也可能引发资源耗尽的风险&…

Netty 线程池

Netty的线程池有什么样的特性 Java 原生线程池 Java 原生的线程池主要有三种&#xff1a;ThreadPoolExecutor、ScheduledThreadPoolExecutor、ForkJoinPool。 ThreadPoolExecutor 是最古老的类&#xff0c;我们通常说的线程池&#xff0c;也是指这个类。 ScheduledThreadPoo…

Linux —— 线程池

目录 一、什么是线程池 二、线程池的优点 三、线程池的应用 四、实现一个简单的线程池 五、单例模式 1. 饿汉实现方式 2. 懒汉实现方式 3. 单例模式实现线程池&#xff08;懒汉方式&#xff09; 六、其他常见的各种锁 一、什么是线程池 线程池是线程的一种使用模式。在…

线程池的实现原理

系统学习性&#xff0c;移步 IT-BLOG 线程池做的工作主要是控制运行的线程数量&#xff0c;处理过程中将任务放入队列&#xff0c;然后在线程创建后启动这些任务&#xff0c;如果线程数超过了最大数量超出数量的线程排队等候&#xff0c;等其他线程执行完毕&#xff0c;再从队列…

java——线程池

一、线程池 线程池可以看做是线程的集合。它的工作主要是控制运行的线程的数量&#xff0c;处理过程中将任务放入队列&#xff0c;然后在线程创建后 启动这些任务&#xff0c;如果线程数量超过了最大数量超出数量的线程排队等候&#xff0c;等其它线程执行完毕&#xff0c; 再…

java线程池(详解)

线程池介绍 线程池&#xff08;thread pool&#xff09;&#xff1a;一种线程使用模式。线程过多会带来调度开销&#xff0c;进而影响缓存局部性和整体性能。而线程池维护着多个线程&#xff0c;对线程统一管理。 线程池就是存放线程的池子&#xff0c;池子里存放了很多可以复…