ovirt-engine本地开发(一):环境搭建


我们在这篇文章中,基于ovirt-4.3的源码,在centos7中搭建基本的开发环境。
除了环境依赖包的安装使用root用户,其他操作通常不使用root用户。

强调:centos的语言和地区选择 汉语(中国) 在编译的时候有个unit test过不去,所以为了不必要的麻烦,还是选择 English(United States)吧。

安装依赖包

  1. 配置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

  2. 安装第三方依赖包

    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

  3. 安装应用运行服务器WildFly(JBOSS)

    yum install ovirt-engine-wildfly ovirt-engine-wildfly-overlay

  4. 安装ovirt依赖

    yum install ovirt-host-deploy ovirt-setup-lib ovirt-js-dependencies

  5. 安装数据库 postgresql10(不要安装低版本,会有问题)

    yum install -y postgresql10 postgresql10-server postgresql10-contrib

配置数据库

  1. 初始化数据库

    /usr/pgsql-10/bin/postgresql-10-setup initdb

  2. 配置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
  1. 配置PostgresSQL最大连接数为150,编辑配置文件/var/lib/pgsql/10/data/postgresql.conf,修改max_connections为150。
  2. 重启服务,并设置开机启动

systemctl restart postgresql-10
systemctl enable postgresql-10

  1. 创建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源码编译输出目录

  1. 在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

3 条回复 A 作者 M 管理员 E
  1. Hello, 您好,按照您的方式有成功建立環境,但是virtual machines那邊的虛擬機,沒有migrate按鈕,請問是否有什麼可能的原因造成呢?謝謝。

    • 其他功能都有吗?只是缺个 迁移按钮吗? 建议你结合代码看一下,看看你使用的源码里是否有相应的代码。

欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论