尝试使用本地存储设置CKAN文件存储时出现错误:权限被拒绝。

6
我根据这些步骤设置了本地文件存储。 http://docs.ckan.org/en/latest/filestore.html
  1. Create location

    sudo mkdir -p /var/lib/ckan/default 
    

    I confirm the location exists and is in the right location

  2. I uncomment the lines

    ofs.impl = pairtree
    ofs.storage_dir = /var/lib/ckan/default
    

    I confirmed I have pairtree and argparse installed

  3. I am using jetty as the web server not Apache so I do

    sudo chown jetty /var/lib/ckan/default
    sudo chmod u+rwx /var/lib/ckan/default
    sudo service jetty restart
    
  4. Then I run this command to start my site

    paster serve /etc/ckan/default/development.ini
    
我在虚拟环境中执行所有这些命令,然后收到了这个堆栈跟踪。
2013-12-04 17:39:46,369 WARNI [ckan.lib.uploader] Please use config option ckan.storage_path instaed of
                     ofs.storage_path
Traceback (most recent call last):
  File "/usr/lib/ckan/default/bin/paster", line 9, in <module>
    load_entry_point('PasteScript==1.7.5', 'console_scripts', 'paster')()
  File "/usr/lib/ckan/default/local/lib/python2.7/site-packages/paste/script/command.py", line 104, in run
    invoke(command, command_name, options, args[1:])
  File "/usr/lib/ckan/default/local/lib/python2.7/site-packages/paste/script/command.py", line 143, in invoke
    exit_code = runner.run(args)
  File "/usr/lib/ckan/default/local/lib/python2.7/site-packages/paste/script/command.py", line 238, in run
    result = self.command()
  File "/usr/lib/ckan/default/local/lib/python2.7/site-packages/paste/script/serve.py", line 284, in command
    relative_to=base, global_conf=vars)
  File "/usr/lib/ckan/default/local/lib/python2.7/site-packages/paste/script/serve.py", line 321, in loadapp
    **kw)
  File "/usr/lib/ckan/default/local/lib/python2.7/site-packages/paste/deploy/loadwsgi.py", line 247, in loadapp
    return loadobj(APP, uri, name=name, **kw)
  File "/usr/lib/ckan/default/local/lib/python2.7/site-packages/paste/deploy/loadwsgi.py", line 272, in loadobj
    return context.create()
  File "/usr/lib/ckan/default/local/lib/python2.7/site-packages/paste/deploy/loadwsgi.py", line 710, in create
    return self.object_type.invoke(self)
  File "/usr/lib/ckan/default/local/lib/python2.7/site-packages/paste/deploy/loadwsgi.py", line 146, in invoke
    return fix_call(context.object, context.global_conf, **context.local_conf)
  File "/usr/lib/ckan/default/local/lib/python2.7/site-packages/paste/deploy/util.py", line 56, in fix_call
    val = callable(*args, **kw)
  File "/usr/lib/ckan/default/src/ckan/ckan/config/middleware.py", line 156, in make_app
    os.makedirs(path)
  File "/usr/lib/ckan/default/lib/python2.7/os.py", line 157, in makedirs
    mkdir(name, mode)
OSError: [Errno 13] Permission denied: '/var/lib/ckan/default/storage'

答案是将所有者权限更改为粘贴站点包文件夹的所有者权限。 - flylib
3个回答

10

权限被拒绝:'/var/lib/ckan/default/storage'

看起来你没有读写该目录的权限。尝试在终端中运行以下命令:

sudo chown -R `whoami` /var/lib/ckan/default
sudo chmod -R u+rwx /var/lib/ckan/default

0

CKAN 2.9 中的 500 错误示例

File "/usr/lib/python3.8/os.py", line 223, in makedirs
    mkdir(name, mode)
PermissionError: [Errno 13] Permission denied: '/var/lib/ckan/default/webassets/.webassets-cache'

为了解决权限错误;

请设置权限和所有权。文件存储文档没有包括所有权和递归模式。

sudo chown www-data:www-data -R /var/lib/ckan/default
sudo chmod u+rwx -R /var/lib/ckan/default

最后重新启动您的服务器:

sudo supervisorctl restart ckan-uwsgi:*

0

对于那些在很多年后偶然遇到这个问题的人...

当我尝试设置数据存储并运行paster --plugin=ckan datastore set-permissions -c /etc/ckan/default/production.ini 命令时,我遇到了这个问题。

根据文档已经 设置了 FileStore。我最终不得不在Web页面上传资源,然后重新运行上述命令,错误不再出现,输出也按预期工作。上传资源后,/var/lib/ckan/default/resources/var/lib/ckan/default/storage 目录将以适当的权限创建,而且 paster 命令不需要尝试创建它们(至少我是这样认为的)。

如果您有一个稍微不同的问题导致此错误,以下是一些其他资源:


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接