openstack学习记录(一) horizon二次开发部署(juno)

来源:互联网 发布:体体育训练软件 编辑:程序博客网 时间:2024/05/21 13:56

在虚拟机中部署了openstack(juno)版本,想要在物理机上调试查看horizon代码,过程如下:
编译器 pycharm 系统环境 Ubuntu14.04 , python .version() 2.7.6 django.version() 1.6.11
若没有django,先安装好django框架

一:下载juno版本对应的horizon源码

网址:https://releases.openstack.org/
下载 juno/horizon/2014.2.4版本,如下图
这里写图片描述
解压 horizon-2014.2.4.tar.gz文件,同时pycharm导入该文件夹。

二:配置环境

配置依赖包

sudo apt-get install python-pip
sudo apt-get install libxml2-dev libxslt1-dev python-dev
sudo apt-get install zlib1g-dev
sudo apt-get install libevent-dev
sudo apt-get install memcached
pip install python-memcached
sudo apt-get install libmemcached-dev
pip install pylibmc
(若不配置,在编译过程中会出现:
error: command ‘x86_64-linux-gnu-gcc’ failed with exit status 1)

环境配置

cd /*path*/horizon-2014.2.4/openstack_dashboard/local/cp loacl_settings.py.example local_settings.py

这里写图片描述

编辑local_settings.py文件

添加如下内容:
1 配置控制节点IP

OPENSTACK_HOST = "controller"

//此处为控制节点IP,可以配置hosts文件
注释OPENSTACK_HOST = “127.0.0.1”
2 允许任何主机访问dashboard

ALLOWED_HOSTS = ['*']

3 配置缓存会话存储服务:

CACHES = {   'default': {       'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',       'LOCATION': '127.0.0.1:11211',   }}注意:注释掉其它session存储配置 #CACHES = { #   'default': { #       'BACKEND': 'django.core.cache.backends.locmem.LocMemCache' #   }#}

4可选,配置其它 time zone

TIME_ZONE = "UTC"

完成

配置host

nano /etc/hosts

添加控制节点hosts

10.0.0.11     controller#虚拟机控制节点IP为10.0.0.11,此处对应openstack配置完成时访问dashboard的IP http://*IP*/horizon

压缩静态文件

在horizon-2014.2.4目录下(在此处出错,但是发现并没有影响,暂时搁置)

python manage.py collectstatic -lpython manage.py compress --force

编译

cd openstack_dashboarddjango-admin compilemessages

进入 requirements.txt文件查看依赖,若缺失,或在上面显示Install的提示,点击Install,即可自动安装

调试

点击运行horizon,并在浏览器中访问 127.0.0.1:8080时,会提示

A server error occurred. Please contact the administrator.

查看pycharm记录,报错:
File “/home/ubuntun/horizon/horizon-2014.2.4/openstack_dashboard/api/init.py”, line 34, in
from openstack_dashboard.api import base
1 ImportError: cannot import name base
方法:

修改api.__init__.py,将from openstack_dashboard.api import base 改为import base

2 同理 若出现 ImportError: cannot import name keystone
将from openstack_dashboard.api import keystone 改为import keystone
3 import netifaces ImportError: No module named netifaces

sudo pip install netifaces

重新运行
出现界面:

这里写图片描述

期间登录dashboard可能会出现一下问题

The authentication token issued by the Identity service has expired in keystone 

此处问题是虚拟机与horizon二次开发所在物理机时间不同步的问题
解决:重启ntp服务器
控制节点: service ntp restart
其余节点:service ntp stop //停止ntp
ntpdate 10.0.0.11 //此处是控制节点IP
service ntp restart //重启ntp服务,即可解决问题。