我有一个从通过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部署不被覆盖的符号链接。
所以我的问题如下:
是否有可能有不使用这个符号链接的设置工作,所以我可以部署没有通过上传受着担心?
如果一个符号链接,使这项工作的唯一/最好的办法,就是有什么办法符号链接添加到Git仓库,或其他任何方式绝对确保其持续期间CodeDeploy部署?
您可以直接挂载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.sh
和AfterInstall.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
文件夹,所以在这个更新themes
和plugins
也得到自动反映在其他EC2s。
此外,符号链接是一个更好的解决方案,所以你不必永远不用担心意外删除部署过程中的EFS安装如果umount
曾经失败。 您只需再次部署后重新使用的符号链接AfterInstall
钩在文件中添加代码AfterInstall.sh
#!/bin/bash
ln -s /home/bitnami/efs /opt/bitnami/apps/wordpress/htdocs/wp-content/uploads