PCF中的NFS卷服务

时间:2019-01-05 16:40:43

标签: pivotal-cloud-foundry

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

我可以按照故障排除链接的建议通过在PCF应用程序上执行SSH来从NAS安装的路径查看文件(请在此处提供链接),但是当我尝试访问源代码(示例html文件)时虽然我使用/ nfs / volume1作为文件名之前的前缀,但由于无法正确解析路径,因此无法通过应用程序从安装的路径访问该文件。

manifest.yml

applications:
- name: samplw
  memory: 64M
  path: /nfs/volume1/
卷服务器中的

abc.jpg文件

当我尝试访问该端点URL时,应该加载图像,但是图像未加载

1 个答案:

答案 0 :(得分:1)

执行此操作的方法不止一种,这里有两种可行的方法。

  1. 最简单的方法是在应用程序的根目录中添加一个.profile脚本。这是一个在您的应用启动之前运行的脚本。这样,您可以将文件从/nfs/volume1复制到/home/vcap/app/htdocs/,这是buildpack配置的docroot。您复制到该目录中的所有文件都将由Apache Web Server提供。

    仅当服务器上的文件数量少时,我才会这样做,以便它们能够快速复制(少于10秒)。否则,每次启动应用程序时,您将不得不等待一段时间,这效率不高。如果复制足够慢,您也可能会导致应用程序超时并无法启动。也就是说,这将为您提供绝对最佳的性能。直接从NFS服务时,速度会变慢。

  2. 如果要直接从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,但我不记得是否可以覆盖该文件。

希望有帮助!