我的设置基于这篇文章:https://parall.ax/blog/view/3212/how-to-run-scalable-wordpress-on-aws-amazon-web-services-tutorial
即通过 Elastic Beanstalk 托管 Wordpress,使用单独的 RDS 实例并通过 Elastic Filesystem 处理文件服务/上传。我的efs.config
是这样的:
packages:
yum:
nfs-utils: []
jq: []
files:
"/tmp/mount-efs.sh" :
mode: "000755"
content: |
#!/usr/bin/env bash
mkdir -p /mnt/efs
EFS_NAME=$(/opt/elasticbeanstalk/bin/get-config environment | jq -r '.EFS_NAME')
mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 $EFS_NAME:/ /mnt/efs || true
mkdir -p /mnt/efs/uploads
chown webapp:webapp /mnt/efs/uploads
commands:
01_mount:
command: "/tmp/mount-efs.sh"
container_commands:
01-rm-wp-content-uploads:
command: rm -rf /var/app/ondeck/wp-content/uploads
02-symlink-uploads:
command: ln -snf /mnt/efs/uploads /var/app/ondeck/wp-content/uploads
我尝试使用 scp 通过一个 EC2 实例将大约 400G 的文件传输到 EFS。具体来说,我将文件传输到“/mnt/efs/uploads”,这应该是已安装的 EFS 驱动器。但是,在传输了大约 7G 后,我不可避免地被告知“设备上没有剩余空间”。
此外:
[ec2-user@ip-XXX-31-29-XXX uploads]$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 1.9G 60K 1.9G 1% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
/dev/xvda1 7.8G 7.7G 0 100% /
我为什么会收到此消息?似乎我正在填满 EC2 空间,但我应该将文件放在安装在 EC2 上的 EFS 上... 想法?
答案1
尝试执行/tmp/mount-efs.sh通过 SSH 连接到您的实例时手动执行脚本并检查它是否返回任何错误。最有可能的问题出在这行中,它无法将 /mnt/efs 目录挂载到 EFS:
mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 $EFS_NAME:/ /mnt/efs || true