CloudFoundry 容器安装 linux 邮件命令
CloudFoundry container install linux mail command
在将 PHP/Wordpress 应用程序移植到 CloudFoundry 时,我们面临着应用程序依赖于 linux mail
命令的问题,默认情况下该命令未安装在 CloudFoundry 容器上。
有没有办法将它安装在应用程序启动时运行的容器中?
最好的解决方案是将您的应用程序转换为直接与 SMTP 服务器对话。有一些 Wordpress 插件可以让你做到这一点。您可能要考虑使用其中之一。我不知道你的情况,但使用它们通常很简单。
如果这不是一个选项,您基本上需要将 mail
二进制文件或脚本与您的应用程序打包在一起。然后,您可以直接将 Wordpress 指向该可执行文件,也可以调整 PATH 环境变量,使二进制文件位于您的路径中,Wordpress 可以找到它。
对此有几点说明:
您无法安装 RPM 或 DEB 包,因为您无法在 CF 上获得根访问权限。您可以做的最好的事情是将您自己的二进制文件和脚本与应用程序一起使用(或编写自定义构建包,但这需要更多工作)。
您可以从 Linux 系统中获取 mail
二进制文件并将其与您的应用程序捆绑在一起。例如,在 VM 中安装 mail
(运行 Ubuntu Trusty 或使用 cloudfoundry/cflinuxfs2
docker 映像),复制 mail
二进制和依赖共享库到应用程序中的目录。推送您的应用程序,包括那些二进制文件。然后您可以调整 PATH 和 LD_LIBRARY_PATH 环境变量,以便 Wordpress 可以找到该命令,并且该命令可以找到它关联的共享库。
如果你不能/不想搞乱#2,你可以用你最喜欢的脚本语言编写脚本(Python、Perl、Ruby , PHP, 等等..),它实现了与 mail
命令类似的 cli(足以满足 Wordpress 的需求)并直接与 SMTP 服务器对话。将脚本命名为 mail
并将 Wordpress 指向它或放在 PATH 中。
调整PATH环境变量,不想用cf set-env
。那是因为你只能用cf set-env
覆盖变量,你不能用传统的PATH=$PATH:/my/new/path
。为了使这项工作正常进行,您需要在应用程序的根目录中包含一个 .profile
文件。这将在您的应用程序启动之前被拾取和获取,您可以在其中添加 PATH=$PATH:$HOME/path/to/mail/script
,其中 /path/to/mail/script
是您与应用程序捆绑的位置以及您希望在路径上可用的内容。我们用 $HOME
作为前缀,以便它指向我们的应用程序。
https://docs.cloudfoundry.org/devguide/deploy-apps/deploy-app.html#profile
在将 PHP/Wordpress 应用程序移植到 CloudFoundry 时,我们面临着应用程序依赖于 linux mail
命令的问题,默认情况下该命令未安装在 CloudFoundry 容器上。
有没有办法将它安装在应用程序启动时运行的容器中?
最好的解决方案是将您的应用程序转换为直接与 SMTP 服务器对话。有一些 Wordpress 插件可以让你做到这一点。您可能要考虑使用其中之一。我不知道你的情况,但使用它们通常很简单。
如果这不是一个选项,您基本上需要将 mail
二进制文件或脚本与您的应用程序打包在一起。然后,您可以直接将 Wordpress 指向该可执行文件,也可以调整 PATH 环境变量,使二进制文件位于您的路径中,Wordpress 可以找到它。
对此有几点说明:
您无法安装 RPM 或 DEB 包,因为您无法在 CF 上获得根访问权限。您可以做的最好的事情是将您自己的二进制文件和脚本与应用程序一起使用(或编写自定义构建包,但这需要更多工作)。
您可以从 Linux 系统中获取
mail
二进制文件并将其与您的应用程序捆绑在一起。例如,在 VM 中安装mail
(运行 Ubuntu Trusty 或使用cloudfoundry/cflinuxfs2
docker 映像),复制mail
二进制和依赖共享库到应用程序中的目录。推送您的应用程序,包括那些二进制文件。然后您可以调整 PATH 和 LD_LIBRARY_PATH 环境变量,以便 Wordpress 可以找到该命令,并且该命令可以找到它关联的共享库。如果你不能/不想搞乱#2,你可以用你最喜欢的脚本语言编写脚本(Python、Perl、Ruby , PHP, 等等..),它实现了与
mail
命令类似的 cli(足以满足 Wordpress 的需求)并直接与 SMTP 服务器对话。将脚本命名为mail
并将 Wordpress 指向它或放在 PATH 中。调整PATH环境变量,不想用
cf set-env
。那是因为你只能用cf set-env
覆盖变量,你不能用传统的PATH=$PATH:/my/new/path
。为了使这项工作正常进行,您需要在应用程序的根目录中包含一个.profile
文件。这将在您的应用程序启动之前被拾取和获取,您可以在其中添加PATH=$PATH:$HOME/path/to/mail/script
,其中/path/to/mail/script
是您与应用程序捆绑的位置以及您希望在路径上可用的内容。我们用$HOME
作为前缀,以便它指向我们的应用程序。https://docs.cloudfoundry.org/devguide/deploy-apps/deploy-app.html#profile