我们在这篇文章中,基于ovirt-4.3的源码,在centos7中搭建基本的开发环境。
除了环境依赖包的安装使用root用户,其他操作通常不使用root用户。
强调:centos的语言和地区选择 汉语(中国) 在编译的时候有个unit test过不去,所以为了不必要的麻烦,还是选择 English(United States)吧。
安装依赖包
- 配置ovirt和postgresql10的yum源
yum install http://resources.ovirt.org/pub/yum-repo/ovirt-release43.rpm -y
yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm -y - 安装第三方依赖包
yum install git java-devel maven openssl m2crypto python-psycopg2 python-cheetah python-daemon libxml2-python unzip pyflakes python-pep8 python-docker-py mailcap python-jinja2 python-dateutil gdeploy -y
- 安装应用运行服务器WildFly(JBOSS)
yum install ovirt-engine-wildfly ovirt-engine-wildfly-overlay
- 安装ovirt依赖
yum install ovirt-host-deploy ovirt-setup-lib ovirt-js-dependencies
- 安装数据库 postgresql10(不要安装低版本,会有问题)
yum install -y postgresql10 postgresql10-server postgresql10-contrib
配置数据库
- 初始化数据库
/usr/pgsql-10/bin/postgresql-10-setup initdb
- 配置PostgreSQL接受网络连接,编辑配置文件/var/lib/pgsql/10/data/pg_hba.conf,定位到 127.0.0.1/32和 ::1/128,允许IPV4和IPV6通过密码访问。
# IPv4 local connections:
host all all 127.0.0.1/32 password
# IPv6 local connections:
host all all ::1/128 password
- 配置PostgresSQL最大连接数为150,编辑配置文件/var/lib/pgsql/10/data/postgresql.conf,修改max_connections为150。
- 重启服务,并设置开机启动
systemctl restart postgresql-10
systemctl enable postgresql-10
- 创建engine数据库,执行下面的命令
su – postgres -c “psql -d template1 -c \”create user engine password ‘engine’;\””
su – postgres -c “psql -d template1 -c \”create database engine owner engine template template0 encoding ‘UTF8’ lc_collate ‘en_US.UTF-8’ lc_ctype ‘en_US.UTF-8’;\””
su – postgres -c “psql -d engine -c \”CREATE EXTENSION \\”uuid-ossp\\”;\””
编译源码
以下步骤都使用普通用户操作
我们首先在$HOME下面建两个目录,ovirt-git和ovirt-engine
ovirt-git: ovirt-engine源码目录
ovirt-engine: engine源码编译输出目录
- 在ovirt-git中检出代码,并切换到4.3分支
git clone git://gerrit.ovirt.org/ovirt-engine
cd ovirt-engine
git checkout ovirt-engine-4.3
2.在源码目录中编译,基本命令是
make clean install-dev PREFIX=”$HOME/ovirt-engine”
如果默认编译的话会花费相当长的时间并会消耗大量内存,我们可以在开发阶段做一些修改来简化编译的复杂性,但是我自己的经验是要是第一次编译尽量还是啥都不改,完整的编一边。
控制编译的主要有两种,一是控制gwt前台编译的语言和浏览器支持,而是可以控制单独编译某一个模块。
具体如何控制,我们后面会具体讲到。
编译成功后,在输出目录中将会看到输出文件。
[zhangcheng@localhost ovirt-engine]$ ll /home/zhangcheng/ovirt-engine/
total 68
drwxr-xr-x. 2 zhangcheng zhangcheng 213 Apr 29 17:01 bin
-rw-rw-r--. 1 zhangcheng zhangcheng 68227 Apr 29 17:01 dev.ovirt-engine.flist
drwxr-xr-x. 5 zhangcheng zhangcheng 56 Apr 29 17:01 etc
drwxr-xr-x. 3 zhangcheng zhangcheng 42 Apr 29 17:01 libexec
drwxr-xr-x. 6 zhangcheng zhangcheng 66 Apr 29 17:01 share
drwxr-xr-x. 3 zhangcheng zhangcheng 17 Apr 29 17:01 usr
drwxr-xr-x. 6 zhangcheng zhangcheng 52 Apr 29 17:01 var
初始化和启动服务
进入输出目录,执行
./bin/engine-setup
第一次执行setup的时候,在初始化数据库时,根据具体环境,会输出调整信息,根据输出调整就可以了,调整之后重启数据库服务。如下:
Please note the following required changes in postgresql.conf on 'localhost':
'autovacuum_vacuum_scale_factor' is currently '0.2'. It is required to be at most '0.01'.
'autovacuum_analyze_scale_factor' is currently '0.1'. It is required to be at most '0.075'.
'autovacuum_max_workers' is currently '3'. It is required to be at least '6'.
'work_mem' is currently '4096'. It is required to be at least '8192'.
'lc_messages' is currently 'zh_CN.UTF-8'. Engine requires lc_messages to be 'en_US.UTF-8'.
从上面的提示信息中,我们可以看到,我由于最开始选择的语言地区为 汉语(中国),导致了zh_CN的编码,不符合要求。所以就像一开始说的那样, 环境的语言地区一定要选择 English(United States)。
下图展示了完整的setup过程,我将需要注意的地方标注出来了。
setup成功后,我们就可以启动服务了???
./share/ovirt-engine/services/ovirt-engine/ovirt-engine.py start
待服务启动成功后,通过下面的地址就可以访问本地环境中搭建起来的ovirt-engine了。
ctrl+c可以停止服务,engine也就不能访问了。
http://localhost:8080
https://localhost:8443
到此为止我们就在本地环境中搭建起来了ovirt engine的本地服务。
万事开头难,现在我们就可以准备深入ovirt engine的源码了,??????
参考:
https://www.ovirt.org/develop/developer-guide/engine/engine-development-environment.html
Hello, 您好,按照您的方式有成功建立環境,但是virtual machines那邊的虛擬機,沒有migrate按鈕,請問是否有什麼可能的原因造成呢?謝謝。
其他功能都有吗?只是缺个 迁移按钮吗? 建议你结合代码看一下,看看你使用的源码里是否有相应的代码。
您好,後來發現migrate按鈕移到ui-extension (https://github.com/oVirt/ovirt-engine-ui-extensions),所以編譯後再link到engine下就出現了。謝謝您。