我正在尝试从PCF应用程序连接到现有的NAS安装路径。为此,我在PCF中有一个NFS服务实例,并且能够创建该服务,将该服务绑定到应用程序并执行该应用程序。
我可以按照故障排除链接的建议通过在PCF应用程序上执行SSH来从NAS安装的路径查看文件(请在此处提供链接),但是当我尝试访问源代码(示例html文件)时虽然我使用/ nfs / volume1作为文件名之前的前缀,但由于无法正确解析路径,因此无法通过应用程序从安装的路径访问该文件。
manifest.yml
applications:
- name: samplw
memory: 64M
path: /nfs/volume1/
卷服务器中的abc.jpg文件
当我尝试访问该端点URL时,应该加载图像,但是图像未加载
答案 0 :(得分:1)
执行此操作的方法不止一种,这里有两种可行的方法。
最简单的方法是在应用程序的根目录中添加一个.profile
脚本。这是一个在您的应用启动之前运行的脚本。这样,您可以将文件从/nfs/volume1
复制到/home/vcap/app/htdocs/
,这是buildpack配置的docroot。您复制到该目录中的所有文件都将由Apache Web Server提供。
仅当服务器上的文件数量少时,我才会这样做,以便它们能够快速复制(少于10秒)。否则,每次启动应用程序时,您将不得不等待一段时间,这效率不高。如果复制足够慢,您也可能会导致应用程序超时并无法启动。也就是说,这将为您提供绝对最佳的性能。直接从NFS服务时,速度会变慢。
如果要直接从NFS提供服务,我的建议是将docroot保留在默认位置,并添加Alias指令以将应用程序下的某些路径映射到NFS上的文件。例如,您可以添加别名以将/static
/映射到/nfs/volume1
,并且使用相同路径访问/nfs/volume1
时,/static/...
下的所有文件都将被保存。 / p>
这是您需要添加到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使用的其他配置文件,there are a few)中的应用程序下。
有一个完整的示例,您可以在这里看到-> https://github.com/dmikusa-pivotal/php-nfs-demo
如果您要做的只是提供静态文件,则可以将别名设置为/
,也可以尝试更改DocumentRoot
。设置为here,但我不记得是否可以覆盖该文件。
希望有帮助!