通过 Vagrant 中的共享文件访问 CKAN 源文件

Posted

技术标签:

【中文标题】通过 Vagrant 中的共享文件访问 CKAN 源文件【英文标题】:Access CKAN Source Files Via Shared Files In Vagrant 【发布时间】:2017-03-27 11:49:05 【问题描述】:

背景资料

我已将 CKAN 安装到 Vagrant 环境中,我希望能够在本地机器上的文本编辑器中查看和编辑配置文件 (etc/ckan) 和源文件 (/usr/lib/ckan)(不是在 Vim 中通过 ssh)。这是我的文件夹结构:

CKAN/ VagrantFile ckan-config/ ckan-source/

VagrantFile 中的以下两行允许我查看本地桌面中的 ckan-configckan-source 文件夹:

config.vm.synced_folder "ckan-config/", "/etc/ckan"
config.vm.synced_folder "ckan-source/", "/usr/lib/ckan"

这是我的问题

上面的第一行同步了ckan-config 文件夹(包含datapush_settings.pydefault/development.ini 之类的内容),效果很好。但是,如果我不注释第二行,那么 CKAN 就不起作用。我收到 500 内部服务器错误

我尝试注释掉第二行,启动 Vagrant 框,取消注释,然后运行 ​​vagrant reload,但 CKAN 仍然无法启动。我仍然得到相同的 500 Internal Server Error

我最初是如何创建本地文件夹的

创建了一个有效的 CKAN 环境 vagrant sshed 进入它 创建了一个新的 git 存储库并将/etc/ckan 添加到其中 创建了另一个新的 git 存储库并将 /usr/lib/ckan 添加到其中 从 ssh 退出 去了VagrantFile所在的同一目录 git 克隆了两个仓库 将两行(以上)添加到VagrantFilevagrant reload

抱歉,帖子太长了。只是想让一切从一开始就清楚。感谢您提前提供任何帮助。

【问题讨论】:

ckan 日志说的问题是什么? @DRead CKAN 日志在哪里?我在文档中找不到任何对它的引用。 /var/log/apache2/ckan_default.error.log 返回一个巨大的错误列表。最后一行写着:[Mon Mar 27 14:20:20.193664 2017] [wsgi:error] [pid 1536:tid 140204656879360] [remote 127.0.0.1:65016] DistributionNotFound: The 'ckan' distribution was not found and is required by the application 是的,不容易找到,但它在本页“日志文件”下的文档中docs.ckan.org/en/latest/maintaining/installing/… 【参考方案1】:

这是使用 Vagrant 和 ckan 的好方法。我建议你从头开始重新创建这两个目录:

    将这两行添加到您的 Vagrantfile 中 vagrant reload vagrant ssh 重新运行三个CKAN install steps:“2. 将 CKAN 安装到 Python 虚拟环境中”“4. 创建 CKAN 配置文件”“8. 链接到 who.ini”

注意,我这样做了,但遇到了 Beaker 的问题,此处详细介绍了解决方法:https://github.com/ckan/ckan/issues/3512

通过复制源目录(通过 git),您可能弄乱了安装或 virtualenv 的一些微妙之处 - 例如隐藏文件,符号链接等 - 根据该错误消息,您最终发现 CKAN 未安装在 virtualenv 中。最好先将这些行添加到您的 Vagrantfile 中,而不是在安装之后。

【讨论】:

我已经充实了这种通用方法并将其作为 wiki 页面提供:github.com/ckan/ckan/wiki/How-to-Install-CKAN-2.6.2-on-Vagrant【参考方案2】:

您需要确保root 用户拥有您的文件夹,当您从本地主机同步它们时,默认所有者将是 vagrant

更改您的设置

config.vm.synced_folder "ckan-config/", "/etc/ckan", owner: "root", group: "root"
config.vm.synced_folder "ckan-source/", "/usr/lib/ckan", owner: "root", group: "root"

您可能还需要检查权限,对于/usr/lib/ckan 文件夹,您可能需要添加mount_options: ["dmode:775" ,"fmode=664"]

【讨论】:

以上是关于通过 Vagrant 中的共享文件访问 CKAN 源文件的主要内容,如果未能解决你的问题,请参考以下文章

vagrant vbox上配置好开发环境缓存问题

Vagrant 共享文件夹适用于工作目录,但仅此而已

Vagrant 共享/同步文件夹权限

vagrant虚拟机共享目录加速

更改CKAN API接口 - API有限制吗?

在 Vagrant 下启用 SMB 文件共享