最近一次从Github上更新Keystone的代码后,发现原来bin/keystone-all和bin/keystone-manage都不见了,取而代之的是keystone/cmd/目录下的all.py和manage.py两个python脚本.虽然在测试的virtualenv环境下仍然可以执行原来的命令,但是想试着在Apache中运行Keystone,毕竟这已经是社区力推的启动方式了.

  我的系统是Ubuntu,安装了sysv-rc-conf来管理开机时启动的服务,包括Apache2, MySQL, RabbitMQ等:

# apt-get install -y sysv-rc-conf

  要管理系统启动时加载的服务时只要输入 # sysv-rc-conf即可, 移动光标到对应运行级的括号内按空格就可以选择或者反选.

  想要Apache加载Python服务器脚本,需要为Apache添加mod_wsgi模块,我比较喜欢简洁的方式,没有自己一步步配置,直接将其安装到Apache2中:

# apt-get install libapache2-mod-wsgi

  

  接下来要告诉Apache每次启动的时候加载Keystone,先将Keystone源码repo中httpd/wsgi-keystone.conf复制到/etc/apache2/conf-available/

# cp /home/openstack/keystone/httpd/wsgi-keystone.conf /etc/apache2/conf-available



/etc/apache2/conf-available/
-->

  这里/home/openstack/keystone是我克隆Keystone源码的位置,需要根据实际情况改动. Ubuntu上Apache2的配置目录为/etc/apache2/,CentOS等系统上为/etc/httpd/,需要根据情况改动.
  

  接着在/etc/apache2/conf-enabled/目录中创建一个指向/etc/apache2/conf-available/wsgi-keystone.conf的同名软链接:

# cd /etc/apache2/conf-enabled/
# ln -s /etc/apache2/conf-available/wsgi-keystone.conf wsgi-keystone.conf

  

  然后根据需要修改/etc/apache2/conf-available/wsgi-keystone.conf文件

Listen 5000
Listen 35357 <VirtualHost *:5000>
WSGIDaemonProcess keystone-public processes=5 threads=1 user=keystone display-name=%{GROUP}
WSGIProcessGroup keystone-public
WSGIScriptAlias / /var/www/cgi-bin/keystone/main
WSGIApplicationGroup %{GLOBAL}
WSGIPassAuthorization On
<IfVersion >= 2.4>
ErrorLogFormat "%{cu}t %M"
</IfVersion>
ErrorLog /var/log/apache2/keystone.log
CustomLog /var/log/apache2/keystone_access.log combined
</VirtualHost> <VirtualHost *:35357>
WSGIDaemonProcess keystone-admin processes=5 threads=1 user=keystone display-name=%{GROUP}
WSGIProcessGroup keystone-admin
WSGIScriptAlias / /var/www/cgi-bin/keystone/admin
WSGIApplicationGroup %{GLOBAL}
WSGIPassAuthorization On
<IfVersion >= 2.4>
ErrorLogFormat "%{cu}t %M"
</IfVersion>
ErrorLog /var/log/apache2/keystone.log
CustomLog /var/log/apache2/keystone_access.log combined
</VirtualHost>

  在WSGIDaemonProcess中设置启动Keystone服务器的进程数,线程数,启动服务器的用户等, 这些值需要根据具体的环境进行修改;\

  在WSGIScriptAlias处设置启动脚本的位置, 如果指定/var/www/cgi-bin/keystone/main,那么这个文件(链接)必须存在;

  在ErrorLog 处设置Keystone错误日志的路径,这个日志是由HTTPD根据Keystone的运行结果维护的,Ubuntu和红帽系的OS在Apache2的目 录名称上可能不同,比如Ubuntu中Apache2的日志维护在/var/log/apache2/, 而CentOS等系统中Apache2的日志维护在/var/log/httpd/;

  在CustomLog处设置Keystone访问日志的路径,注意事项同ErrorLog.

  

  conf文件配置完成后,创建目录/var/www/cgi-bin/keystone/, 为其中添加两个软链接main和admin,他们都指向keystone/httpd/keystone.py

# mkdir /var/www/cgi-bin/keystone; cd /var/www/cgi-bin/keystone
# ln -s /home/openstack/keystone/httpd/keystone.py main
# ln -s /home/openstack/keystone/httpd/keystone.py admin

  

  然后重启Apache2服务即可,如果希望开机时Keystone就加载运行,使用sysv-rc-conf将Apache2设置为开机启动即可.

  查看Keystone服务器进程,发现现在它已经在HTTPD中运行了,注意如果keystone.conf文件中也配置了日志文件log_file, 那么Keystone的错误日志将会输出两份,一份由HTTPD维护,一份由Keystone维护,但是二者的内容是一样的.

# ps aux | grep keystone
darren 0.0 0.1 ? Sl : : (wsgi:keystone-pu -k start
darren 0.0 0.1 ? Sl : : (wsgi:keystone-pu -k start
darren 0.0 0.1 ? Sl : : (wsgi:keystone-pu -k start
darren 0.0 0.1 ? Sl : : (wsgi:keystone-pu -k start
darren 0.0 0.1 ? Sl : : (wsgi:keystone-pu -k start
darren 0.0 0.1 ? Sl : : (wsgi:keystone-ad -k start
darren 0.0 0.1 ? Sl : : (wsgi:keystone-ad -k start
darren 0.0 0.1 ? Sl : : (wsgi:keystone-ad -k start
darren 0.0 0.1 ? Sl : : (wsgi:keystone-ad -k start
darren 0.0 0.1 ? Sl : : (wsgi:keystone-ad -k start

Ubuntu下在Apache中运行Keystone的更多相关文章

  1. Ubuntu下配置Apache的Worker模式

    其实Apache本身的并发能力是足够强大的,但是Ubuntu默认安装的是Prefork模式下的Apache.所以导致很多人后面盲目的去 安装lighttpd或者nginx一类替代软件.但是这类软件有一 ...

  2. ubuntu下在apache部署python站点

    ubuntu下在apache部署python站点 我的是ubuntu14 32为的虚拟机,默认安装的python为3.4 环境:apache + mysql + django + python3 软件 ...

  3. Ubuntu下关闭apache和mysql的开机启动

    Ubuntu下关闭apache和mysql的开机启动 sudo apt-get install sysv-rc-conf sudo sysv-rc-conf sudo vi /etc/init/mys ...

  4. php在apache中运行模式

    php在apache中运行模式 (2011-12-18 02:38:27) 标签: 杂谈 分类: 服务器及软件 一.php在php在三种工作方式:Apache 模块DLL) 以下分别比较: 1. ph ...

  5. ubuntu下配置Apache

    ubuntu下配置Apache Apache的默认文档根目录是在Ubuntu上的/var/www目录 配置文件是/ etc/apache2/apache2.conf配置存储在的子目录在/etc/apa ...

  6. Ubuntu 下部署asp.net运行环境

    在Ubuntu下部署asp.net运行环境,网上教程很多,基本都是编译Mono源码,然后安装jexus.但是可能是我最近RP不太好,编译Mono源码一直都是失败,无奈之下只好找另外的方法安装了. 网上 ...

  7. 在Ubuntu下的OpenStack中配置使用Spice协议

    在Ubuntu下的OpenStack中配置使用Spice协议 by 无若 ####控制节点#安装apt-get install nova-spiceproxy spice-html5 spice-vd ...

  8. ubuntu 下搭建apache+python的运行环境

    ubuntu下怎么搭建apache+python运行环境,可以参考http://www.01happy.com/ubuntu-apache-mod-python/ ,这里只是简单的记录下步骤,本文主要 ...

  9. 在ubuntu下配置apache运行python脚本

    2008-12-05    常用的简单命令 sudo apt-get remove --purge apache apache2 (彻底删除)   sudo /etc/init.d/apache2 r ...

随机推荐

  1. Windows 文件名的书写规范

    下面是不能用于文件名的: / \ : * " < > | windows系统下文件名长度为: 255个英文字符(DOS下8.3格式),包括文件名和扩展名在内,或者是255/2=1 ...

  2. 几种Unity运行平台的判断

    这里就介绍几种常见的,也是便于使用的几种平台判断的方法. 1.先说第一种,也是我用的顺手的一个.利用RuntimePlatform判断,API上的解释是[The platform applicatio ...

  3. su 与 su - 比较

    原文地址:http://blog.chinaunix.net/uid-25557346-id-2889329.html   今天有一同事说在切换用户的时候,找不到该用户下用户命令,后来仔细检查了一下过 ...

  4. linux 启动 Oracle 实例

    启动数据库实例,分为两步:第一步,启动监听:第二步,启动数据库实例. 一.如何启动数据库实例 1.进入到sqlplus启动实例 --“切换到oracle用户” su - oracle --“打开监听” ...

  5. Nginx升级

    Ubuntu14.04默认的安装源中安装的是Nginx 1.4.6 echo deb http://nginx.org/packages/ubuntu/ trusty nginx >> / ...

  6. iOS开发-UIView扩展CGRect

    关于UIView的位置都会遇到,一般需要改变UIView的位置,需要先获取原有的frame位置,然后在frame上面修改,有的时候如果只是改变了一下垂直方向的位置,宽度和高度的一种,这种写法很麻烦.下 ...

  7. 【Spark】Sparkstreaming-性能调优

    Sparkstreaming-性能调优 Spark Master at spark://node-01:7077 sparkstreaming 线程 数量_百度搜索 streaming中partiti ...

  8. sqlite3命令行查看中文乱码问题解决

    SQLite库包含一个名字叫做sqlite3的命令行,它可以让用户手工输入并执行面向SQLite数据库的SQL命令.我们通过程序创建的数据库一般位于/data/data/程序db设置的content类 ...

  9. scala recursive value x$5 needs type

    recursive value x$5 needs type的原因是使用了一个类型不确定的变量,例如 val (id, name) = (id, getName(id)) 其中id是个变量,其值还不确 ...

  10. C# System.IO.File

    using System; using System.IO; class Test { public static void Main() { string path = @"c:\temp ...