Cloud foundry PCF中的NFS卷服务

Cloud foundry PCF中的NFS卷服务,cloud-foundry,Cloud Foundry,我正在尝试从PCF应用程序连接到现有NAS装载路径。为了实现这一点,我在PCF中有一个NFS服务实例,能够创建服务、将服务绑定到应用程序并执行应用程序 按照故障排除链接的建议,我可以通过在PCF应用程序上执行SSH来查看NAS装载路径中的文件。请在此处提供链接。但是,当我试图通过应用程序从装载路径访问源代码示例html文件时,尽管我在使用/nfs/volume1作为文件名之前的前缀 manifest.yml applications: - name: samplw memory: 64M

我正在尝试从PCF应用程序连接到现有NAS装载路径。为了实现这一点,我在PCF中有一个NFS服务实例,能够创建服务、将服务绑定到应用程序并执行应用程序

按照故障排除链接的建议,我可以通过在PCF应用程序上执行SSH来查看NAS装载路径中的文件。请在此处提供链接。但是,当我试图通过应用程序从装载路径访问源代码示例html文件时,尽管我在使用/nfs/volume1作为文件名之前的前缀

manifest.yml

applications:
- name: samplw
  memory: 64M
  path: /nfs/volume1/
卷服务器中提供的abc.jpg文件


当我尝试访问该图像的端点URL时,该图像应该被加载,但该图像没有加载

有多种方法可以做到这一点,这里有两种方法可以工作

最简单的方法是将.profile脚本添加到应用程序的根目录中。这是一个在应用程序启动前运行的脚本。在这种情况下,您可以将文件从/nfs/volume1复制到/home/vcap/app/htdocs/,后者是buildpack配置的docroot。您复制到该目录中的任何文件都将由ApacheWeb服务器提供

我只会在服务器上有少量文件的情况下执行此操作,以便它们在不到10秒的时间内快速复制。否则,每次应用程序启动时,您都会等待一段时间,这是不高效的。如果复制速度足够慢,您还可能会导致应用程序超时并无法启动。也就是说,这将为您提供绝对最佳的性能。当您直接从NFS提供服务时,速度会变慢

如果您想直接从NFS提供服务,我的建议是将docroot保留在默认位置,并添加一个别名指令,将应用程序下的某个路径映射到NFS上的文件。例如,您可以将别名添加到map/static/to/nfs/volume1,并且在访问/static/…时,/nfs/volume1下的所有文件都将被提供。。。走同一条路

这是您需要添加到buildpack使用的默认配置中的附加配置是

LoadModule alias_module modules/mod_alias.so
Alias /static /nfs/volume1
<Directory "/nfs/volume1">
    Require all granted
</Directory>
它需要在.bp config/httpd/extra/httpd-modules.conf或buildpack使用的其他配置文件中的应用程序下

这里有一个完整的例子->

如果您所做的只是提供静态文件,则可以将别名设置为/或尝试更改DocumentRoot。这已经设置好了,但我不记得你是否真的可以覆盖那个文件


希望有帮助

当我试图访问卷服务器上可用的abc.jpg映像时,未加载映像。您如何推动应用程序?什么是完整的cf推送命令和输出?此外,在应用程序manifest.yml文件中还有路径:/nfs/volume1。你这是什么意思?这就是告诉客户机要推送什么文件,所以它必须存在于本地&对服务器端发生的事情没有影响。这在当地存在吗?最后,包括如何创建和绑定服务,屏蔽敏感数据。谢谢嗨,丹尼尔,谢谢你的回复。我正在使用下面的cf push命令将应用程序作为示例推送,cf push sample-b php_buildpack-p示例应用程序已成功推送并启动并运行。在“我的应用程序包含示例html页面表单”中,该页面尝试加载装载路径中可用的映像。/nfs/volume1路径只是在将nfs服务绑定到应用程序时,我们提供了装载路径(如/nfs/volume1),以便在服务器装载路径(如/abc/source/In x.x.x IP)中可以找到哪些文件复制到该本地路径到/nfs/volume1,我们在深入ssh单元的同时验证,并检查本地装载路径中的文件是否可以作为/nfs/volume1保存,并且该路径中的源也可以使用nfs服务,如下面的cf create service nfs现有nfs_服务-c config.json和下面类似的json文件{share:x.x.x.com/abc/source}感谢您的快速响应..我已经用别名实现了您的第二种方法,并按预期工作。。非常感谢您的支持。非常感谢。我们无法使用PHP构建包实现ScriptAlias以在Pivotal中加载CGI脚本。httpd.conf fileCommand中使用的以下命令是ScriptAlias/static/script/samplecgi,以及添加的目录标记,其中包含Require all-grated-access,但不起作用。在访问pcfWe中的routename/static/test.cgi等应用程序时,我们正在获取文件not found script/samplecgi/test.cgi。我们的应用程序中也有script/samplecgi文件夹。路径/script/samplecgi不太可能存在,因为您将无法写入该loc 以vcap用户身份注册。您希望ScriptAlias指向CGI脚本的位置。通常的示例是ScriptAlias/cgi-bin/${HOME}/htdocs/cgi-bin/,它公开了http://example.com/cgi-bin/my-script.cgi 到位于应用程序根目录下的htdocs/cgi-bin/my-script.cgi的脚本。尝试将第二个参数调整为ScriptAlias,它是带有CGI脚本的文件夹在磁盘上的路径。如果你需要更多的帮助,开始一个新问题。