使用Docker Compose 在 AWS EC2 上构建 WordPress 环境的步骤
首先
正如标题所示,这是使用Docker Compose构建WordPress环境的步骤。
虽然有很多关于搭建WordPress环境的文章都是租用托管服务器的,但我认为在云服务器上自己搭建环境也是完全可行的。
EC2和GCE都有免费套餐,所以非常划算。
复杂的步骤可能是个问题,但如果使用Docker,就可以轻松完成这样的搭建。
创建 EC2 实例
AMI选择为“Ubuntu Server 18.04 LTS”。
如果实例属于免费套餐,则推荐选择t2.micro;如果没有免费套餐,则推荐选择t3.micro。
需要注意的是,EC2的nano实例只有0.5GB内存,可能会出现内存不足的情况,因此至少需要1GB的内存,所以建议选择micro实例。
另外,在编辑安全组时,添加规则以允许http和https(开放端口)。
如果想要操作数据库,请使用MySQL。
请在源代码中选择”我的IP”等选项。
请务必不要设置为”0.0.0.0/0″!
那样的话,任何人都可以访问!
我曾经把它设置为”0.0.0.0/0″,结果几天后被黑客入侵并且所有数据都被删除了!哈哈
使用 SSH 登录到实例
请将111.222.333.444替换为您自己的IP地址
IP地址是实例页面中的“IPv4公共IP”部分
也请将ec2_wordpress.pem替换为您自己的pem文件名
chmod 600 ~/.ssh/ec2_wordpress.pem
ssh ubuntu@111.222.333.444 -i ~/.ssh/ec2_wordpress.pem
因该是最初,你确定要继续连接吗?(是/否)请键入“是”然后按Enter键。
最初的设置使用shell脚本。
参考:Docker Compose WordPress的快速入门(https://docs.docker.com/compose/wordpress/)
请使用 `vi init_setting.sh` 命令创建以下内容。
使用 `sh ./init_setting.sh 2>&1 | tee init_setting.log` 命令执行。
注意:您也可以逐行输入而不是使用脚本,只是为了减少手动操作。
官方版本(https://github.com/docker/compose/releases)
请注意,2.x的安装方法与其他版本不同。
#!/bin/bash
# Docker install
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
sudo apt-get install -y docker-ce
sudo docker version
## Docker Compose install
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo docker-compose --version
## Docker sudo 不要にする
sudo groupadd docker
sudo gpasswd -a $USER docker
sudo systemctl restart docker
大约2分钟结束。
为了启用,请先退出一次然后重新登录(退出)
重新登录后,docker命令将不再需要sudo。
→虽然本来是这样的,但仔细确认后似乎并不是这样的。
请在以下所有操作中以sudo su -的root用户状态执行。(2022/3/9补充)
增加利差交易区域
虽然原样的话也能够启动,但是t2.micro实例的MySQL容量非常紧张,有时会因为内存不足而崩溃。我们可以通过增加交换空间来解决这个问题。
free
dd if=/dev/zero of=/swapfile1 bs=1M count=512
chmod 600 /swapfile1
mkswap /swapfile1
swapon /swapfile1
free
参考:由于WordPress服务器内存不足导致崩溃,为了应急处理,添加了SWAP空间。
使用WordPress建立网站
mkdir my_wordpress
cd my_wordpress/
创建uploads.ini
mkdir my_wordpress
cd my_wordpress/
为了避免默认情况下,使用主题的新注册的ZIP上传会导致超过2MB的错误,将以下内容保存在vi uploads.ini中。
file_uploads = On
memory_limit = 64M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 600
参考:https://github.com/docker-library/wordpress/issues/10
请参考此链接:https://github.com/docker-library/wordpress/issues/10
创建一个docker-compose.yml文件
请在 `docker-compose.yml` 中保存以下内容。
这是根据官方的快速入门 (https://docs.docker.com/compose/wordpress) 对以下三个项目进行了更改的版本。
- 重新启动:删除”always”行
将端口从 8000 修改为 80
添加卷
尽管可以按照原样执行,但建议进行密码等的更改
version: '3.3'
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
ports:
- "3306:3306"
wordpress:
depends_on:
- db
image: wordpress:latest
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
ports:
- "80:80"
- '443:443'
volumes:
- ./uploads.ini:/usr/local/etc/php/conf.d/uploads.ini
volumes:
db_data: {}
由于公式中没有以下命令,但若不执行此命令将会导致错误,请执行以下命令:
sudo rm -rf ~/dev/dbs-data/mysql/*
(参考:https://github.com/docker-library/mysql/issues/275)
最后执行docker-compose。
docker-compose up -d
docker ps -a
等待大约1分钟后,您可以从浏览器中访问http://111.222.333.444,应该可以打开WordPress的首页。
请注意,111.222.333.444应替换为您自己的IP地址。
如果遇到任何错误,请留下评论或编辑请求~
顺带一提,获取固定IP地址和将域名绑定到此IP的方法可以参考以下文章。仅供参考
设置弹性IP地址和从Route 53分配自定义域名的方法在下面的文章中很清晰明了。
那么,再见。
2020年11月20日 追加说明
大约过了一年,我的磁盘容量就已经满了。根据下面的文章进行了处理后问题得到了解决。
# 容量確認
sudo du -h -d 1 /usr/src/
# 不要ファイル削除
sudo apt autoremove -f
参考:处理Ubuntu旧内核占用磁盘空间的方法