k911672 / bjm-wp

0 stars 0 forks source link

AWSでwordpressを構築する #1

Open RVIRUS0817 opened 3 years ago

RVIRUS0817 commented 3 years ago

a

k911672 commented 3 years ago

初期設定

1.awsアカウント登録

以前登録したことがあったので、省略

2. IAMで個人のユーザーを作成する

IAMユーザーとは⇨AWSへのアクセス権限を人やAWS以外のサーバに付与するためのもの。

  1. IAMを検索で探し選択

    スクリーンショット 2021-06-21 22 52 45
  2. ユーザーを選択

    スクリーンショット 2021-06-21 22 53 01
  3. ユーザーを作成を選択

    スクリーンショット 2021-06-21 22 55 06
  4. ユーザーの詳細を記述

    スクリーンショット 2021-06-21 22 56 23
  5. グループを作成

    スクリーンショット 2021-06-21 22 56 28
  6. グループの詳細(権限など)を記述

    スクリーンショット 2021-06-21 22 56 53
  7. グループに権限をつけよう (設定しないとIAMでログインした時、権限ないよ!と出る)

    スクリーンショット 2021-06-25 22 18 53
  8. 次へ

    スクリーンショット 2021-06-21 22 57 04
  9. タグの追加(後ほど設定あれば)

    スクリーンショット 2021-06-21 22 57 26
  10. 最終確認

    スクリーンショット 2021-06-21 22 57 34
  11. 閉じる

    スクリーンショット 2021-06-21 22 57 54

【はじめてのAWS】管理用IAMユーザーを作成しよう AWSアカウントでのIAMユーザの作成

3. IAMのアクセス権について

IAM Access のアクティブ化

これを行わないとIAMユーザーで個人の設定ができない。

  1. rootユーザーでアカウントの管理画面へ行く

    スクリーンショット 2021-06-26 11 04 07
  2. IAMユーザー/ロールによる請求情報へのアクセスを編集

    スクリーンショット 2021-06-26 11 03 06
  3. IAM Access のアクティブ化にチェックを入れて更新

    スクリーンショット 2021-06-26 11 03 18

これによって、IAMユーザーにbiling managemant console aws へのアクセル権が得られる。

k911672 commented 3 years ago

お名前.comにRoute53のNSレコードを登録

お名前.com登録

ドメインネーム→dev-menta-aws.com  

Route53の設定

Route53とは→amazonのDNSサービス。ホスト名の登録の他にも機能がある。

  1. ホストゾーンの作成

    スクリーンショット 2021-06-26 12 09 14
  2. ドメインの登録(お名前.comで作成したドメイン)

    スクリーンショット 2021-06-26 12 10 37
  3. Route35のNSレコードをコピーしておく(後でお名前.comで使う。)

    スクリーンショット 2021-06-26 12 11 26

お名前.comにRoute53のNSレコードを登録

  1. Route53のNSレコードをお名前.comに登録する。 スクリーンショット 2021-06-26 13 44 29

EC2の設定

  1. ElasticIPアドレスの割り当て

    スクリーンショット 2021-06-26 13 52 31(2)
  2. ElasticIPの設定

    スクリーンショット 2021-06-26 13 53 23(2)
  3. ElasticIPの関連付

    スクリーンショット 2021-06-26 13 54 45(2)
  4. Route53にElasticIPを記載

    スクリーンショット 2021-06-26 13 55 22(2)
  5. IPアドレスの登録まで終了

    スクリーンショット 2021-06-26 13 56 20(2)

参考URL

k911672 commented 3 years ago

EC2のインスタンスの設定

1. aws用語の解説

EC2とは

EC2とは「Amazon Elastic Compute Cloud」の略称で、AWSで利用できるシステムのひとつとなっています。 AWS上に仮想サーバーを構築して自由に利用できるのが特徴で、クラウド環境においてさまざまな役割を担ってくれる

インスタンスとは

EC2では仮想サーバの事を「インスタンス」という単位で扱います。 インスタンスには様々な種類や性能のものがあるため、ユーザーの求める形で利用が可能です。 インスタンスを複数使って仮想サーバーを分割することで、可用性や信頼性を考慮した運用ができる。

【EC2ってなに?】初心者でもわかる簡単 AWS 用語解説

2. インスタンスの作成

  1. インスタンスを起動

    スクリーンショット 2021-06-26 15 21 46
  2. マシンイメージ(AIM)の選択 Amazon Linux2がよく使われる

    スクリーンショット 2021-06-26 15 22 30
  3. インスタンスタイプの選択

    スクリーンショット 2021-06-26 15 22 49
  4. インスタンスの詳細の設定

    スクリーンショット 2021-06-26 15 24 34
  5. ストーレージの追加

    スクリーンショット 2021-06-26 15 24 58
  6. タグの追加

    スクリーンショット 2021-06-26 15 25 48
  7. セキュリティグループの設定

    スクリーンショット 2021-06-26 15 26 49

    ※HTTPSも追加する。

  8. キーペアの作成

    スクリーンショット 2021-06-26 15 28 39
  9. インスタンスの完成

    スクリーンショット 2021-06-26 15 32 47

参考URL

AWS EC2 ハンズオン 【AWS】EC2とは?概要から使い方までざっくり解説(実践あり)

k911672 commented 3 years ago

VPCの作成(10.0.0.0/16)

用語解説

昔はABCDEのクラスで割り当てられていた。 「従業員が1万いるのであなたの会社はクラスBですね!はい65,534個のIPをあげよう!」的な感じで残りの55,534個のIPが無駄になってしますような感じ。

スクリーンショット 2021-10-02 10 25 05 スクリーンショット 2021-10-02 10 23 36

【AWS】Amazon VPCを図で分かりやすく解説(実践あり) AWS入門者向け 初心者が最初に理解すべきEC2とVPCの基本的な用語解説

VPCの作成

VPCの作成をクリック

スクリーンショット 2021-06-27 9 55 16

VPCの内容を記載

スクリーンショット 2021-06-27 10 18 59

※テナンシーとは、AWSのハードウェアを専有して利用するかどうかの設定をする項目です。専有すると料金が発生する。

ハードウェア専有は別途料金が発生します。

作成出来たか確認(Availableで完了!)

スクリーンショット 2021-06-27 10 22 37

インターネットゲートウェイの作成

ゲートウェイの作成

スクリーンショット 2021-06-27 10 55 13

ゲートウェイの名前を記入

スクリーンショット 2021-06-27 10 55 41

VPCへアタッチ

スクリーンショット 2021-06-27 10 55 50

作成したVPCのを選択して、アタッチ

スクリーンショット 2021-06-27 10 56 17

アタッチ出来たか確認

スクリーンショット 2021-06-27 10 56 36

サブネットの作成

サブネット作成

スクリーンショット 2021-06-27 11 06 30

サブネットの詳細記載(一つ目)

スクリーンショット 2021-06-27 11 16 16

二つの目のサブネット作成

スクリーンショット 2021-06-27 11 19 14

作成出来たか確認

スクリーンショット 2021-06-27 11 19 56

ルートテーブルにインターネットゲートウェイへのルートを追加

ルートテーブルの作成

スクリーンショット 2021-06-27 11 35 13

ルートの編集

スクリーンショット 2021-06-27 11 35 41

ゲートウェイを追加

スクリーンショット 2021-06-27 11 38 25

スクリーンショット 2021-06-27 11 38 38

ルートができているか確認

スクリーンショット 2021-06-27 11 40 12

スクリーンショット 2021-06-27 11 41 05
k911672 commented 3 years ago

EC2へSSH接続

作成した鍵の移動

kimuranaoki@kimuranaokinoMacBook-Pro test-aws % mv test-keypem.pem ~/.ssh/ssh-aws
kimuranaoki@kimuranaokinoMacBook-Pro ~ % cd ~/.ssh/ssh-aws

権限の付与

kimuranaoki@kimuranaokinoMacBook-Pro ssh-aws % chmod 400 test-keypem.pem 

ssh接続

kimuranaoki@kimuranaokinoMacBook-Pro ssh-aws % ssh -i test-keypem.pem ec2-user@13.231.255.178

       __|  __|_  )
       _|  (     /   Amazon Linux 2 AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-2/

configに設定

HostNameの宛先の記載場所

スクリーンショット 2021-06-27 22 20 35

スクリーンショット 2021-06-27 22 20 39
kimuranaoki@kimuranaokinoMacBook-Pro .ssh % cat config 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Host dev-aws
  HostName ec2-13-231-255-178.ap-northeast-1.compute.amazonaws.com
  User ec2-user
  IdentityFile ~/.ssh/ssh-aws/test-keypem.pem
kimuranaoki@kimuranaokinoMacBook-Pro .ssh % ssh dev-aws

       __|  __|_  )
       _|  (     /   Amazon Linux 2 AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-2/
[ec2-user@ip-172-31-42-99 ~]$ 
k911672 commented 3 years ago

nginxインストール

nginxインストール

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[ec2-user@ip-172-31-42-99 ~]$ sudo amazon-linux-extras install nginx1
Installing nginx
読み込んだプラグイン:extras_suggestions, langpacks, priorities, update-motd
リポジトリーを清掃しています: amzn2-core amzn2extra-docker amzn2extra-nginx1
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 59  postgresql13             available    [ =stable ]
 60  mock2                    available    [ =stable ]

既存ファイルのバックアップ

[ec2-user@ip-172-31-42-99 ~]$ sudo cp -a /etc/nginx/nginx.conf /etc/nginx/nginx.conf.back

nginxの起動

[ec2-user@ip-172-31-42-99 ~]$ sudo systemctl start nginx
[ec2-user@ip-172-31-42-99 ~]$ sudo systemctl enable nginx
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.

nginxの起動の確認

[ec2-user@ip-172-31-42-99 ~]$ systemctl status nginx
● nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
   Active: active (running) since 火 2021-06-29 10:24:00 UTC; 15s ago
 Main PID: 19740 (nginx)
   CGroup: /system.slice/nginx.service
           ├─19740 nginx: master process /usr/sbin/nginx
           └─19741 nginx: worker process

 6月 29 10:24:00 ip-172-31-42-99.ap-northeast-1.compute.internal systemd[1]: ...
 6月 29 10:24:00 ip-172-31-42-99.ap-northeast-1.compute.internal nginx[19734]: ...
 6月 29 10:24:00 ip-172-31-42-99.ap-northeast-1.compute.internal nginx[19734]: ...
 6月 29 10:24:00 ip-172-31-42-99.ap-northeast-1.compute.internal systemd[1]: ...
Hint: Some lines were ellipsized, use -l to show in full.
[ec2-user@ip-172-31-42-99 ~]$ 

AWS EC2にNginxをインストールする

k911672 commented 3 years ago

ALBの作成

用語の解説

AWS ELBはAWS Elastic Load Balancingの略で、ほかのサービスへのトラフィックを、仮想サーバーなどの、複数のターゲットに自動的に分散し、安定稼働をサポートするサービスです。複数のサーバーへの負荷を均一化し、障害に対する耐性を高めます。 →負荷を分散させる機能である。 ロードバランサーは3種ありALBもその一つ。詳しくは下記URL

Webサービスの安定稼働に欠かせないAWS ELBの基礎知識

ALB作成

エラー!!!

→おそらくEC2の設定で不備があったものだと考えらる。

k911672 commented 3 years ago

EC2の再度作成

ALBのエラー箇所の原因はEC2とVPCの紐付けができていなかったから!

k911672 commented 3 years ago

再度鍵の設定

k911672 commented 3 years ago

ALBの設定再度

ブラウザにアクセスできるか確認

→設定がうまくいっていれば、DNS名をURLに記入し、アクセスができる。

おそらく新しくインスタンスを立てたので、nginxが設定されていないのが原因だと考えれる。 次はその設定から行う!!!!!!!!!!

k911672 commented 3 years ago

EC2の鍵の設定等、EC2のパブリックIDの設定

kimuranaoki@kimuranaokinoMacBook-Pro ~ % mv test-aws2.pem .ssh/ssh-aws 
kimuranaoki@kimuranaokinoMacBook-Pro ~ % cd .ssh
kimuranaoki@kimuranaokinoMacBook-Pro .ssh % vim config 
kimuranaoki@kimuranaokinoMacBook-Pro .ssh % cat config 
Host dev-zabbix
  HostName 192.168.33.10
  User zabbix
  Port 22
  IdentityFile ~/.ssh/dev-zabbix

Host dev-wordpress
  HostName 192.168.33.15
  User menta
  Port 22
  IdentityFile ~/.ssh/ssh-wordpress/dev-wordpress

Host github github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/ssh-git/dev-git

Host dev-aws
  HostName ec2-13-231-255-178.ap-northeast-1.compute.amazonaws.com
  User ec2-user
  IdentityFile ~/.ssh/ssh-aws/test-keypem.pem

Host dev-aws2
  HostName 
  User ec2-user
  IdentityFile ~/.ssh/ssh-aws/test-aws2.pem
kimuranaoki@kimuranaokinoMacBook-Pro .ssh % 

Host dev-aws2のHostName を選択するために、作成したEC2のインスタンスを確認する。

スクリーンショット 2021-06-30 22 32 01

↓ 確認できない

スクリーンショット 2021-06-30 22 32 08

エラー!!!!!!!! 下記より原因箇所を一つずつ解決していく。

パブリック IPv4 DNSの表示について

Elastip IPアドレスの関連付け

EC2 Instance Connectの表示

スクリーンショット 2021-07-01 22 03 32(2)

これをやってしまうと、 後から修正できないので、初めから作成になってしまう…

EC2作り直し

今回の修正を全て網羅したインスタンスの作成

上記の修正を全て加え、新たにnaoki-instanceを作成

スクリーンショット 2021-07-01 22 38 03(2)

鍵の設定

kimuranaoki@kimuranaokinoMacBook-Pro ~ % mv naoki-aws.pem .ssh/ssh-aws 
kimuranaoki@kimuranaokinoMacBook-Pro ~ % cd .ssh/ssh-aws 
kimuranaoki@kimuranaokinoMacBook-Pro ssh-aws % ls
naoki-aws.pem   test-keypem.pem
kimuranaoki@kimuranaokinoMacBook-Pro ssh-aws % chmod 400 naoki-aws.pem 
kimuranaoki@kimuranaokinoMacBook-Pro ssh-aws % cd ..
kimuranaoki@kimuranaokinoMacBook-Pro .ssh % vim config 
kimuranaoki@kimuranaokinoMacBook-Pro .ssh % cat config       
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Host dev-naoki-aws
  HostName ec2-35-75-167-95.ap-northeast-1.compute.amazonaws.com 
  User ec2-user
  IdentityFile ~/.ssh/ssh-aws/naoki-aws.pem

https://aws.amazon.com/amazon-linux-2/ [ec2-user@ip-10-0-1-62 ~]$ exit

k911672 commented 3 years ago

そもそもALBのブラウザ表示失敗からの設定

ALBを再度作り直し

作成途中割愛 naoki-instanceを選択し、naoki-api-albという名前で作成

スクリーンショット 2021-07-01 22 58 07(2)
k911672 commented 3 years ago

nginxインストール

nginxインストール

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[ec2-user@ip-172-31-42-99 ~]$ sudo amazon-linux-extras install nginx1
Installing nginx
読み込んだプラグイン:extras_suggestions, langpacks, priorities, update-motd
リポジトリーを清掃しています: amzn2-core amzn2extra-docker amzn2extra-nginx1
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 59  postgresql13             available    [ =stable ]
 60  mock2                    available    [ =stable ]

既存ファイルのバックアップ

[ec2-user@ip-172-31-42-99 ~]$ sudo cp -a /etc/nginx/nginx.conf /etc/nginx/nginx.conf.back

nginxの起動

[ec2-user@ip-172-31-42-99 ~]$ sudo systemctl start nginx
[ec2-user@ip-172-31-42-99 ~]$ sudo systemctl enable nginx
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.

nginxの起動の確認

[ec2-user@ip-10-0-1-62 ~]$ systemctl status nginx
● nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
   Active: active (running) since 木 2021-07-01 14:09:27 UTC; 15s ago
 Main PID: 3541 (nginx)
   CGroup: /system.slice/nginx.service
           ├─3541 nginx: master process /usr/sbin/nginx
           └─3542 nginx: worker process

 7月 01 14:09:27 ip-10-0-1-62.ap-northeast-1.compute.internal systemd[1]: St...
 7月 01 14:09:27 ip-10-0-1-62.ap-northeast-1.compute.internal nginx[3536]: n...
 7月 01 14:09:27 ip-10-0-1-62.ap-northeast-1.compute.internal nginx[3536]: n...
 7月 01 14:09:27 ip-10-0-1-62.ap-northeast-1.compute.internal systemd[1]: St...
Hint: Some lines were ellipsized, use -l to show in full.

ブラウザに接続!

スクリーンショット 2021-07-01 23 11 37(2)

接続完了!!

AWS EC2にNginxをインストールする

k911672 commented 3 years ago

RDSの作成

用語

AWSのデータベースAmazon RDSとは?

サブネットグループの作成

パラメーターグループの作成

データベース作成

EC2の設定にMySQLの情報を追加

k911672 commented 3 years ago

wordpressの設定(ユーザー設定/鍵設定)

yum update

[root@ip-10-0-1-62 ~]# yum -y update
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
amzn2-core                                               | 3.7 kB     00:00     
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Complete!
[root@ip-10-0-1-62 ~]# 

必要コマンドのインストール

→awsではインストール済みなので、しなくていい。

[root@ip-10-0-1-62 ~]# yum -y install vim wget
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
Package 2:vim-enhanced-8.1.1602-1.amzn2.x86_64 already installed and latest version
Package wget-1.14-18.amzn2.1.x86_64 already installed and latest version
Nothing to do

kimuraユーザーの追加

[ec2-user@ip-10-0-1-62 ~]$ sudo su -
[root@ip-10-0-1-62 ~]# useradd kimura
[root@ip-10-0-1-62 ~]# grep kimura /etc/passwd
kimura:x:1001:1001::/home/kimura:/bin/bash
[root@ip-10-0-1-62 ~]# passwd kimura
Changing password for user kimura.
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.

kimuraユーザーでsudoをno passでrootに切り替えられるように設定

111行目を以下のように追加

    109 ## Same thing without a password
    110 # %wheel        ALL=(ALL)       NOPASSWD: ALL
    111  %kimura      ALL=(ALL)       NOPASSWD: ALL

鍵の設定

kimuranaoki@kimuranaokinoMacBook-Pro .ssh % vim config
kimuranaoki@kimuranaokinoMacBook-Pro .ssh % cat config 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Host dev-kimura-aws
  HostName  35.75.167.95 
  User kimura
  IdentityFile ~/.ssh/ssh-aws/dev-kimura-aws

https://aws.amazon.com/amazon-linux-2/

k911672 commented 3 years ago

wordpressの設定(nginxの設定/phpのインストール)

aws内のhostsの設定

[root@ip-10-0-1-62 html]# vim /etc/hosts
[root@ip-10-0-1-62 html]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost6 localhost6.localdomain6
35.75.167.95 dev.kimura.aws

nginxの設定

[root@ip-10-0-1-62 ~]# vim /etc/nginx/conf.d/default.conf
[root@ip-10-0-1-62 ~]# cat /etc/nginx/conf.d/default.conf
server {
    listen       80;
    server_name  dev.kimura.aws;
    root /var/www/html/;
    charset UTF-8;
    access_log  /var/log/nginx/sample.com.access.log  main;
    error_log /var/log/nginx/sample.com.error.log;

    location / {
        index  index.php index.html index.htm;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    location ~ \.php$ {
        fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

phpのインストール

php-fpmの設定

user = nginx group = nginx

listen = /var/run/php-fpm/php-fpm.sock listen.owner = nginx listen.group = nginx listen.allowed_clients = 127.0.0.1

pm = static pm.max_children = 10 pm.start_servers = 50 pm.min_spare_servers = 50 pm.max_spare_servers = 35 pm.process_idle_timeout = 10s; pm.max_requests = 100 php_admin_value[memory_limit] = 256M

slowlog = /var/log/php-fpm/www-slow.log request_slowlog_timeout = 0 request_terminate_timeout = 180

php_admin_value[error_log] = /var/log/php-fpm/www-error.log php_admin_flag[log_errors] = on php_value[session.save_handler] = files php_value[session.save_path] = /var/lib/php/session php_value[soap.wsdl_cache_dir] = /var/lib/php/wsdlcache

- php-fpm起動

[root@ip-10-0-1-62 nginx]# systemctl start php-fpm [root@ip-10-0-1-62 nginx]# systemctl status php-fpm ● php-fpm.service - The PHP FastCGI Process Manager Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled; vendor preset: disabled) Active: active (running) since Sun 2021-07-04 01:32:16 UTC; 28s ago Main PID: 19160 (php-fpm) Status: "Processes active: 0, idle: 10, Requests: 2, slow: 0, Traffic: 0.1req/sec" CGroup: /system.slice/php-fpm.service ├─19160 php-fpm: master process (/etc/php-fpm.conf) ├─19161 php-fpm: pool www ├─19162 php-fpm: pool www ├─19163 php-fpm: pool www ├─19164 php-fpm: pool www ├─19165 php-fpm: pool www ├─19166 php-fpm: pool www ├─19167 php-fpm: pool www ├─19168 php-fpm: pool www ├─19169 php-fpm: pool www └─19170 php-fpm: pool www

Jul 04 01:32:16 ip-10-0-1-62.ap-northeast-1.compute.internal systemd[1]: Star... Jul 04 01:32:16 ip-10-0-1-62.ap-northeast-1.compute.internal systemd[1]: Star... Hint: Some lines were ellipsized, use -l to show in full. [root@ip-10-0-1-62 nginx]# systemctl enable php-fpm Created symlink from /etc/systemd/system/multi-user.target.wants/php-fpm.service to /usr/lib/systemd/system/php-fpm.service.


### nginxでphpをブラウザ表示

[root@ip-10-0-1-62 html]# vim index.php [root@ip-10-0-1-62 html]# cat index.php <?php echo "hello php7.2"; ?> root@ip-10-0-1-62 nginx]# systemctl restart php-fpm [root@ip-10-0-1-62 html]# systemctl restart nginx



### 確認
<img width="1440" alt="スクリーンショット 2021-07-04 10 40 37" src="https://user-images.githubusercontent.com/65452992/124370590-5ac4c100-dcb4-11eb-82e8-f8dc3436f0a0.png">

成功!
k911672 commented 3 years ago

wordpressの設定(wordpressインストール)

wordprssインストール

[root@ip-10-0-1-62 ~]# cd /var/www/html/
[root@ip-10-0-1-62 html]# wget https://ja.wordpress.org/latest-ja.tar.gz
--2021-07-04 01:54:16--  https://ja.wordpress.org/latest-ja.tar.gz
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2021-07-04 01:54:20 (6.34 MB/s) - ‘latest-ja.tar.gz’ saved [16459893/16459893]

[root@ip-10-0-1-62 html]# tar xfz latest-ja.tar.gz
[root@ip-10-0-1-62 html]# chown -R nginx. wordpress
[root@ip-10-0-1-62 html]# vim /etc/nginx/conf.d/default.conf
server {
    listen       80;
    server_name  dev.kimura.aws;
    root /var/www/html/wordpress;
    charset UTF-8;
    access_log  /var/log/nginx/sample.com.access.log  main;
    error_log /var/log/nginx/sample.com.error.log;

    location / {
        index  index.php index.html index.htm;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    location ~ \.php$ {
        fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}
[root@ip-10-0-1-62 html]# chown -R nginx:nginx /var/www/html/wordpress
[root@ip-10-0-1-62 html]# systemctl restart nginx
[root@ip-10-0-1-62 html]# systemctl restart php-fpm

確認

スクリーンショット 2021-07-04 11 00 51

成功!

k911672 commented 3 years ago

mysqlの設定

[root@ip-10-0-1-62 ~]# yum localinstall http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Complete!
[root@ip-10-0-1-62 ~]# yum -y install mysql-community-server
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Complete!
[root@ip-10-0-1-62 ~]# mysqld --version
mysqld  Ver 5.7.34 for Linux on x86_64 (MySQL Community Server (GPL))
[root@ip-10-0-1-62 ~]# systemctl start mysqld
[root@ip-10-0-1-62 ~]# systemctl enable mysqld
[root@ip-10-0-1-62 ~]# systemctl status mysqld
● mysqld.service - MySQL Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: active (running) since Sun 2021-07-04 02:28:26 UTC; 30s ago
     Docs: man:mysqld(8)
           http://dev.mysql.com/doc/refman/en/using-systemd.html
 Main PID: 19884 (mysqld)
   CGroup: /system.slice/mysqld.service
           └─19884 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/my...

Jul 04 02:28:22 ip-10-0-1-62.ap-northeast-1.compute.internal systemd[1]: Star...
Jul 04 02:28:26 ip-10-0-1-62.ap-northeast-1.compute.internal systemd[1]: Star...
Hint: Some lines were ellipsized, use -l to show in full.
[root@ip-10-0-1-62 ~]# cat /var/log/mysqld.log | grep password
2021-07-04T02:28:24.401226Z 1 [Note] A temporary password is generated for root@localhost: ckM5vqA)ia>k
[root@ip-10-0-1-62 ~]# mysql_secure_installation

Securing the MySQL server deployment.

Enter password for user root: 
Error: Access denied for user 'root'@'localhost' (using password: YES)
[root@ip-10-0-1-62 ~]# mysql_secure_installation

Securing the MySQL server deployment.

Enter password for user root: 

The existing password for the user account root has expired. Please set a new password.

New password: 

Re-enter new password: 
The 'validate_password' plugin is installed on the server.
The subsequent steps will run with the existing configuration
of the plugin.
Using existing password for root.

Estimated strength of the password: 100 
Change the password for root ? ((Press y|Y for Yes, any other key for No) : y

New password: 

Re-enter new password: 

Estimated strength of the password: 100 
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Success.

Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Success.

By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.

Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
 - Dropping test database...
Success.

 - Removing privileges on test database...
Success.

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Success.

All done! 
k911672 commented 3 years ago

EC2とRDSの接続

エンドポイントは下記で確認(mysql -u naoki -p -h エンドポイント)パスワードは11922960kim

スクリーンショット 2021-07-04 11 41 39
[root@ip-10-0-1-62 ~]# mysql -u naoki -p -h naoki-db-test.calebo4kouz5.ap-northeast-1.rds.amazonaws.com
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 240
Server version: 5.7.33-log Source distribution

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 
k911672 commented 3 years ago

mysql内でのwordpressの設定

テーブル作成

mysql> CREATE DATABASE wordpress;
Query OK, 1 row affected (0.01 sec)

mysql> CREATE USER 'wordpress'@'localhost' IDENTIFIED BY '11922960kim';
Query OK, 0 rows affected (0.01 sec)

mysql> GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress'@'localhost';
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.02 sec)

mysql> 
mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| innodb             |
| mysql              |
| naokidb57          |
| performance_schema |
| sys                |
| wordpress          |
+--------------------+
7 rows in set (0.00 sec)

mysql> SELECT host, user FROM mysql.user;
+-----------+---------------+
| host      | user          |
+-----------+---------------+
| %         | naoki         |
| localhost | mysql.session |
| localhost | mysql.sys     |
| localhost | rdsadmin      |
| localhost | wordpress     |
+-----------+---------------+
5 rows in set (0.00 sec)

mysql> \q
Bye

wordpressとデータベースの接続

[root@ip-10-0-1-62 wordpress]# cp wp-config-sample.php wp-config.php
[root@ip-10-0-1-62 wordpress]# vim wp-config.php
[root@ip-10-0-1-62 wordpress]# systemctl restart nginx
[root@ip-10-0-1-62 wordpress]# systemctl restart mysqld
[root@ip-10-0-1-62 wordpress]# systemctl restart php-fpm
[root@ip-10-0-1-62 wordpress]# cat wp-config.php
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

// ** MySQL 設定 - この情報はホスティング先から入手してください。 ** //
/** WordPress のためのデータベース名 */
define( 'DB_NAME', 'wordpress' );

/** MySQL データベースのユーザー名 */
define( 'DB_USER', 'naoki' );

/** MySQL データベースのパスワード */
define( 'DB_PASSWORD', '11922960kim' );

/** MySQL のホスト名 */
define( 'DB_HOST', 'naoki-db-test.calebo4kouz5.ap-northeast-1.rds.amazonaws.com' );

/** データベースのテーブルを作成する際のデータベースの文字セット */
define( 'DB_CHARSET', 'utf8' );

/** データベースの照合順序 (ほとんどの場合変更する必要はありません) */
define( 'DB_COLLATE', '' );

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

vagrantと違うところは、ホスト名をRDSのエンドポイントにする必要があるところ!!

k911672 commented 3 years ago

httpsでの接続

俺俺証明書の発行

[kimura@ip-10-0-1-62 ssl]$ sudo su -
最終ログイン: 2021/07/04 (日) 07:33:32 UTC日時 pts/3
[root@ip-10-0-1-62 ~]# cd /etc/ssl
[root@ip-10-0-1-62 ssl]# openssl genrsa 2048 > server.key
Generating RSA private key, 2048 bit long modulus
...............................................+++
........................................................+++
e is 65537 (0x10001)
[root@ip-10-0-1-62 ssl]# openssl req -new -key server.key > server.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:JP
State or Province Name (full name) []:Tokyo
Locality Name (eg, city) [Default City]:Nakanoku
Organization Name (eg, company) [Default Company Ltd]:Seiren
Organizational Unit Name (eg, section) []:Sales
Common Name (eg, your name or your server's hostname) []:
Email Address []:k911672@gmail.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
[root@ip-10-0-1-62 ssl]# openssl x509 -days 3650 -req -signkey server.key < server.csr > server.crt
Signature ok
subject=/C=JP/ST=Tokyo/L=Nakanoku/O=Seiren/OU=Sales/emailAddress=k911672@gmail.com
Getting Private key
[root@ip-10-0-1-62 ssl]# ls
certs  server.crt  server.csr  server.key
[root@ip-10-0-1-62 ssl]# cat server.cst
cat: server.cst: No such file or directory
[root@ip-10-0-1-62 ssl]# cat server.crt
-----BEGIN CERTIFICATE-----
MIIDYjCCAkoCCQD4+IKuI3jReTANBgkqhkiG9w0BAQsFADBzMQswCQYDVQQGEwJK
UDEOMAwGA1UECAwFVG9reW8xETAPBgNVBAcMCE5ha2Fub2t1MQ8wDQYDVQQKDAZT
ZWlyZW4xDjAMBgNVBAsMBVNhbGVzMSAwHgYJKoZIhvcNAQkBFhFrOTExNjcyQGdt
YWlsLmNvbTAeFw0yMTA3MDQwODAyNTNaFw0zMTA3MDIwODAyNTNaMHMxCzAJBgNV
BAYTAkpQMQ4wDAYDVQQIDAVUb2t5bzERMA8GA1UEBwwITmFrYW5va3UxDzANBgNV
BAoMBlNlaXJlbjEOMAwGA1UECwwFU2FsZXMxIDAeBgkqhkiG9w0BCQEWEWs5MTE2
NzJAZ21haWwuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvwBE
apj+DNbereqWPFCvIHpZrb1TOzlU2fpsxAigHIeE/vitxgik5L1XLpqsQOXOI4tc
Ef1kaomyKP4BfLv6S+XGLuLnYiBpIGySHi+xRMqAXfB/p3uUUDlfG2d/7nsKsSpD
nHbcByH/PfadSk0bAkQR5ui5y6d5X/kEYZm8SUwamOkoDddfnraLIfea7u+s4TYk
DXcA+MX3nkFiiQnHIGgxqkutiN4IJn5QGNsB4Z46qrKQ1ZY6cNYgw3ac8vP8pueT
yw4GoVUTJKivXalCUh3pT0LH2aozKEHQ09BwdYVz7zJcAiEL26OJZ+W7qo64wMxi
RuzkOCVTCkh3wUD0LwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQAzR9qMwyCPiufv
72xOquKAzSk1SjZ9MqjJ896nIg0JbTp1GF83SFMvczKTuOTMaNWsU586fZozdn7V
M/T+lLuqfskDjm44gBXK0lt9SEthYyAD2YfuTq1jp9gze6InqDNwcdleet56QdxQ
wTlnxJpTmvSeR8tKElMkFX+792om5HRqFt7ycUNMl8LlnqgBObGjhGPgF9aN1wWK
XYVSUg283r1AL8Crpi+VvWLvZYDpYyUUKV/rauGiWAArK142DP1zGJ3VQTKUXsCE
fRaKiORrCLD0j0xDBs+AppawIpIb75klqFT28Os885Frz81Y6uYsHCKAiZ3s/hel
xdkt/dR2
-----END CERTIFICATE-----

オレオレ証明書をローカルにコピー

kimuranaoki@kimuranaokinoMacBook-Pro ~ % cd /etc/ssl
kimuranaoki@kimuranaokinoMacBook-Pro ssl % sudo mkdir wordpress-ssl
kimuranaoki@kimuranaokinoMacBook-Pro ssl % cd wordpress-ssl 
kimuranaoki@kimuranaokinoMacBook-Pro wordpress-ssl % sudo vim server.crt
kimuranaoki@kimuranaokinoMacBook-Pro wordpress-ssl % sudo cat server.crt
-----BEGIN CERTIFICATE-----
MIIDYjCCAkoCCQD4+IKuI3jReTANBgkqhkiG9w0BAQsFADBzMQswCQYDVQQGEwJK
UDEOMAwGA1UECAwFVG9reW8xETAPBgNVBAcMCE5ha2Fub2t1MQ8wDQYDVQQKDAZT
ZWlyZW4xDjAMBgNVBAsMBVNhbGVzMSAwHgYJKoZIhvcNAQkBFhFrOTExNjcyQGdt
YWlsLmNvbTAeFw0yMTA3MDQwODAyNTNaFw0zMTA3MDIwODAyNTNaMHMxCzAJBgNV
BAYTAkpQMQ4wDAYDVQQIDAVUb2t5bzERMA8GA1UEBwwITmFrYW5va3UxDzANBgNV
BAoMBlNlaXJlbjEOMAwGA1UECwwFU2FsZXMxIDAeBgkqhkiG9w0BCQEWEWs5MTE2
NzJAZ21haWwuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvwBE
apj+DNbereqWPFCvIHpZrb1TOzlU2fpsxAigHIeE/vitxgik5L1XLpqsQOXOI4tc
Ef1kaomyKP4BfLv6S+XGLuLnYiBpIGySHi+xRMqAXfB/p3uUUDlfG2d/7nsKsSpD
nHbcByH/PfadSk0bAkQR5ui5y6d5X/kEYZm8SUwamOkoDddfnraLIfea7u+s4TYk
DXcA+MX3nkFiiQnHIGgxqkutiN4IJn5QGNsB4Z46qrKQ1ZY6cNYgw3ac8vP8pueT
yw4GoVUTJKivXalCUh3pT0LH2aozKEHQ09BwdYVz7zJcAiEL26OJZ+W7qo64wMxi
RuzkOCVTCkh3wUD0LwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQAzR9qMwyCPiufv
72xOquKAzSk1SjZ9MqjJ896nIg0JbTp1GF83SFMvczKTuOTMaNWsU586fZozdn7V
M/T+lLuqfskDjm44gBXK0lt9SEthYyAD2YfuTq1jp9gze6InqDNwcdleet56QdxQ
wTlnxJpTmvSeR8tKElMkFX+792om5HRqFt7ycUNMl8LlnqgBObGjhGPgF9aN1wWK
XYVSUg283r1AL8Crpi+VvWLvZYDpYyUUKV/rauGiWAArK142DP1zGJ3VQTKUXsCE
fRaKiORrCLD0j0xDBs+AppawIpIb75klqFT28Os885Frz81Y6uYsHCKAiZ3s/hel
xdkt/dR2
-----END CERTIFICATE-----
kimuranaoki@kimuranaokinoMacBook-Pro wordpress-ssl % cp server.crt ~/aws/test-aws/ 

default.confの編集

[root@ip-10-0-1-62 conf.d]# vim default.conf 
[root@ip-10-0-1-62 conf.d]# cat default.conf 
server {
    listen       80;
    server_name dev.kimura.aws;
    return 301 https://$host$request_uri;
}

server {
    listen 443;
    server_name dev.kimura.aws;
    root /var/www/html/wordpress;
    charset UTF-8;
    access_log  /var/log/nginx/sample.com.access.log  main;
    error_log /var/log/nginx/sample.com.error.log;

    location / {
        index   index.php index.html index.htm;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    location ~ \.php$ {
        fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

    ssl on;
    ssl_certificate     /etc/ssl/server.crt;
    ssl_certificate_key /etc/ssl/server.key;

    # SSLを無効化してTLSのみ受け付ける
    ssl_protocols TLSv1.3 TLSv1.2;
}
[root@ip-10-0-1-62 conf.d]# systemctl restart nginx
[root@ip-10-0-1-62 conf.d]# systemctl restart php-fpm
[root@ip-10-0-1-62 conf.d]# systemctl restart mysqld

確認

スクリーンショット 2021-07-04 17 28 06

オレオレ証明ではchromeだと弾かれるので、firefoxで開いている。

k911672 commented 3 years ago

ansibleの設定(各共通ファイル/commonディレクトリ)

各共通ファイル(ansible.cfg)

変更なし

[defaults]
retry_files_enabled = False

[privilege_escalation]
become = True

[ssh_connection]
deprecation_warnings=False

各共通ファイル(hosts)

sshで入る時のhosts名を記載

[web]
dev-kimura-aws

#group
[prd:children]
web

各共通ファイル(wordpress.yml)

まずはcommonファイルの実行のみ記載

- hosts: all
  roles:
    - common

# - hosts: dev-kimura-aws
#   roles:

各共通ファイル(group_vars/all)

変数の共通ファイル(まだ、hostsの変数のみ記載)

##=====COMMON=====##
server_hostname: "{{ inventory_hostname }}"

commonディレクトリ(common/tasks/base-packages.yml)

(今回、wget, mlocate, vimだけでいい気がする。)

- name: yum install bacepackage
  yum: name={{ item }} state=present
  loop:
    - vim
    - zsh
    - git
    - tree
    - htop
    - iftop
    - mlocate
    - telnet
    - wget
    - ipa-pgothic-fonts

commonディレクトリ(common/tasks/hostname.yml)

そのまま

- name: change hostname
  hostname: name={{ server_hostname }}

commonディレクトリ(common/tasks/main.yml)

common/tasks内のファイルを実行しているだけなので、そのまま

- name: include tasks/base-packages.yml
  include_tasks: tasks/base-packages.yml

- name: include tasks/hostname.yml
  include_tasks: tasks/hostname.yml

- name: include tasks/user.yml
  include_tasks: tasks/user.yml

commonディレクトリ(common/tasks/user.yml)

group, name, keyの値を変更

- name: create user
  user:
    name: "{{ item.name }}"
    createhome: yes
    password: "{{ item.password | password_hash('sha512') }}"
    shell: "{{ item.shell }}"
    groups: "{{ item.groups }}"
    state: "{{ item.state }}"
    remove: "{{ item.remove }}"
  loop:
  - { shell: '/bin/bash', groups: 'kimura', state: 'present', remove: 'no', name: 'kimura', password: '11922960Kim@' }

- name: add sudoers
  lineinfile:
    path: /etc/sudoers
    state: present
    regexp: "{{ item.match }}"
    line: "{{ item.line }}"
  loop:
  - { match: 'kimura', line: 'kimura ALL=(ALL) NOPASSWD: ALL' }

- name: authorized_key for user kimura 
  ignore_errors: true
  authorized_key:
    user: kimura
    key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDOtTVtQSnRYKpApuByCgNLC5pRHeFkBHiA9xpRBCfkrc9Vy1gv5pIkKmrXAKEugIo79Fbqs006pg0tKE96Gk6AHzSUFrRL5dmBU03VrXDd/S8qVKBKJuHRON2RUc7TDWnwsRfhWu/17ECVs58ZCh1WMf7BCq3D2HnFYAj6A/uE38LL8VBsRF51hDu/5PdRXrJsAc09H6VdyoO5YZwelW11k8jl1ghUk3oqDdbOHVBGo730acoVu2rocphf2w9jXFabdh5TmbnEY+ZpFtV0fkqBJEvCmIYTZDTxDFyeTuftQDvfi6ZAwDbkcZHav60yKlJx673gHv/v3nvnNx0SUiWQvyUp20t1jsruGy8mNla2YYqDmmrtaroqPrj9DrM18hX7pxephTfmkjBguVnRkYdFrSSapO62wu8ZMO2ngCjgdDbXZkPJbb6W6jCKVBT5dMqrYFYIjjrQyrTcyNwcBZto5eYFqIOLf9U89xW9lA21OE+yNTW0CMd9sqzfmX0VPKc= kimuranaoki@kimuranaokinoMacBook-Pro.local
k911672 commented 3 years ago

ansibleの設定(nginxディレクトリ)

各共通ファイル(wordpress.yml)

roleにnginxを追加

# - hosts: all
#   roles:
#     - common

- hosts: dev-kimura-aws
  roles:
    - nginx

nginxディレクトリ(nginx/files/nginx.conf)

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 4096;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    include /etc/nginx/conf.d/*.conf;

    server {
        listen       80;
        listen       [::]:80;
        server_name  _;
        root         /usr/share/nginx/html;

        include /etc/nginx/default.d/*.conf;

        error_page 404 /404.html;
        location = /404.html {
        }

        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
        }
    }
}

nginxディレクトリ(nginx/files/nginx.repo)

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=1
enabled=1
gpgkey=http://nginx.org/keys/nginx_signing.key

[nginx-source]
name=nginx source
baseurl=http://nginx.org/packages/mainline/centos/7/SRPMS/
gpgcheck=1
enabled=0
gpgkey=http://nginx.org/keys/nginx_signing.key

nginxディレクトリ(nginx/files/conf.d/default.conf)

server {
    listen       80;
    server_name dev.kimura.aws;
    return 301 https://$host$request_uri;
}

server {
    listen 443;
    server_name dev.kimura.aws;
    root /var/www/html/wordpress;
    charset UTF-8;
    access_log  /var/log/nginx/sample.com.access.log  main;
    error_log /var/log/nginx/sample.com.error.log;

    location / {
        index   index.php index.html index.htm;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    location ~ \.php$ {
        fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

    ssl on;
    ssl_certificate     /etc/ssl/server.crt;
    ssl_certificate_key /etc/ssl/server.key;

    # SSLを無効化してTLSのみ受け付ける
    ssl_protocols TLSv1.3 TLSv1.2;
}

nginxディレクトリ(nginx/files/conf.d/php-fpm.conf)

# PHP-FPM FastCGI server
# network or unix domain socket configuration

upstream php-fpm {
    server unix:/run/php-fpm/www.sock;
}

nginxディレクトリ(nginx/handlers/main.yml)

- name: restart nginx
  systemd: name=nginx state=restarted

nginxディレクトリ(nginx/tasks/main.yml)

- name: copy nginx.repo
  copy:
    src: "{{ item.src }}"
    dest: "/etc/yum.repos.d/{{ item.dest }}"
    backup: no
    owner: root
    group: root
  with_items:
    - { src: roles/nginx/files/nginx.repo, dest: . }

- name: Enable to install NGINX.
  shell: "amazon-linux-extras enable nginx1"
  become: yes

- name: install nginx
  yum: name={{ item }} state=installed
  loop:
  - nginx

- name: start nginx
  systemd: name=nginx enabled=yes state=started

- name: copy nginx conf
  copy:
    src: "{{ item.src }}"
    dest: "/etc/nginx/{{ item.dest }}"
    backup: no
    owner: root
    group: root
  loop:
    - { src: roles/nginx/files/conf.d, dest: . }
    - { src: roles/nginx/files/nginx.conf, dest: . }
  notify: restart nginx

下記を加えないとamazon-linux-extrasでのnginxのインストールができない

- name: Enable to install NGINX.
  shell: "amazon-linux-extras enable nginx1"
  become: yes
k911672 commented 3 years ago

ansibleの設定(phpディレクトリ)

各共通ファイル(wordpress.yml)

phpディレクトリの設定を追加

# - hosts: all
#   roles:
#     - common

- hosts: dev-kimura-aws
  roles:
    # - nginx
    - php

phpディレクトリの設定(php/files/php.ini)

変更せず

[PHP]
engine = On

safe_mode = Off
safe_mode_gid = Off
safe_mode_include_dir =
safe_mode_exec_dir =
safe_mode_allowed_env_vars = PHP_
safe_mode_protected_env_vars = LD_LIBRARY_PATH

error_reporting = E_ALL & ~E_NOTICE

display_errors = On
display_startup_errors = Off

max_execution_time = 600
max_input_time = 60
memory_limit = 200M

register_globals = Off
register_long_arrays = Off
register_argc_argv = Off

magic_quotes_gpc = Off
magic_quotes_runtime = Off
magic_quotes_sybase = Off

allow_url_fopen = On
allow_url_include = Off
file_uploads = On

post_max_size = 60M
upload_max_filesize = 50M

zend.ze1_compatibility_mode = Off
short_open_tag = On
asp_tags = Off
precision    =  14
y2k_compliance = On
output_buffering = 4096
zlib.output_compression = Off
implicit_flush = Off
unserialize_callback_func=
serialize_precision = 100
allow_call_time_pass_reference = Off
disable_functions =
disable_classes =
expose_php = Off
log_errors = On
log_errors_max_len = 1024
ignore_repeated_errors = Off
ignore_repeated_source = Off
report_memleaks = On
track_errors = Off
variables_order = "EGPCS"
auto_globals_jit = On
auto_prepend_file =
auto_append_file =
default_mimetype = "text/html"
doc_root =
user_dir =
;extension_dir = "/usr/lib/php/modules"
enable_dl = On
default_socket_timeout = 60

[mbstring]
mbstring.language = Japanese
mbstring.internal_encoding = EUC-JP
mbstring.http_input = auto
mbstring.http_output = SJIS
mbstring.encoding_translation = Off
mbstring.detect_order = auto
mbstring.substitute_character = none;

[Date]
date.timezone = Asia/Tokyo

[Syslog]
define_syslog_variables  = Off

[mail function]
SMTP = localhost
smtp_port = 25
sendmail_path = /usr/sbin/sendmail -t -i

[SQL]
sql.safe_mode = Off

[ODBC]
odbc.allow_persistent = On
odbc.check_persistent = On
odbc.max_persistent = -1
odbc.max_links = -1
odbc.defaultlrl = 4096
odbc.defaultbinmode = 1

[MySQL]
mysql.allow_persistent = On
mysql.max_persistent = -1
mysql.max_links = -1
mysql.default_port =
mysql.default_socket =
mysql.default_host =
mysql.default_user =
mysql.default_password =
mysql.connect_timeout = 60
mysql.trace_mode = Off

[MySQLi]
mysqli.max_links = -1
mysqli.default_port = 3306
mysqli.default_socket =
mysqli.default_host =
mysqli.default_user =
mysqli.default_pw =
mysqli.reconnect = Off

[mSQL]
msql.allow_persistent = On
msql.max_persistent = -1
msql.max_links = -1

[PostgresSQL]
pgsql.allow_persistent = On
pgsql.auto_reset_persistent = Off
pgsql.max_persistent = -1
pgsql.max_links = -1
pgsql.ignore_notice = 0
pgsql.log_notice = 0

[Sybase]
sybase.allow_persistent = On
sybase.max_persistent = -1
sybase.max_links = -1
sybase.min_error_severity = 10
sybase.min_message_severity = 10
sybase.compatability_mode = Off

[Sybase-CT]
sybct.allow_persistent = On
sybct.max_persistent = -1
sybct.max_links = -1
sybct.min_server_severity = 10
sybct.min_client_severity = 10

[bcmath]
bcmath.scale = 0

[browscap]

[Informix]
ifx.default_host =
ifx.default_user =
ifx.default_password =
ifx.allow_persistent = On
ifx.max_persistent = -1
ifx.max_links = -1
ifx.textasvarchar = 0
ifx.byteasvarchar = 0
ifx.charasvarchar = 0
ifx.blobinfile = 0
ifx.nullformat = 0

[Session]
session.save_handler = files
session.save_path = /var/lib/php/session
session.use_cookies = 1
session.use_only_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_domain =
session.serialize_handler = php
session.gc_probability = 1
session.gc_divisor     = 1000
session.gc_maxlifetime = 1440
session.bug_compat_42 = 0
session.bug_compat_warn = 1
session.referer_check =
session.entropy_length = 0
session.entropy_file =
session.cache_limiter = nocache
session.cache_expire = 180
session.use_trans_sid = 0
session.hash_function = 1
session.hash_bits_per_character = 5

[MSSQL]
mssql.allow_persistent = On
mssql.max_persistent = -1
mssql.max_links = -1
mssql.min_error_severity = 10
mssql.min_message_severity = 10
mssql.compatability_mode = Off
mssql.secure_connection = Off

[Assertion]

[Verisign Payflow Pro]
pfpro.defaulthost = "test-payflow.verisign.com"
pfpro.defaultport = 443
pfpro.defaulttimeout = 30

[COM]

[FrontBase]

[gd]

[exif]

[Tidy]
tidy.clean_output = Off

[soap]
soap.wsdl_cache_enabled=1
soap.wsdl_cache_dir="/tmp"
soap.wsdl_cache_ttl=86400

[Zend Optimizer]
zend_extension = opcache.so

phpディレクトリの設定(php/files/www.conf)

user, group, listen.owner, listen.groupを変更

[www]

user = nginx
group = nginx

listen = /var/run/php-fpm/php-fpm.sock

listen.owner = nginx
listen.group = nginx

pm = static
pm.max_children = 40
pm.start_servers = 40
pm.min_spare_servers = 40
pm.max_spare_servers = 40
pm.process_idle_timeout = 10s;
pm.max_requests = 100
slowlog = /var/log/php-fpm/www-slow.log
request_terminate_timeout = 100
php_admin_value[error_log] = /var/log/php-fpm/www-error.log
php_admin_flag[log_errors] = on
php_admin_value[memory_limit] = 256M
php_value[session.save_handler] = files
php_value[session.save_path]    = /var/lib/php/session
php_value[soap.wsdl_cache_dir]  = /var/lib/php/wsdlcache

phpディレクトリの設定(php/handlers/main.yml)

- name: restart php-fpm
  systemd: name=php-fpm state=restarted

phpディレクトリの設定(php/tasks/main.yml)

epelとphpのインストールをmazon-linux-extrasを使った仕様に変更。

- name: Enable to install epel.
  shell: "amazon-linux-extras enable epel"
  become: yes

- name: install remi epel
  yum: name={{ item }} state=present
  loop:
    - "{{ PHP_VERSION_EPEL }}"
    - "{{ PHP_VERSION_REMI }}"

- name: Enable to install php7.2
  shell: "amazon-linux-extras enable php7.2"
  become: yes

- name: php72 install
  yum: name={{ item }} state=present enablerepo=remi,remi-php72
  loop:
    - php
    - php-fpm
    - php-gd
    - php-bcmath
    - php-mbstring
    - php-xml
    - php-curl  
    - php-ldap
    - php-mysqlnd
    - php-opcache

- name: start php-fpm
  systemd: name=php-fpm state=started enabled=yes

- name: copy php.ini
  copy:
    src: "roles/php/files/{{ item.src }}"
    dest: "/etc/{{ item.dest }}"
    backup: no
    owner: root
    group: root
    mode: 0644
  loop:
    - { src: "php.ini", dest: . }

- name: copy php-fpm www.conf
  copy:
    src: "roles/php/files/{{ item.src }}"
    dest: "/etc/php-fpm.d/{{ item.dest }}"
    backup: no
    owner: root
    group: root
    mode: 0644
  loop:
    - { src: "www.conf", dest: . }
  notify: restart php-fpm
k911672 commented 3 years ago

ansibleの設定(mysqlディレクトリ)

設定の変更はないので、後で各ファイルの中身コピペする

k911672 commented 3 years ago

ansibleの設定(opensslディレクトリ(自己証明作成))

設定そのままなので、後でファイルの中身をコピペする。

k911672 commented 3 years ago

Route53でALBのエイリアスをAレコードに追加

レコードの作成

k911672 commented 3 years ago

wordpressのバックアップはbackwpupでs3にシンクすること

S3の設定

k911672 commented 3 years ago

ACM(AWSの証明書の発行)

→証明書の発行が漏れていたので、ここで発行する。

ACM(AWS Certificate Manager)の作成

⭕️下記が正解

スクリーンショット 2021-07-15 22 22 41

→1日経っても検証中のエラー発生…

→1日経っても検証中のエラー発生… 今度はCNAMEの設定をしてなかったのが原因だと考えれる。

スクリーンショット 2021-07-15 21 34 08(2)

(あとはドメインネームの登録間違いも(上記に記載))

ALBの修正

nginxの修正

→証明書をこちらで発行しないので443ポート経由でのブラウザ接続訂正する。

[kimura@dev-kimura-aws conf.d]$ pwd
/etc/nginx/conf.d
[kimura@dev-kimura-aws conf.d]$ sudo vim default.conf 
[kimura@dev-kimura-aws conf.d]$ sudo systemctl restart nginx
[kimura@dev-kimura-aws conf.d]$ cat default.conf 
server {
    listen       80;
    server_name  dev.kimura.aws;
    root /var/www/html/wordpress;
    charset UTF-8;
    access_log  /var/log/nginx/sample.com.access.log  main;
    error_log /var/log/nginx/sample.com.error.log;

    location / {
        index  index.php index.html index.htm;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    location ~ \.php$ {
        fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}
k911672 commented 3 years ago

wpの設定とawsの証明書の設定を行う

k911672 commented 3 years ago

wordprssの設定

ログイン

インスタンスを新しく作り直し、再度ログイン(作り方は省略)

スクリーンショット 2021-07-18 11 45 40
[root@ip-10-0-1-183 ~]# yum install -y php-xml
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                   
Complete!
[root@ip-10-0-1-183 ~]# yum install -y php-gd
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Complete!

### IAMの設定

- S3の権限追加
<img width="1440" alt="スクリーンショット 2021-07-18 14 04 58" src="https://user-images.githubusercontent.com/65452992/126060079-3626b721-c86f-4ed9-a453-4f6a08fef621.png">

### WP Offload Media Liteの設定

1. WP Offload Media Liteのインストール
<img width="1116" alt="スクリーンショット 2021-07-18 14 17 44(2)" src="https://user-images.githubusercontent.com/65452992/126060108-9dbc5e80-4b26-4268-abb8-d71579af29a9.png">

2.  S3にアクセスできるように設定
写真の記述をwp-config.php内に記述する('access-key-id' 、'secret-access-key'はIAMから取得する)

<img width="1116" alt="スクリーンショット 2021-07-18 14 33 04(2)" src="https://user-images.githubusercontent.com/65452992/126060193-647ccd90-fcb2-4415-abca-cc64bb6e02f9.png">

/var/www/html/wordpress2/wp-config.php
define( 'AS3CF_SETTINGS', serialize( array(
    'provider' => 'aws',
    'access-key-id' => 'AKIAR5CZPRTKBDSWCIPL',
    'secret-access-key' => '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',
) ) );
/**#@-*/


3. AWS上で作成したS3を選択
<img width="1116" alt="スクリーンショット 2021-07-18 14 43 23(2)" src="https://user-images.githubusercontent.com/65452992/126060255-390501a3-cff5-49ec-bf1b-6f625cfb45d1.png">

4. 画像をアップロードしS3に接続しているか確認する。
<img width="1087" alt="スクリーンショット 2021-07-18 14 51 13(2)" src="https://user-images.githubusercontent.com/65452992/126060336-0f291b67-abba-4f1f-b3e8-b0b054903f5f.png">

5. サムネイルの表示
<img width="1110" alt="スクリーンショット 2021-07-22 17 28 50" src="https://user-images.githubusercontent.com/65452992/126610556-5cf6c188-7712-4738-906f-cb2ec8a77a5c.png">

6. 再確認
<img width="1115" alt="スクリーンショット 2021-07-22 17 32 14" src="https://user-images.githubusercontent.com/65452992/126610957-b6a60353-0975-412c-b3fc-bf61d1692916.png">

### BackWPupの設定

1. インストール
<img width="1440" alt="スクリーンショット 2021-07-18 11 52 07" src="https://user-images.githubusercontent.com/65452992/126060048-172c9388-eda0-45f6-a349-c4a41e015905.png">

2. S3に保存できるように設定
<img width="1116" alt="スクリーンショット 2021-07-18 14 51 52(2)" src="https://user-images.githubusercontent.com/65452992/126060379-05975de9-6ac0-444e-b265-7bb95f6cb656.png">

3. 鍵の設定
<img width="1116" alt="スクリーンショット 2021-07-18 14 58 47(2)" src="https://user-images.githubusercontent.com/65452992/126060429-f6cb1ffe-c3a8-402c-a5e7-28db93513229.png">

<img width="1440" alt="スクリーンショット 2021-07-18 14 58 03" src="https://user-images.githubusercontent.com/65452992/126060412-93e6d289-7f99-4366-85db-88741c769755.png">

4. スケジュールの設定
<img width="1116" alt="スクリーンショット 2021-07-18 15 01 49(2)" src="https://user-images.githubusercontent.com/65452992/126060452-a1e1d0d1-ddfb-478c-8fcc-02a0b0622625.png">

5. バックアップ実行
<img width="1116" alt="スクリーンショット 2021-07-18 16 49 14(2)" src="https://user-images.githubusercontent.com/65452992/126060476-5216761f-9dff-4e54-9464-e3369bf65df7.png">

6. 確認
<img width="1440" alt="スクリーンショット 2021-07-18 16 49 14" src="https://user-images.githubusercontent.com/65452992/126060487-2fe0e08b-8bf6-452c-9e69-026e13203eb7.png">
k911672 commented 3 years ago

Route53の再設定

k911672 commented 3 years ago

ALB→EC2への設定

k911672 commented 3 years ago

セキュリティグループの設定

スクリーンショット 2021-07-22 17 13 04 スクリーンショット 2021-07-22 17 13 19 スクリーンショット 2021-07-22 17 13 33

セキュリティグループは格設定毎に作るのと、アウトバーンルールは基本「すべてのトラフィック」にする。

あとはこれこれを各設定箇所に割り当てるだけ!

確認

スクリーンショット 2021-07-19 0 49 23(2)

httpsで接続完了!

k911672 commented 3 years ago

https接続

Really Simple SSL

→インストールしたがACM設定しているので、意味なかったかも…

スクリーンショット 2021-07-20 0 38 29

サイトのURLをhttpsに

スクリーンショット 2021-07-20 1 03 38

wp-configの設定

以下の記述を追加

if($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') {
  $_SERVER['HTTPS'] = 'on';
  $_ENV['HTTPS'] = 'on';
}
スクリーンショット 2021-07-20 0 55 45

awsのALBの設定

スクリーンショット 2021-07-21 23 02 39(2)