使用范围:该文档仅适用于ovirt-engine3.3(不包含3.3)以下版本的构建。
此文章根据http://www.ovirt.org/Building_oVirt_engine翻译,我已在本机linux环境搭建成功,现将部署步骤描述下来。
一、前提环境
1.基于Linux操作系统,并且安装有OpenJDK1.7及以上版本、Maven3及PostgreSQL8.48及更高版本。
2.网络连通。
二、安装构建环境
1.OpenJDK1.7
使用安装包或者yum安装openjdk1.7.0
#> yum install -y java-1.7.0-openjdk-devel |
使用“alternatives”命令验证javac是否已经指向已安装的Jdk1.7路径。
$> alternatives --display javac javac - status is auto. link currently points to /usr/lib/jvm/java-1.7.0-openjdk.x86_64/bin/javac ... |
如果javac没有指向正确的目录,那么可以使用以下命令进行设置。
$> alternatives --set javac /usr/lib/jvm/java-1.7.0-openjdk.x86_64/bin/javac |
2.安装git
使用安装包或者yum安装git
#> yum install -y git |
3.安装maven
oVirt engine使用maven的版本为3.0.x,maven 2版本不支持。
使用yum安装方法
#> yum install -y maven |
使用下载源码包的方式如下:
$> wget ftp://ftp.mirrorservice.org/sites/ftp.apache.org/maven/maven-3/3.0.5/binaries/apache-maven-3.0.5-bin.tar.gz $> tar xvf apache-maven-3.0.5-bin.tar.gz |
环境变量的配置如下:
$> PATH=$HOME/apache-maven-3.0.5/bin:$PATH $> export PATH |
验证Maven的环境变量已经设置成功
$> mvn -version Apache Maven 3.0.5 (r01de14724cdef164cd33c7c8c2fe155faf9602da; 2013-02-19 14:51:28+0100) ... |
Maven 设置
设置 ~/.m2/ directory 库。
$> mkdir ~/.m2 |
将下列内容拷贝到配置settings文件中。
$> cat > ~/.m2/settings.xml <<"EOT" <settings xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<!--**************************** PROFILES ****************************-->
<activeProfiles> <activeProfile>oVirtEnvSettings</activeProfile> </activeProfiles>
<profiles> <profile> <id>oVirtEnvSettings</id> <properties> <jbossHome>${env.JBOSS_HOME}</jbossHome> <JAVA_HOME>${env.JAVA_HOME}</JAVA_HOME> </properties> </profile> </profiles> </settings> EOT |
备注:
一定要配置以上maven配置文件,否则在后续编译中会出错。
请确保jdk的环境变量设置正确。
在环境变量中设置以上需要的环境变量方法为:在用户的家目录中将以下环境变量添加到.bashrc文件中。
export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk.x86_64 export JBOSS_HOME=/usr/share/jboss-as export PATH=$HOME/apache-maven-3.0.5/bin:$PATH |
三、安装JBoss AS
从Zips文件中安装方法
$> cd /usr/share $> wget http://download.jboss.org/jbossas/7.1/jboss-as-7.1.1.Final/jboss-as-7.1.1.Final.tar.gz $> tar -zxvf jboss-as-7.1.1.Final.tar.gz --no-same-owner $> ln -s /usr/share/jboss-as-7.1.1.Final /usr/share/jboss-as $> # Change the JBOSS_HOME environment variable to the new location $> su - -c 'chmod -R 777 /usr/share/jboss-as' $> # Change the Jboss home in ~/.m2/settings.xml file to point to the new location |
校验是否安装成功
$> /usr/share/jboss-as/bin/standalone.sh |
请确保对于$JBOSS_HOME/standalone/deployments文件夹有写权限,该目录是ovirt-engine的部署目录。
TroubleShooting
1.下面是一些有用的JAVA_OPTS的设置,可以添加到standalone.conf脚本中:
· -Xmx512m - maximum Java heap size of 512m
· -Xdebug - include debugging
2.在运行时添加-b 0.0.0.0用于绑定所有的IP
3.确定8080或者8009端口未被占用。其他可能需要的端口号有:8443/8083/1090/4457
4.JBoss会绑定主机名称,确认该主机名称已经被添加到/etc/hosts目录下。
5.如果部署后的文件并不是最新的代码,可以使用下面的语句移除已经先部署的代码。
$> cd $JBOSS_HOME/standalone $> rm -rf deployments/engine.ear $> rm -rf deployments/engine.ear.deployed $> rm -rf tmp $> rm -rf data (should be done only in development environment) $> # Change the JBOSS_HOME environment variable to the new location $> su - -c 'chmod -R 777 /usr/share/jboss-as' $> # Change the Jboss home in ~/.m2/settings.xml file to point to the new location |
四、安装PostgreSQL
安装PostgreSQL步骤将在文档后面详细描述。
五、编译oVirt-engine源码
1. 获取源码
$> git clone git://gerrit.ovirt.org/ovirt-engine |
设置环境变量$OVIRT_HOME为<your_chosen_source_location>/ovirt-engine
2. 创建数据库
进入数据库目录
$> cd $OVIRT_HOME/backend/manager/dbscripts |
使用下列命令创建ovirt-engine数据库
$> ./create_db_devel.sh -u postgres Note: In case create_db_devel keeps asking for postgres password, create the following file: $ echo "*:*:*:postgres:YOUR_POSTGRES_PASSWORD" > ~/.pgpass $ chmod 0600 ~/.pgpass |
3. 编译
如果只是编译virt-engine-core和REST API部分,使用下列命令
$> cd $OVIRT_HOME $> mvn clean install |
如果要编译web-admin,与user-portal,使用下列命令
$> cd $OVIRT_HOME $> mvn clean install -Pgwt-admin,gwt-user |
备注:
1.编译web-admin与user-portal需要花费很长时间。可以通过制定编译语言和编译浏览器去加快编译过程。
2.如果想加快编译速度而忽略单元测试,在使用mvn命令中可以使用-DskipTests=true。
3.如果系统报"java.lang.OutOfMemoryError: PermGen space"错误,可以设置MAVEN_OPTS去设置heap与permanent generation stack大小。
$> export MAVEN_OPTS="-XX:MaxPermSize=128m" |
4. 部署
第一次将程序部署到JBoss服务器的命令是:
$> cd $OVIRT_HOME/ear $> mvn clean install -Pdep,setup |
但是,dep与setup_postgres配置文件之间有一个bug。Setup_postgres配置文件会阻止quartz.jar部署到Jboss服务器上。因此,在该步骤执行完以后,运行:
$> cd $OVIRT_HOME/ear $> mvn clean install -Pdep |
从这以后,因为Postgres已经在运行,将程序部署到服务器上只需要运行:
$> cd $OVIRT_HOME/ear $> mvn clean install -Pdep |
5. 测试
1 如果JBoss没有运行,可以使用以下命令启动JBoss:
#> service jboss-as start (or restart if you already started above for tests) #> ps ax | grep java |
或者使用下面命令
$> /usr/share/jboss-as/bin/standalone.sh |
2. 登陆的默认用户名和密码为:用户名,admin@internal,密码是:letmein!。
3. 确保$OVIRT_HOME/backend/manager/conf/engine.conf.defaults 文件存在,并且内容含有下面两行:
ENGINE_USR=username
ENGINE_ETC=/etc/ovirt-engine
然后添加下面命令到你的~/.bashrc文件中
export ENGINE_DEFAULTS=$OVIRT_HOME/backend/manager/conf/engine.conf.defaults |
4. 可以使用以下链接进入 RESTful API:
wget -O - --debug --auth-no-challenge --http-user=admin@internal --http-password='letmein!' head='Accept: application/xml' http://<server name>:<port>/api/ |
默认端口号为8700,或者在浏览器中使用下面链接:
http://<server name>:<port>/api |
5. 进入页面链接
进入Webadmin的网址为:
http://<server name>:<port>/webadmin |
进入user-portal的网址为:
http://<server name>:<port>/UserPortal |
六、TroubleShooting
1. 安装失败
1.关于主机方面:参考/tmp/vds*文件
2.关于Engine方面:参考/usr/share/jboss-as/standalone/log/engine/engine.log
3.以及你是否创建文档/var/lock/ovirt-engine/.openssl.exclusivelock,并配置有777权限。
2. 系统日志方面
1. oVirt Node
/var/log/vdsm/vdsm.log
/var/log/vdsm-reg/vdsm-reg.log
2. (Fedora/Any other distro)
/tmp/vds* (bootstrap)
/var/log/vdsm/vdsm.log
/var/log/vdsm-reg/vdsm-reg.log
3. (oVirt Engine side)
/usr/share/jboss-as/standalone/log/server.log
/usr/share/jboss-as/standalone/log/engine/engine.log
4. (spice)
Run firefox setting SPICEC_LOG_LEVEL
# SPICEC_LOG_LEVEL=0 firefox
Afer that, check the file: ~/.spicec/spicec.log
3. Webadmin 错误
如果在执行clean‘mvn install’成功,但是在浏览器中访问webadmin,系统报如下错误:
java.lang.NoClassDefFoundError: Could not initialize class org.ovirt.engine.ui.frontend.server.gwt.plugin.PluginDataManager$Holder.. |
可以使用下面方法解决这个问题:
copy as root: backend/manager/conf/engine.conf.defaults.in to /usr/share/ovirt-engine/conf/engine.conf.defaults (create dirs if needed) |