通过 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-config
和 ckan-source
文件夹:
config.vm.synced_folder "ckan-config/", "/etc/ckan"
config.vm.synced_folder "ckan-source/", "/usr/lib/ckan"
这是我的问题
上面的第一行同步了ckan-config
文件夹(包含datapush_settings.py
和default/development.ini
之类的内容),效果很好。但是,如果我不注释第二行,那么 CKAN 就不起作用。我收到 500 内部服务器错误。
我尝试注释掉第二行,启动 Vagrant 框,取消注释,然后运行 vagrant reload
,但 CKAN 仍然无法启动。我仍然得到相同的 500 Internal Server Error。
我最初是如何创建本地文件夹的
创建了一个有效的 CKAN 环境vagrant ssh
ed 进入它
创建了一个新的 git 存储库并将/etc/ckan
添加到其中
创建了另一个新的 git 存储库并将 /usr/lib/ckan
添加到其中
从 ssh 退出
去了VagrantFile
所在的同一目录
git 克隆了两个仓库
将两行(以上)添加到VagrantFile
跑vagrant 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 源文件的主要内容,如果未能解决你的问题,请参考以下文章