• Ubuntu下在Apache中运行Keystone


      最近一次从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

      这里/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    2582  0.0  0.1 176308  5692 ?        Sl   12:29   0:00 (wsgi:keystone-pu -k start
    darren    2583  0.0  0.1 176308  5692 ?        Sl   12:29   0:00 (wsgi:keystone-pu -k start
    darren    2584  0.0  0.1 176308  5692 ?        Sl   12:29   0:00 (wsgi:keystone-pu -k start
    darren    2585  0.0  0.1 176308  5692 ?        Sl   12:29   0:00 (wsgi:keystone-pu -k start
    darren    2586  0.0  0.1 176316  5692 ?        Sl   12:29   0:00 (wsgi:keystone-pu -k start
    darren    2587  0.0  0.1 176308  5692 ?        Sl   12:29   0:00 (wsgi:keystone-ad -k start
    darren    2588  0.0  0.1 176316  5692 ?        Sl   12:29   0:00 (wsgi:keystone-ad -k start
    darren    2589  0.0  0.1 176308  5692 ?        Sl   12:29   0:00 (wsgi:keystone-ad -k start
    darren    2590  0.0  0.1 176308  5692 ?        Sl   12:29   0:00 (wsgi:keystone-ad -k start
    darren    2591  0.0  0.1 176308  5692 ?        Sl   12:29   0:00 (wsgi:keystone-ad -k start
  • 相关阅读:
    PCB设计流程
    第一次PCB画板实战MiniDVPart1/3
    程序人生
    MCU死掉了
    一花一世界,一码一人生,谓之程序人生
    神船·神舟
    程序猿的选择
    android得到strings.xml文件中的内容
    Android特效 五种Toast详解
    Java字符串转换为日期和时间比较大小
  • 原文地址:https://www.cnblogs.com/Security-Darren/p/4458728.html
Copyright © 2020-2023  润新知