使用Fargate构建WordPress,直到WordPress显示出来 ①
首先
由于在构建标题时遇到了困难,因此我将总结使用ECS(Fargate)容器服务构建WordPress的以下图示步骤。
S3用于将WordPress中保存的图片保存到S3上。
如果ECS停止使用,保存的媒体文件将被删除,
因此可以使用WordPress插件WP Offload Media Lite for Amazon S3进行保存。
完成建筑图
准备前的工作
对于以下内容,只需要一种中文本地化的解释:
流动或流淌中
-
- ALBを設置
-
- Route53を作成
-
- Dockerfileを作成
-
- ECRを作成
-
- クラスターを作成
-
- タスク定義を作成
-
- サービスの作成
-
- ↑今回の記事はここまで
ACM証明書を作成
ELBに証明書を設置
証明書を設置したCloudFrontを作成
Route53でCloudFrontへのルーティング設定
S3を作成し、Wordpressのプラグインで連携
CloudFrontで画像等のキャッシュ設定
キャッシュの確認
在中国设立ALB
创建目标群体
健康检查路径已设置为/wp-admin/install.php。
原因是WordPress的初始页面会变成URL:alb.xxxx.work/wp-admin/install.php。
如果健康检查路径为/,则会被标记为不健康并报错。
请在下面的待定事项中创建目标群体,不需要点击。
返回Road Planner的创建界面,并在其他方面选择默认选项进行创建。
ALB 的听众确认
创建专为Fargate使用的安全组。
修改RDS的安全组
创建 Route53
创建 Route53。
– 域名:xxxx.work
– 类型:公共主托管区
修改域名服务器信息的方法:使用お名前.com
音樂錄音的設置
使用Route53将自定义域名和ALB的DNS名称关联。
创建主机区xxxx.work的记录
– 记录名称:<空白>
– 记录类型:A
– 别名:选择
– 流量路由目标:ALB,东京区域,选择先前创建的ALB
– 路由策略:简单路由
创建一个Dockerfile。
创建目录,并创建Dockerfile。
$ mkdir docker-wordpress
$ cd docker-wordpress
$ touch Dockerfile
FROM wordpress:5.8.1-php7.4-apache
RUN set -ex; \
apt-get update && apt-get install -y \
wget \
unzip \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
# /usr/src/wordpress/wp-content/plugin にプラグインを置いておくと、ビルド時、ドキュメントルートに設置する
WORKDIR /usr/src/wordpress/wp-content/plugins
# プラグイン[WP Offload Media Lite for Amazon S3]をインストール
RUN set -ex; \
wget -q -O amazon-s3-and-cloudfront.zip https://downloads.wordpress.org/plugin/amazon-s3-and-cloudfront.1.4.3.zip \
&& unzip -q -o '*.zip' -d /usr/src/wordpress/wp-content/plugins \
&& chown -R www-data:www-data /usr/src/wordpress/wp-content/plugins \
&& rm -f '*.zip'
# 所有者の変更
RUN chown -R www-data:www-data /var/www/html
WORKDIR /var/www/html
让我们各自安装所需的插件。
如果想要在Dockerfile中添加主题或其他内容。
如果您想要添加或修改自己的主题或php.ini文件,可以在Dockerfile中添加以下内容,并建议按照以下目录结构进行设置。
这只是一个例子。
FROM wordpress:5.8.1-php7.4-apache
RUN set -ex; \
apt-get update && apt-get install -y \
wget \
unzip \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
# /usr/src/wordpress/wp-content/plugin にプラグインを置いておくと、ビルド時、ドキュメントルートに設置する
WORKDIR /usr/src/wordpress/wp-content/plugins
# プラグイン[WP Offload Media Lite for Amazon S3]をインストール
RUN set -ex; \
wget -q -O amazon-s3-and-cloudfront.zip https://downloads.wordpress.org/plugin/amazon-s3-and-cloudfront.1.4.3.zip \
&& unzip -q -o '*.zip' -d /usr/src/wordpress/wp-content/plugins \
&& chown -R www-data:www-data /usr/src/wordpress/wp-content/plugins \
&& rm -f *.zip
# 所有者の変更
RUN chown -R www-data:www-data /var/www/html
+ COPY html /var/www/html
+ COPY .htaccess /var/www/html
+ COPY php.ini /usr/local/etc/php/conf.d
+ COPY security.conf /etc/apache2/conf-available
WORKDIR /var/www/html
本地目录结构是一个示例。只添加需要修正的文件和目录。不需要修改的文件和目录将保留原样,完全匹配wordpress:5.8.1-php7.4-apache。
.
├── Dockerfile
├── security.conf
├── .htaccess
├── html
│ ├── wp-config.php
│ └── wp-content
│ └── themes
│ └── themesの中身
└── php.ini
仓库和容器内的目录结构
如果没有特别指定,它将被安置在容器中的 /var/www/html 目录下。
HTML:/var/www/html
存储WordPress修复文件(文件夹结构遵循WordPress结构)。
wp-config.php使用的是这个源代码。
.htaccess文件是用于基于目录控制Web服务器的基本操作的。
php.ini:/usr/local/etc/php/php.ini是php的設定檔案。
安全.conf:/etc/apache2/conf-available/security.conf
apache的安全配置文件
您可以从以下链接下载最新的WordPress源代码。
只需要将wp-config.php文件配置为适用于Docker,并使用以下文件。
https://github.com/docker-library/wordpress/blob/master/latest/php8.1/apache/wp-config-docker.php
如果需要作曲家
如果在使用aws-sdk等时需要composer,可以按照以下方式来使用composer并使用sdk。
FROM wordpress:5.8.1-php7.4-apache
RUN set -ex; \
apt-get update && apt-get install -y \
wget \
unzip \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
# /usr/src/wordpress/wp-content/plugin にプラグインを置いておくと、ビルド時、ドキュメントルートに設置する
WORKDIR /usr/src/wordpress/wp-content/plugins
# プラグイン[WP Offload Media Lite for Amazon S3]をインストール
RUN set -ex; \
wget -q -O amazon-s3-and-cloudfront.zip https://downloads.wordpress.org/plugin/amazon-s3-and-cloudfront.1.4.3.zip \
&& unzip -q -o '*.zip' -d /usr/src/wordpress/wp-content/plugins \
&& chown -R www-data:www-data /usr/src/wordpress/wp-content/plugins \
&& rm -f '*.zip'
# 所有者の変更
RUN chown -R www-data:www-data /var/www/html
COPY html /var/www/html
COPY .htaccess /var/www/html
COPY php.ini /usr/local/etc/php/conf.d
COPY security.conf /etc/apache2/conf-available
+ ENV COMPOSER_ALLOW_SUPERUSER=1 \
+ COMPOSER_HOME=/composer
+ COPY --from=composer:2.2 /usr/bin/composer /usr/bin/composer
WORKDIR /var/www/html
+ RUN composer config -g process-timeout 3600 \
+ && composer config -g repos.packagist composer https://packagist.org \
+ && composer require aws/aws-sdk-php
创建IAM用户
在推送 Docker 镜像到 ECR 时,使用 CLI 命令行工具,所以请提前创建 IAM 用户并颁发访问密钥。
将 IAM 策略附加到 EC2InstanceProfileForImageBuilderECRContainerBuilds。
使用aws configure –profile命令设置访问密钥和机密密钥。
$ aws configure --profile fargate-wordpress
AWS Access Key ID [None]: ****************DMH2
AWS Secret Access Key [None]: ****************bHBU
Default region name [None]: ap-northeast-1
Default output format [None]:
// aws cli プロフィール変更
$ export AWS_DEFAULT_PROFILE=fargate-wordpress
在本地完成了CLI的设置。
创建ECR
在AWS的ECS控制台页面上,点击ECR的存储库。
创建存储库。
– 可见性设置:私有
– 存储库名称:wordpress(与docker-compose.yml中指定的镜像名称相同)
– 其他保持默认设置。
$ cd docker-wordpress
$ aws ecr get-login-password --region ap-northeast-1 | docker login --username AWS --password-stdin [アカウントエイリアス12桁].dkr.ecr.ap-northeast-1.amazonaws.com
Login Succeeded
我成功登录了。
如果登录失败,请确认IAM用户的访问密钥ID和秘密访问密钥是否与以下信息匹配。
如果不匹配,请新建IAM用户访问密钥,然后修改“~/.aws/credentials“和“~/.aws/config“文件。
// profileの確認
$ cat ~/.aws/credentials
$ cat ~/.aws/config
// profileの確認
$ aws configure --profile fargate-wordpress
AWS Access Key ID [None]: ****************DMH2
AWS Secret Access Key [None]: ****************bHBU
Default region name [None]: ap-northeast-1
Default output format [None]:
// aws cli プロフィール変更
$ export AWS_DEFAULT_PROFILE=fargate-wordpress
继续执行推送命令。
$ docker build -t wordpress .
$ docker tag wordpress:latest [アカウントエイリアス12桁].dkr.ecr.ap-northeast-1.amazonaws.com/wordpress:latest
$ docker push [アカウントエイリアス12桁].dkr.ecr.ap-northeast-1.amazonaws.com/wordpress:latest
创建集群
在ECS的控制台界面上,点击创建集群。
请填写集群名称并创建。
让我们启用CloudWatch容器洞察。
创建任务定义
他会以默认设置创建任务定义。
创建服务
-
- 起動タイプ:FARGATE
タスク定義 ファミリー:wordpress-definition
タスク定義 リビジョン:1(latest)
プラットフォームのバージョン:1.4.0
クラスター:wordpress
サービス名:wordpress-service
タスク数の数:1
如果您要创建一个全新的目标群体,请按照以下设置进行操作。
当使用ELB对Fargate任务进行访问时,将通过端口80进行访问,并连接到任务内的Nginx上的端口80。
下一步是没有自动扩展的。
服务已经创建好了!
当访问URLhttp://xxxx.work时,出现了WordPress!
请务必选择语言后再进行下一步!安装WordPress后,URL将保存在http://.xxxx.work中的RDS上。
最终目标是,在访问URL:https://xxxx.work并进行语言设置后,安装WordPress。
如果没有显示,请尝试查看由Fargate产生并输出到CloudWatchLogs中的日志。
错误1 (Quotation mark necessary if it is a specific error code)
GET / HTTP/1.1" 302 362 "-" "ELB-HealthChecker/2.0"
这个负载均衡器的健康检查状态为不健康。
请重新确认elb、Fargate的安全组、ALB的目标组和Route53的设置。
如果您在お名前ドットコム上设置了域名服务器,可能需要相当长的时间才能生效。您可以等待一天尝试一下。
另外,还需要确认健康检查路径是否设置为/wp-admin/install.php。
错误②
MySQL Connection Error: (2002) Connection timed out
请确认Fargate与RDS的安全组是否配置正确,并检查是否已为RDS创建了WordPress的数据库,因为它们之间的连接存在问题。
终于WordPress出现了。暂时就到这里吧。
下次,我们将要做以下几件事:
– 创建CloudFront并实现HTTPS加密。
下一步,使用Fargate构建WordPress并进行HTTPS化。
Fargate和WordPress搭配使用,并与S3进行协作连接。
此外,这篇文章介绍了如何使用CodePipeline来实现ECS的滚动部署的方法。
在这篇文章中,我们介绍了Apache错误处理的方法。
请参考这篇文章。
・使用【AWS】中的ECR + ECS + RDS构建Docker环境的步骤
・通过使用Route53,在ALB+EC2的AWS环境中应用自定义域名的步骤
・将使用在お名前.com购买的域名在AWS的「Route 53」中使用的步骤
・部署WordPress的Docker镜像到ECS的步骤