【问题标题】:Can't launch OpenStack Horizon Dashboard IOError: [Errno 13] Permission denied: '/var/lib/openstack-dashboard/secret_key'无法启动 OpenStack Horizo​​n Dashboard IOError: [Errno 13] Permission denied: '/var/lib/openstack-dashboard/secret_key'
【发布时间】:2017-03-06 17:40:06
【问题描述】:

我在 ubuntu 16.04 vagrant box 上安装了 OpenStack,除了仪表板外一切正常,当我打开它时出现以下错误:

mod_wsgi (pid=6601): Target WSGI script '/usr/share/openstack-dashboard/openstack_dashboard/wsgi/django.wsgi' cannot be loaded as Python module.
mod_wsgi (pid=6601): Exception occurred processing WSGI script '/usr/share/openstack-dashboard/openstack_dashboard/wsgi/django.wsgi'.
Traceback (most recent call last):
  File "/usr/share/openstack-dashboard/openstack_dashboard/wsgi/django.wsgi", line 16, in <module>
    application = get_wsgi_application()
  File "/usr/lib/python2.7/dist-packages/django/core/wsgi.py", line 14, in get_wsgi_application
    django.setup()
  File "/usr/lib/python2.7/dist-packages/django/__init__.py", line 17, in setup
    configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)
  File "/usr/lib/python2.7/dist-packages/django/conf/__init__.py", line 48, in __getattr__
    self._setup(name)
  File "/usr/lib/python2.7/dist-packages/django/conf/__init__.py", line 44, in _setup
    self._wrapped = Settings(settings_module)
  File "/usr/lib/python2.7/dist-packages/django/conf/__init__.py", line 92, in __init__
    mod = importlib.import_module(self.SETTINGS_MODULE)
  File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "/usr/share/openstack-dashboard/openstack_dashboard/settings.py", line 335, in <module>
    from local.local_settings import *  # noqa
  File "/usr/share/openstack-dashboard/openstack_dashboard/local/local_settings.py", line 132, in <module>
    SECRET_KEY = secret_key.generate_or_read_from_file('/var/lib/openstack-dashboard/secret_key')
  File "/usr/share/openstack-dashboard/horizon/utils/secret_key.py", line 68, in generate_or_read_from_file
    key = read_from_file(key_file)
  File "/usr/share/openstack-dashboard/horizon/utils/secret_key.py", line 50, in read_from_file
    with open(key_file, 'r') as f:
IOError: [Errno 13] Permission denied: '/var/lib/openstack-dashboard/secret_key'

我了解密钥是由 Apache 生成的,位于密钥的权限之下。

vagrant@vagrant:/var/lib/openstack-dashboard$ ls -ltrh
total 12K
drwxr-xr-x  2 root     root     4.0K Feb 22 19:40 secret-key
-rw-r--r--  1 root     root        0 Mar  6 08:19 _var_lib_openstack-dashboard_secret_key.lock
-rw-------  1 root     root       64 Mar  6 08:19 secret_key
drwxr-xr-x 10 www-data www-data 4.0K Mar  6 10:06 static

我按照installation guide 安装了仪表板。

【问题讨论】:

  • Python 代码以 Apache 用户身份运行。该文件归 root 所有,其他用户无法访问。
  • 这个文件是怎么生成的? Apache 以 root 用户运行。 vagrant@vagrant:~$ ps -ef |grep apache2 root 3782 1 0 20:19 ? 00:00:00 /usr/sbin/apache2 -k start www-data 28787 3782 0 21:54 ? 00:00:00 /usr/sbin/apache2 -k start www-data 28788 3782 0 21:54 ? 00:00:00 /usr/sbin/apache2 -k start
  • 只有 Apache 父进程以 root 身份运行。所有处理请求的进程都会放弃特权并作为 www-data 进程运行。必须首先以 root 身份运行才能创建该文件,现在 www-data 进程无法访问它。
  • @GrahamDumpleton 正确,问题由 chown sudo chown www-data:www-data /var/lib/openstack-dashboard/secret_key 解决

标签: mod-wsgi openstack openstack-horizon


【解决方案1】:
chown -R www-data:www-data  secret-key

那么,没关系!

root@controller:/var/lib/openstack-dashboard# ll
total 20
drwxr-xr-x  4 root     root     4096 May  9 13:51 ./
drwxr-xr-x 51 root     root     4096 May  9 13:29 ../
-rw-------  1 www-data www-data   64 May  9 13:29 secret_key
drwxr-xr-x  2 root     root     4096 Apr  2 18:44 secret-key/
drwxr-xr-x 10 www-data www-data 4096 May  9 13:29 static/
-rw-r--r--  1 root     root        0 May  9 13:29 _var_lib_openstack-dashboard_secret_key.lock

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-28
    • 2018-08-15
    • 2015-11-21
    相关资源
    最近更新 更多