亚马逊EFS:更改WordPress的上传目录以外的根(Amazon EFS: Changing W

2019-10-29 07:38发布

我有一个从通过CodeDeploy一个Git仓库更新多个AWS EC2实例。 然而,由于保持wp-content/uploads文件夹中的Git是混乱和难以维持的,我不是尝试所有上传移到我已经安装作为EFS文件系统的目录。 这样,我应该能够共享多个EC2实例之间的上传。

不过,现在我遇到了一个新问题; 有没有办法为我设定的WP上传文件夹是WP根之外。

WordPress是位于/opt/bitnami/apps/wordpress/htdocs ,这也是在那里我们的域名指向。 该EFS系统安装到/home/bitnami/efs 。 由于EFS目录所在的WP根目录之外有没有办法,我链接到它。

我也得到了使用这个符号链接指向的默认工作wp-content/uploads文件夹到我期望的路径; 然而,这并不能真正解决我的问题,因为我不能依靠在CodeDeploy部署不被覆盖的符号链接。

所以我的问题如下:

  1. 是否有可能有不使用这个符号链接的设置工作,所以我可以部署没有通过上传受着担心?

  2. 如果一个符号链接,使这项工作的唯一/最好的办法,就是有什么办法符号链接添加到Git仓库,或其他任何方式绝对确保其持续期间CodeDeploy部署?

Answer 1:

您可以直接挂载EFS来/opt/bitnami/apps/wordpress/htdocs/wp-content/uploads ,以避免符号链接。

在您的appspec.yml添加两个挂钩:

hooks:
    BeforeInstall:
      - location: /deploy/BeforeInstall.sh
        timeout: 3000
        runas: root
    AfterInstall:
      - location: /deploy/AfterInstall.sh
        timeout: 3000
        runas: root

然后创建目录deploy和两个文件在它BeforeInstall.shAfterInstall.sh

BeforeInstall.sh卸载EFS如果安装

#!/bin/bash
if mount | grep /opt/bitnami/apps/wordpress/htdocs/wp-content/uploads > /dev/null; then
    sudo umount /opt/bitnami/apps/wordpress/htdocs/wp-content/uploads
fi

然后通过再次装入EFS AfterInstall.sh部署后

#!/bin/bash
sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 fs-fxxxxxx.efs.us-west-2.amazonaws.com:/ /opt/bitnami/apps/wordpress/htdocs/wp-content/uploads

注意:您还可以安装整个wp-contents目录,而不只是uploads文件夹,所以在这个更新themesplugins也得到自动反映在其他EC2s。

此外,符号链接是一个更好的解决方案,所以你不必永远不用担心意外删除部署过程中的EFS安装如果umount曾经失败。 您只需再次部署后重新使用的符号链接AfterInstall钩在文件中添加代码AfterInstall.sh

#!/bin/bash
ln -s /home/bitnami/efs /opt/bitnami/apps/wordpress/htdocs/wp-content/uploads


文章来源: Amazon EFS: Changing Wordpress upload directory to outside root