This is my Icehouse documentation, I don't know if it will work with Havana:

Mark

1.2  Keystone files changed (WSGI):

NOTE: The Apache2 WSGI configuration scripts below replace the 
"/etc/init.d/keystone" startup script

Create/configure file "/etc/apache2/sites-available/keystone.conf" to match 
your keystone installation and server.

WSGIDaemonProcess keystone user=keystone group=nogroup processes=6



Listen 0.0.0.0:5000

<VirtualHost _default_:5000>



    LogLevel debug

    ErrorLog /var/log/keystone/keystone.log

    CustomLog ${APACHE_LOG_DIR}/ssl_access.log combined



    SSLEngine on

    SSLCertificateFile /etc/keystone/ssl/certs/keystone.pem

    SSLCertificateKeyFile /etc/keystone/ssl/private/keystonekey.pem



    SSLProtocol all -SSLv2

    SSLVerifyClient none



    WSGIScriptAlias /  /usr/lib/cgi-bin/keystone/main

    WSGIProcessGroup keystone

    SetEnv nokeepalive ssl-unclean-shutdown

</VirtualHost>



Listen 0.0.0.0:35357

<VirtualHost _default_:35357>



    LogLevel debug

    ErrorLog /var/log/keystone/keystone.log

    CustomLog ${APACHE_LOG_DIR}/ssl_access.log combined



    SSLEngine on

    SSLCertificateFile /etc/keystone/ssl/certs/keystone.pem

    SSLCertificateKeyFile /etc/keystone/ssl/private/keystonekey.pem



    SSLProtocol all -SSLv2

    SSLVerifyClient none



    WSGIScriptAlias /  /usr/lib/cgi-bin/keystone/admin

    WSGIProcessGroup keystone

    SetEnv nokeepalive ssl-unclean-shutdown



</VirtualHost>



Note: By changing the SSL_Engine variable in this file you can turn on and off 
the Apache2-SSL frontend to Keystone.


Now link keystone sites-enabled to keystone sites-available
sudo ln -s /etc/apache2/sites-available/keystone.conf   
/etc/apache2/sites-enabled/keystone.conf



Create directory "/usr/lib/cgi-bin/keystone"

sudo mkdir /usr/lib/cgi-bin

sudo mkdir /usr/lib/cgi-bin/keystone



Create file "/usr/lib/cgi-bin/keystone/admin".

import logging

import os



from paste import deploy



from keystone.openstack.common import gettextutils



from keystone.common import dependency

from keystone.common import environment

from keystone.common import sql

from keystone import config

from keystone.openstack.common import log

from keystone import service



# NOTE(blk-u):

# gettextutils.install() must run to set _ before importing any modules that

# contain static translated strings.

gettextutils.install('keystone', lazy=True)



CONF = config.CONF



config.configure()

sql.initialize()

config.set_default_for_default_log_levels()



CONF(project='keystone')

config.setup_logging()



environment.use_stdlib()

#name = os.path.basename(__file__)

name = "admin"



if CONF.debug:

    CONF.log_opt_values(log.getLogger(CONF.prog), logging.DEBUG)





drivers = service.load_backends()



# NOTE(ldbragst): 'application' is required in this context by WSGI spec.

# The following is a reference to Python Paste Deploy documentation

# http://pythonpaste.org/deploy/

application = deploy.loadapp('config:%s' % config.find_paste_config(),

                             name=name)



dependency.resolve_future_dependencies()



Also create file "/usr/lib/cgi-bin/keystone/main".

import logging

import os



from paste import deploy



from keystone.openstack.common import gettextutils



from keystone.common import dependency

from keystone.common import environment

from keystone.common import sql

from keystone import config

from keystone.openstack.common import log

from keystone import service



# NOTE(blk-u):

# gettextutils.install() must run to set _ before importing any modules that

# contain static translated strings.

gettextutils.install('keystone', lazy=True)



CONF = config.CONF



config.configure()

sql.initialize()

config.set_default_for_default_log_levels()



CONF(project='keystone')

config.setup_logging()



environment.use_stdlib()

#name = os.path.basename(__file__)

name = "main"



if CONF.debug:

    CONF.log_opt_values(log.getLogger(CONF.prog), logging.DEBUG)





drivers = service.load_backends()



# NOTE(ldbragst): 'application' is required in this context by WSGI spec.

# The following is a reference to Python Paste Deploy documentation

# http://pythonpaste.org/deploy/

application = deploy.loadapp('config:%s' % config.find_paste_config(),

                             name=name)



dependency.resolve_future_dependencies()



If the keystone service is running, shut it down because the Apache2 service 
will now start it up with as many instances of keystone as are specified on the 
first line of file "/etc/apache2/sites-available/keystone.conf".

sudo service keystone stop


From: mike.hearn [mailto:[email protected]]
Sent: Monday, March 31, 2014 10:22 AM
To: [email protected]
Subject: [Openstack] keystone/HTTPD config issue

Hoping someone can offer some help / guidance.

I am trying to configure keystone to run in HTTPD.
Release: Havana
OS: EL 6.5

Following documentation I have configured a VirtualHost in my webserver and 
made the necessary updates in keystone.conf  (admin_port, public_port, 
admin_endpoint, public_endpoint, external driver)
Before updating endpoints in the keystone repo I ran an initial keystone cmd to 
verify the original endpoints and to test the httpd setup was functioning 
correctly  e.g.
$ keystone --os-endpoint http://xxxxxxx:8080/keystone/admin/v2.0 --os-token 
xxxxxxxx service-get keystone

This failed with errors showing up in the webserver log files.

[VirtualHost: xxxxxxx:8080]  from paste import deploy
[VirtualHost: xxxxxxx:8080]  ImportError: cannot import name deploy

The error is obviously linked to the keystone.wsgi file (as linked frpm 
keystone/admin) and its attempt to import the paste module
e.g.  (extract from keystone.wsgi)

from paste import deploy
from keystone.openstack.common import gettextutils

I did some research and found an older but similar issue occurred with the 
keystone-all file. The fix was to ensure that the import of gettextutils 
occured before the import of deploy from paste. 
(https://github.com/redhat-openstack/keystone/commit/e053026a)

I moved the import of gettextutils above the paste import in keystone.wsgi  
which did remove the paste import error. However,  the webserver log file now 
shows a segfault after re-running the keystone cmd above

[VirtualHost: xxxxxxx:8080]  Premature end of script headers: admin
[VirtualHost: xxxxxxx:8080]  Request Failed for : 
/keystone/admin/v2.0/OS-KSADM/services/keystone, Resp Code : [500]
[VirtualHost: main]  child pid 9671 exit signal Segmentation fault (11)
I also looked in /var/log/messages and see:
 kernel: httpd.worker[9705]: segfault at 0 ip 00007f509a7cf86f sp 
00007f508e432fb8 error 4 in 
libc-2.12.so<http://libc-2.12.so/>[7f509a69c000+18b000]
So at this point I need to ask :
1 - Was I correct to update keystone.wsgi and move the import gettextutils 
above import deploy  ?
2 - Has anyone come across similar issues when configuring keystone to run in 
HTTPD

I'd gratefully appreciate any help and advice on solving or trouble shooting
Cheers
_______________________________________________
Mailing list: http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack
Post to     : [email protected]
Unsubscribe : http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack

Reply via email to