《OpenStack实战指南》—— 2.2 在Ubuntu上使用源代码编译安装

2.2 在Ubuntu上使用源代码编译安装

对于各个版本的Linux来说,都会制作OpenStack相应的软件包。虽然在2.1节中介绍了二进制包安装,但是在这里笔者还是会讲一下源代码安装OpenStack基本组件的过程,因为从学习的角度来说,通过源代码安装OpenStack各个组件的过程,可以使读者对OpenStack的框架和各个组件的作用有一个比使用二进制安装更全面的了解。另一个好处是,二进制包的发布会滞后于源代码,如果想在第一时间尝试一些最新的功能或修复Bug后的版本,源代码安装是个不错的选择。当然,源代码安装比二进制包安装复杂,有一定的难度,并且要用户自己去解决一些依赖问题。
在本节中,将会介绍如何使用源代码方式安装Keystone、Glance、Nova、Neutron、Cinder和Horizon组件。OpenStack各个项目的代码都可以在GitHub上获取。在接下来的安装过程中,笔者按照1个controller节点、1个network节点、1个compute节点、1个volume节点的架构来部署。因为其架构方式和二进制安装一样,所以一些基础配置,如每个节点的IP设置、NTP配置等,在本节中跳过。本节使用的操作系统依旧是Ubuntu 12.04 LTS版本。

2.2.1 控制节点的安装

在controller节点上计划部署如下组件:

RabbitMQ
PostgreSQL
Keystone
Glance
Neutron
Nova中除去nova-compute的其他组件
Horizon

controller上各个组件负责的功能与使用二进制包安装时的一样。在本节中,如果没有特殊说明,那么与2.1节中介绍的架构一样,只是安装方式上有些区别。
1.?前置准备
首先进行IP配置,以及RabbitMQ、NTP的安装配置,可参考2.1节相关内容。
使用PostgreSQL作为OpenStack的后端数据库。如果需要一个稳定的开源数据库,那么PostgreSQL可以优先考虑。此外,需要安装Python访问PostgreSQL时用的psycopg2,这是目前流行的PostgreSQL的Python连接库。命令如下:

# apt-get install postgresql postgresql-client
# apt-get install python-sqlalchemy python-psycopg2

创建一个数据库用户openstackdbadmin,设置密码为openstack123。这个用户将作为各个组件连接数据库的唯一用户。示例代码如下:

# su - postgres
$ psql
postgres=# CREATE USER openstackdbadmin with password
    'openstack123';
postgres=# \q

在二进制包安装的时候使用root用户,并且安装的时候会把配置文件配置成特定的用户组属性,不需要手动干预。但是在使用源代码安装的时候,必须处理好这些文件的用户组属性关系。在本节中,笔者将会以openstack这个用户的身份去安装、配置、启动服务。首先建立一个称为openstack的用户,并且加入到sudo组,让其有使用sudo的权限。命令如下:

# useradd -m openstack
# usermod -G sudo openstack

接下来的包都会放在openstack这个用户的主目录下,在这里是/home/openstack
除非特殊说明,否则本节其余操作都是在openstack这个用户下执行。
下载需要用到的Git工具的源代码,在Ubuntu下安装,命令如下:

$ sudo apt-get install git

对于学习源代码安装的一个较好的,也是官方的方法就是阅读OpenStack开发人员写的一套安装脚本,我们称之为DevStack,其源代码在GitHub上维护。这个项目的初衷是让开发人员能够快速建立一个完整的OpenStack开发环境,该项目由Rackspace的团队创建,并且由OpenStack的开发社区维护,它的脚本更新速度应该是最接近于OpenStack开发的,一些新的功能在脚本中都会更新体现出来。无论是开发人员还是系统运维工程师,这个脚本都是学习OpenStack的一个重要资源。后面的安装也是基于这个脚本的,会用到里面的一些文件,因此,首先需要下载该项目脚本的代码:

$ git clone https://github.com/openstack-dev/devstack

源代码安装和二进制包安装的区别主要体现在几个方面,如果读者能把握住哪些是不同的,哪些是相同的,那么学会二进制包安装后,源代码安装的学习就会相对容易点。第一个区别是安装的软件包不同。在二进制包中,各个Linux发行平台已经把OpenStack组件中每个软件打成相应的包,其中包括运行组件所需的很多依赖包。而源代码安装方式,除了安装OpenStack社区发布的组件包外,还需要手动安装那些组件所需要的依赖包。能否完全正确地安装好依赖包是要解决的一个关键问题。第二个区别体现在配置文件上。二进制包安装好后,都会在/etc下建立好所需的配置文件。而源代码安装需要自己去建立相关目录。第三个区别是启动问题。在二进制包安装好后,往往都配置成了相应Linux系统版本的启动方式,譬如使用service启动。而源代码安装方式,需要自己写启动脚本,每个人的启动脚本和方式都不一样,因人而异。还有一些小的区别就是源代码安装需要建立用户,自己设置 OpenStack组件的安装路径、用户、权限,手动建立一些必要的目录等。至于两者相同的地方,很明显就是数据库,以及配置文件中的参数。
OpenStack各个组件的配置文件都会放在/etc下的各个目录中,包括nova、glance、 keystone、neutron等。这样做是为了统一规范每个组件的配置目录,方便管理。这里介绍一下安装的思路。一般情况下,在/etc下建立组件的目录,设置为用户的权限,在各个组件的源代码中也有相应的etc目录,其中包括需要用到的配置文件。把要用的配置文件从源代码目录复制到/etc下组件的目录中,然后编辑/etc下相应的配置文件。安装的思路是首先确保每个组件需要的依赖包已经安装,然后在源代码的第一层目录,执行Python的安装命令。这样一个组件就安装好了。
2.?安装部署Keystone
首先下载Keystone源代码,并且切换到Havana版本的稳定分支:

$ git clone https://github.com/openstack/keystone
$ cd keystone
$ git checkout stable/havana

在/etc下建立名为keystone的目录。设置属主为用户openstack。从下载的Keystone源代码中把/etc下的配置文件复制到/etc/keystone下,其代码如下:

$ sudo mkdir /etc/keystone
$ sudo chown openstack:openstack /etc/keystone
$ cd ~/keystone/etc
$ cp -p keystone.conf.sample /etc/keystone/keystone.conf
$ cp -p policy.json /etc/keystone/

Keystone有许多配置选项,这也是OpenStack一个比较大的特点。OpenStack会尽量支持更多的,同时比较流行的一些开源软件来完成类似功能。由于不同的开源软件有自身的特点和功能,因此OpenStack可给用户比较多的选择余地,用户可根据自身的情况选择适合的方式。在Keystone中,选择存放认证数据(包括用户、密码等数据)的方式时,可以选择LDAP、数据库。在这里我们把用得比较多,同时也比较容易上手的MySQL数据库作为存放数据的方式。在认证方式上,Keystone可以使用原有的UUID的方式,也可以选择后来加入的PKI方式来增强安全性。在本节中,会介绍一些使用广泛的配置,其他更多内容可以从第5章获取。需要配置keystone.conf以下主要的选项:

[DEFAULT]
admin_token = openstack
bind_host = 0.0.0.0
public_port = 5000
admin_port = 35357
debug = True
verbose = True
log_file =  keystone.log
log_dir = /var/log/keystone

[sql]
connection = postgres://openstackdbadmin:openstack123@localhost/keystone

[identity]
driver = keystone.identity.backends.sql.Identity

[catalog]
driver = keystone.catalog.backends.sql.Catalog

[token]
driver = keystone.token.backends.kvs.Token

[signing]
token_format = PKI

初始化Keystone,首先要创建Keystone所用的数据库,以及一些配置文件中用到的目录,然后初始化Keystone用的PKI。
需要创建不存在的目录,用来存放Keystone日志,可在keystone.conf中定义,其代码如下:

$ sudo mkdir /var/log/keystone
$ sudo chown openstack:openstack /var/log/keystone

需要创建不存在的目录,用来存放Keystone使用PKI的相关文件,其代码如下:

$ sudo mkdir /var/cache/keystone
$ sudo chown openstack:openstack /var/cache/keystone

创建Keystone所用的数据库,代码如下:

$ sudo su - postgres
$ psql
postgres=# CREATE DATABASE keystone;
postgres=# GRANT ALL PRIVILEGES ON DATABASE keystone TO openstackdbadmin;
postgres=# \q

切记要退出postgres用户,返回到OpenStack用户环境中,其代码如下:

postgres$ exit

进入devstack项目的目录,因为要用到里面的一些文件。

$ cd ~/devstack/files/apts

在devstack项目中,开发人员告诉了我们需要安装哪些前置依赖的和需要使用的第三方的软件包,这里需要安装general和keystone,其代码如下:

$ for i in'cut -f1 -d" " general keystone'; do sudo apt-get install -y $i; done

Keystone需要用到passlib软件包,使用PKI时必须安装,其代码如下:

$ sudo pip install passlib

安装Keystone组件,其代码如下:

$ cd ~/keystone
$ sudo python setup.py develop

进入Keystone目录,其代码如下:

$ cd ~/keystone
$ bin/keystone-manage db_sync
$ bin/keystone-manage pki_setup

下面开始安装Keystone Client。Keystone Client是一个使用Keystone的命令行接口工具,和Dashboard一样,它能完成大部分的日常操作。熟悉和熟练使用命令行工具对维护OpenStack及其每一个组件是非常重要的,系统管理员90%的工作是通过Client命令行完成的,而不是通过Dashboard。
切记退回到OpenStack的home目录,所有组件的顶层都在用户home目录下,其代码如下:

$ cd
$ git clone https://github.com/openstack/python-keystoneclient
$ cd python-keystoneclient

在安装的过程中,如果出现依赖包安装报错的情况,可根据出错的Python软件包的URL进行手动下载,并进行安装,然后返回安装Keystone Client,其代码如下:

$ sudo python setup.py develop

3.?使用tmux启动Keystone
至此,已经安装好了Keystone服务和命令行下的Keystone Client。接下来要启动Keystone进程。我们是通过源代码方式来安装Keystone的,没有配置成Ubuntu服务管理程序,因此,不能像二进制包方式安装后那样,通过命令“service keystone start”来启动,而是需要直接运行Keystone的可执行文件,并加上一些配置文件的参数。

$ cd ~/keystone

可执行文件都放在bin目录下。--config-file参数指明了Keystone的配置文件路径。

$ bin/keystone-all --config-file /etc/keystone/keystone.conf

启动完成后,是不是发现什么输出也没有,Shell也不会返回提示符?而一旦关掉SSH窗口或按+组合键后,Keystone进程就结束了。是不是应该把这个程序放在后台运行呢?这里要用到终端复用软件tmux。tmux是一个类似于screen的软件,采用BSD授权。Ubuntu 12.04下默认安装了这个优秀的软件,在这里仅简单地使用它来打开一个会话。退出前面创建的Keystone进程,不要怕,因为我们已经学会如何启动Keystone了。用+组合键中断刚才创建的Keystone进程,当然也可以再开启一个终端会话窗口,用命令kill结束Keystone进程。
在下面这行代码中,new-session打开一个新的会话,-s给这个会话命名为keystone,按回车键之后可以看到一个空白的新的会话。

$ tmux new-session -s keystone

执行启动Keystone的命令,代码如下:

$ bin/keystone-all --config-file /etc/keystone/keystone.conf

读者可能会发现,这里介绍的内容看上去和前面介绍的内容差不多。然后先按住和键不放,然后再按键,退出刚才新建的会话。是不是又返回到我们新建会话之前的窗口了?现在使用命令“ps aux | grep keystone”,查看一下Keystone的进程是否还存在。不存在的话记得发邮件告诉笔者。现在回到tmux,在源代码安装时会多次使用tmux,使用下面的命令可列出将会用到的和tmux相关的命令。

$ tmux new-session -s name

列出当前存在的所有的tmux会话,代码如下:

$ tmux list-sessions

返回会话名为name的会话,代码如下:

$ tmux attach-session -t name

现在可以使用命令“tmux attach-session -t keystone”回到刚才创建的Keystone会话中。tmux还有很多参数和命令,可以使用命令“man tmux”查看。
接下来是关于使用Keystone的内容,包括创建用户等,都和二进制包安装方式一样,读者可以参考2.1节的相关内容。
4.?安装部署Glance
安装Glance的思路和过程与安装Keystone类似,大致的过程可以分为下载源代码、安装依赖软件包、安装Glance和Glance Client、编辑Glance的配置文件等。
将OpenStack的数据目录放在/data下,包括Glance的镜像和Nova的虚拟机等。读者需要自己建立这个目录,并且确保这个目录足够大能满足用户环境所需的大小。
在安装过程中,确保这个目录所在的文件系统的可用空间有50GB,涉及的命令如下:

$ cd
$ git clone https://github.com/openstack/glance
$ cd glance
$ git checkout stable/havana

安装Glance组件所需要的依赖软件,命令如下:

$ cd ~/devstack/files/apts
$ for i in ` cut -f1 -d" " glance`; do sudo apt-get install -y $i; done

安装Glance组件,代码如下:

$ cd ~/glance
$ sudo python setup.py develop

创建用来存放Glance配置文件的目录,和Keystone一样,也是放在/etc下,其代码如下:

    $ sudo mkdir -p /etc/glance
    $ sudo chown openstack:openstack
    $ cd ~/glance
    $ cp etc/glance-registry.conf /etc/glance/

$ vi /etc/glance/glance-registry.conf
[DEFAULT]
verbose = True
debug = True
bind_host = 0.0.0.0
bind_port = 9191
log_file = /var/log/glance/registry.log
sql_connection = connection = postgres://openstackdbadmin:openstack123@
    localhost/glance

[paste_deploy]
flavor = keystone

[keystone_authtoken]
auth_host = 127.0.0.1
auth_port = 35357
auth_protocol = http
admin_tenant_name = service
admin_user = glance
admin_password = openstack
signing_dir = /var/cache/glance/registy
$ cp etc/glance-api.conf /etc/glance/
$ vi /etc/glance/glance-api.conf
[DEFAULT]
verbose = True
debug = True
default_store = file
bind_host = 0.0.0.0
bind_port = 9292
log_file = /var/log/glance/api.log
filesystem_store_datadir = /data/glance/images/
image_cache_dir = /var/cache/glance/
sql_connection = connection = postgres://openstackdbadmin:openstack123@localhost/glance

[paste_deploy]
flavor = keystone+cachemanagement

[keystone_authtoken]
auth_host = 127.0.0.1
auth_port = 35357
auth_protocol = http
admin_tenant_name = service
admin_user = glance
admin_password = openstack
signing_dir = /var/cache/glance/api

以上给出的是配置文件中需要修改和注意的部分,其他没有列出的按照默认设置即可,不要删除其他在这里没有列出的配置项。以下给出的配置也是如此。
建立专门的Glance目录用来存放镜像文件和镜像缓存,代码如下:

    $ sudo mkdir /data/glance
    $ sudo chown -R openstack:openstack /data/glance
    $ mkdir -p /data/glance/images
    $ mkdir -p /data/glance/cache
    $ cp -p etc/glance-regisgry-paste.ini /etc/glance/
    $ cp -p etc/glance-api-paste.ini /etc/glance/
    $ cp -p etc/glance-cache.conf /data/glance/cache/
    $ vi /data/glance/cache/glance-cache.conf
[DEFAULT]
verbose = True
debug = True
filesystem_store_datadir = /data/glance/images/
image_cache_dir = /data/glance/cache/
auth_url = http://127.0.0.1:5000/v2.0/
admin_tenant_name = service
admin_user = glance
admin_password = openstack
    $ cp -p etc/policy.json /etc/glance/
在PostgreSQL中建立数据库glance,代码如下:
$ sudo su - postgres
$ psql
postgres=# CREATE DATABASE glance;
postgres=# GRANT ALL PRIVILEGES ON DATABASE glance TO openstackdbadmin;
postgres=# \q
postgres$ exit
初始化数据库glance中的表结构,代码如下:
$ bin/glance-manage db_sync
$ sudo mkdir -p /var/cache/glance/api
$ sudo chown openstack:openstack /var/cache/glance/api
$ sudo mkdir -p /var/cache/glance/registry
$ sudo chown openstack:openstack /var/cache/glance/registry
$ sudo mkdir /var/log/glance
$ sudo chown openstack:openstack /var/log/glance
下面安装Glance Client,代码如下:
$ cd && git clone https://github.com/openstack/python-glanceclient
$ cd python-glanceclient && sudo python setup.py develop

5.?启动Glance
Glance服务包括glance-registry和glance-api,需要分别启动这两个服务进程。同启动Keystone一样,使用tmux来建立两个新会话,分别命名为glance-registry和glance-api。命令如下:

$ cd ~/glance
$ tmux -c "bin/glance-registry --config-file=/etc/glance/glance-registry.conf"
$ tmux -c "bin/glance-api --config-file=/etc/glance/glance-api.conf"

6.?安装部署Nova
首先下载Nova源代码,并且切换到Havana版本的稳定分支:

$ cd
$ git clone https://github.com/openstack/nova
$ cd nova
$ git checkout stable/havana

安装Nova组件所需要的依赖软件,代码如下:

$ cd ~/devstack/files/apts
$ for i in ` cut -f1 -d" " nova`; do sudo apt-get install -y $i; done

安装Nova组件,代码如下:

$ cd ~/nova
$ sudo python setup.py develop

安装Nova Client,代码如下:

$ cd && git clone https://github.com/openstack/python-novaclient
$ cd python-novaclient && sudo python setup.py develop

配置Nova,主要是建立一些必要的目录,把配置文件从源代码目录中复制到/etc下,设置用户的sudo权限等,其代码如下:

$ cd ~/nova
$ sudo mkdir /etc/nova
$ sudo chown openstack:openstack /etc/nova
$ cp etc/nova/policy.json /etc/nova/
$ cp etc/nova/api-paste.ini /etc/nova/
$ cp etc/nova/nova.conf.sample /etc/nova/nova.conf
$ mkdir -m 755 /etc/nova/rootwrap.d
$ cp etc/nova/rootwrap.d/*.filters /etc/nova/rootwrap.d
$ sudo chown -R root:root /etc/nova/rootwrap.d
$ sudo chmod 644 /etc/nova/rootwrap.d/*
$ cp etc/nova/rootwrap.conf /etc/nova
$ sed -e "s:^filters_path=.*$:filters_path=/etc/nova/rootwrap.d:" -i /etc/nova/
    rootwrap.conf
$ sudo chown root:root /etc/nova/rootwrap.conf
$ sudo chmod 0644 /etc/nova/rootwrap.conf
$ sudo vi /etc/sudoers.d/nova-rootwrap

把以下内容添加到nova-rootwrap文件中。

openstack ALL=(root) NOPASSWD: /usr/local/bin/nova-rootwrap /etc/nova/rootwrap.conf *
$ sudo chmod 0440 /etc/sudoers.d/nova-rootwrap
$ sudo mkdir -p /var/nova
$ sudo chown openstack:openstack /var/cache/nova
$ sudo mkdir -p /data/nova
$ sudo chown -R openstack:openstack /data/nova
$ mkdir /data/nova/keys
$ sudo mkdir /var/log/nova
$ sudo chown -R openstack:openstack /var/log/nova

下载noVNC,因为noVNC不是OpenStack项目的组件,所以需要去noVNC的项目网站下载。

$ cd && git clone https://github.com/kanaka/noVNC.git

接下来就是编辑配置文件,可参照2.1节相关内容。注意,把nova.conf中的state_path参数改成现在的/data/nova,数据库改成使用PostgreSQL的格式。配置文件完成之后,使用命令nova-manage运行“db sync”同步一下。
7.?启动Nova服务
启动Nova的服务同样使用tmux,可参照Glance和Keystone的使用方式。启动的服务与二进制包安装方式一样,代码如下:

$ cd ~/nova
$ tmux -c "bin/nova-api --config-file=/etc/nova/nova.conf"
$ tmux -c "bin/nova-conductor --config-file=/etc/nova/nova.conf"
$ tmux -c "bin/nova-cert --config-file=/etc/nova/nova.conf"
$ tmux -c "bin/nova-scheduler --config-file=/etc/nova/nova.conf"
$ tmux -c "bin/nova-novncproxy --config-file=/etc/nova/nova.conf --web ~/noVNC"
$ tmux -c "bin/nova-consoleauth --config-file=/etc/nova/nova.conf"

8.?安装配置neutron-server
安装neutron-server的方式和前面介绍的Keystone、Nova、Glance类似,主要思路是:下载源代码、安装源代码、建立Neutron和Open vSwitch plugin的目录并且设置权限、复制源代码中的配置文件到相应的目录中、设置rootwrap配置文件。剩下的和前几节类似,即修改配置文件内容、建立数据库、启动服务,这部分内容不再赘述。其代码如下:

$ cd
$ git clone https://github.com/openstack/neutron
$ cd devstack/files/apts
$ for i in ` cut -f1 -d" " neutron`; do sudo apt-get install -y $i; done
$ cd ~/neutron
$ git checkout stable/havana
$ sudo python setup.py develop
$ sudo mkdir/etc/neutron
$ sudo chown openstack:openstack /etc/neutron
$ cd && cp etc/neutron.conf /etc/neutron
$ mkdir -p /etc/neutron/plugins/openvswitch
$ cp etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini /etc/neutron/plugins/
    openvswitch/
$ sudo mkdir /var/lib/neutron
$ sudo chown openstack:openstack /var/lib/neutron
$ mkdir -p -m 755 /etc/neutron/rootwrap.d
$ cp -pr etc/neutron/rootwrap.d/* /etc/neutron/rootwrap.d/
$ sudo chown -R openstack:openstack /etc/neutron/rootwrap.d
$ sudo chmod 644 /etc/neutron/rootwrap.d/*
$ cp etc/rootwrap.conf /etc/neutron/
$ sudo chown root:root /etc/neutron/rootwrap.conf
$ sudo chmod 0644 /etc/neutron/rootwrap.conf
$ sudo vi /etc/sudoers.d/neutron-rootwrap

把下面第一行代码加入到neutron-rootwrap文件中,接着执行余下命令。

openstack ALL=(root) NOPASSWD: /usr/local/bin/neutron-rootwrap /etc/neutron/rootwrap.conf *
$ sudo chmod 0440 /etc/sudoers.d/neutron-rootwrap
$ sudo chown root:root /etc/sudoers.d/neutron-rootwrap
$ cp etc/api-paste.ini /etc/neutron/
$ cp etc/policy.json /etc/neutron/
$ sudo mkdir /var/cache/neutron
$ sudo chown openstack:openstack /var/cache/neutron
$ cd ~/neutron
$ tmux -c "bin/neutron-server --config-file /etc/neutron/neutron.conf --config-
    file /etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini"

安装Neutron Client,命令如下:

$ cd
$ git clone https://github.com/openstack/python-neutronclient
$ cd python-neutronclient
$ sudo python setup.py develop

9.?安装部署Cinder
下面安装Cinder组件,代码如下。注意,由于同前面其他组件安装类似,因此不再进行具体说明。

$ cd
$ git clone https://github.com/openstack/cinder
$ cd devstack/files/apts
$ for i in ` cut -f1 -d" " cinder`; do sudo apt-get install -y $i; done
$ cd ~/cinder
$ git checkout stable/havana
$ sudo python setup.py develop
$ sudo mkdir -p /etc/cinder
$ sudo chown openstack:openstack /etc/cinder/
$ cp etc/cinder/policy.json /etc/cinder
$ sudo mkdir -m 755 /etc/cinder/rootwrap.d
$ sudo cp etc/cinder/rootwrap.d/*filters /etc/cinder/rootwrap.d/
$ sudo chown -R root:root /etc/cinder/rootwrap.d
$ sudo chmod 644 /etc/cinder/rootwrap.d/*
$ cp etc/cinder/rootwrap.conf /etc/cinder/
$ sudo chown root:root /etc/cinder/rootwrap.conf
$ sudo chmod 0644 /etc/cinder/rootwrap.conf
$ sudo vi /etc/sudoers.d/cinder-rootwrap

添加下面第一行代码到cinder-rootwrap文件中,接着执行余下命令。

openstack ALL=(root) NOPASSWD: /usr/local/bin/cinder-rootwrap /etc/cinder/
    rootwrap.conf *
$ sudo chmod 0440 /etc/sudoers.d/cinder-rootwrap
$ sudo chown root:root /etc/sudoers.d/cinder-rootwrap
$ cp etc/cinder/api-paste.ini /etc/cinder

其余的配置文件内容,包括安装tgt、建立数据库等内容,可参照2.1节相关内容。在控制节点上,启动cinder-api和cinder-scheduler服务即可,其代码如下:

$ tmux -c "bin/cinder-api --config-file=/etc/cinder/cinder.conf"
$ tmux -c "bin/cinder-scheduler --config-file=/etc/cinder/cinder.conf"

10.?安装Horizon
安装Horizon的方法完全可以参照devstack的脚本,主要是先安装apache2等依赖软件包,然后复制配置文件,进行一定的修改即可,其代码如下:

$ cd
$ git clone https://github.com/openstack/horizon
$ cd devstack/files/apts
$ for i in ` cut -f1 -d" " horizon`; do sudo apt-get install -y $i; done
$ cd ~/horizon
$ git checkout stable/havana
$ sudo python setup.py develop
$ cp openstack_dashboard/local/local_settings.py.example openstack_dashboard/
    local/local_settings.py
$ sudo mkdir -p ~/horzion/.blackhole
$ sudo rm -f /etc/apache2/sites-enabled/000-default
$ sudo touch /etc/apache2/sites-available/horizon.conf
$ sudo a2ensite horizon
$ cd ~/devstack
$ sudo sed  -e "s,%USER%,openstack,g; s,%GROUP%,openstack,g;s,%HORIZO
    N_DIR%,/home/openstack/horizon,g;s,%APACHE_NAME%,apache2,g;s,%DEST%,
    /home/openstack,g;s,%HORIZON_REQUIRE%,,g;" files/apache-horizon.template >
    /etc/apache2/sites-available/horizon.conf

最后,重启Apache服务。

时间: 2024-10-31 08:30:08

《OpenStack实战指南》—— 2.2 在Ubuntu上使用源代码编译安装的相关文章

《OpenStack实战指南》—— 2.2.3 网络节点的安装

2.2.3 网络节点的安装 网络节点需要安装Neutron和openvswitch-plugins.和计算节点一样,也需要手动安装Open vSwtich的包.在网络节点中,安装Neutron和openvswitch-plugins的方式和控制节点.计算节点的安装类似,唯一的区别是需要把源代码中关于dhcp-agent.l3-agent和metadata-agent的配置文件复制到/etc/neutron目录中,其余的这里不再重复写出.这里给出启动三个服务的命令: $ tmux -c "pyth

《OpenStack实战指南》—— 2.1.3 计算节点的安装

2.1.3 计算节点的安装 计算节点主要负责运行虚拟机.在这个测试案例中,使用KVM作为底层的虚拟化技术,OpenStack采用libvirt库来管理KVM.网络使用Open vSwitch来和其他计算节点及网络节点通信.在计算节点上,需要安装以下几个部分: Open vSwitch neutron-plugin-openvswitch-agent nova-compute open-iscsi 1.?系统环境准备 操作系统仍旧使用Ubuntu 12.04 LTS.网络节点需要两个网口,分别连接

《OpenStack实战指南》—— 2.1.2 网络节点的安装

2.1.2 网络节点的安装 网络节点主要负责虚拟机的网络控制,包括DHCP.虚拟路由.公网访问虚拟机等.通过软件网桥等方式控制虚拟机的网络,代替传统环境中所需要的交换机.路由器等.在这个测试案例中,使用Open vSwitch作为底层的网络驱动. 1.?系统环境准备 操作系统仍旧使用Ubuntu 12.04 LTS.网络节点需要三个网口,分别连接network-1.network-2.network-3,前两个网络在控制节点安装的时候定义过,而network-3是个新网络,是个私有的网络,IP网

《OpenStack实战指南》—— 2.2.2 计算节点的安装

2.2.2 计算节点的安装 计算节点的任务就是负责运行虚拟机,对于计算节点操作系统的安装,默认把/目录分区尽量分配充足,至少50GB.这里使用KVM.此外,这个架构中使用的网络方式是Neutron,使用的Neutron的plugin是Open vSwitch,因此,还需要安装Neutron的Open vSwitch的agent,以及Open vSwitch本身. 需要使用或安装的组件: KVM.libvirt nova-compute neutron-plugin-openvswitch-age

《OpenStack实战指南》—— 导读

前 言 在2007年前后,许多网站站长发现当时一部分主流机托管商开始逐步使用虚拟化技术提供云主机的托管服务,而当时的虚拟化程度还停留在半虚拟化或类似OpenVZ这样的伪虚拟化的水平.即便如此,一台服务器已经可以承载数十台甚至上百台虚拟主机的负荷,而且安全性更好,价格也更低.通过更加有效的隔离和封装,虚拟主机的创建和恢复也变得更加迅速和可靠.与此同时,像Eucalyptus和OpenNebula这样的云计算管理工具也开始逐步进入人们的视野. 次年,笔者机缘巧合地加入了EMC(也就是VMware的母

《OpenStack实战指南》—— 2.1 在Ubuntu上使用二进制包安装

2.1 在Ubuntu上使用二进制包安装 笔者写本书的时候,OpenStack已经发展到Havana版本,几大主流的Linux发行版本都会将OpenStack的源代码做成各自平台的二进制安装包,以供用户使用.随着OpenStack使用的人越来越多,发行版本对Linux的支持力度也越来越大,就目前来看,Ubuntu(Debian).RedHat.OpenSUSE都有相应的包和开发定制的安装程序.当然,各个Linux平台上的包制作发布的时间各有快慢,同时支持的版本更新也有快有慢.Ubuntu是更新最

《OpenStack实战指南》—— 第2章 Chapter 2

第2章 Chapter 2 OpenStack的安装 2.1 在Ubuntu上使用二进制包安装 笔者写本书的时候,OpenStack已经发展到Havana版本,几大主流的Linux发行版本都会将OpenStack的源代码做成各自平台的二进制安装包,以供用户使用.随着OpenStack使用的人越来越多,发行版本对Linux的支持力度也越来越大,就目前来看,Ubuntu(Debian).RedHat.OpenSUSE都有相应的包和开发定制的安装程序.当然,各个Linux平台上的包制作发布的时间各有快

在Ubuntu上下载、编译和安装Android最新内核源代码(Linux Kernel)

在前一篇文章提到,从源代码树下载下来的最新Android源代码,是不包括内核代码的,也就是Android源代码工程默认不包含Linux Kernel代码,而是使用预先编译好的内核,也就是prebuilt/android-arm/kernel/kernel-qemu文件.那么,如何才能DIY自己的内核呢?这篇文章一一道来.       一. 首选,参照前一篇在Ubuntu上下载.编译和安装Android最新源代码准备好Android源代码目录.       二. 下载Linux Kernel fo

Linux 有问必答:如何在Ubuntu或者Debian中编译安装ixgbe驱动

Linux 有问必答:如何在Ubuntu或者Debian中编译安装ixgbe驱动 提问: 我想为我的Intel 10G网卡下载安装最新的ixgbe驱动.我该如何在Ubuntu(或者Debian)中安装ixgbe驱动? Intel的10G网卡(比如,82598. 82599. x540)由ixgbe驱动支持.现代的Linux发行版已经带有了ixgbe驱动,通过可加载模块的方式使用.然而,有些情况你希望在你机器上的自己编译安装ixgbe驱动,比如,你想要体验ixbge驱动的最新特性时.同样,内核默认