mamiba blog

PC関連から、日常のことまで、思いつくままに何でも扱います

PC関連 ウェブ ぼやき

AWSでNginx、PHP7.1な環境のWordPress他

2018/06/03

nginxはじめて使った。

  1. VPC作成
    アカウント作成したら自動でdefaultのVPC作られているので、それで問題ない。
  2. サブネット設定
    公開するサブネット(Webサーバ)と公開しないサブネット(DBサーバ)の2つを作成する。
    例えばVPCのCIDRが192.168.0.0/16ならば、公開するサブネットは192.168.1.0/24で公開しないサブネットは192.168.2.0/24とかでOKと。(第3オクテットを変えてます)
    これも1つは自動で作られてた気がする。もしかしたら3つとかあったような気もする。(記憶曖昧)
    最初から2つ以上作られてたら、それで問題ない。
    アベイラビリティゾーンは分けること。
  3. ルートテーブル設定
    公開するサブネット用のルートテーブルと公開しないサブネット用のルートテーブルの2つを作成する。
    公開する方は0.0.0.0/0でターゲットはインターネットゲートウェイを指定して、インターネットに公開する設定を追加する。
    公開しない方はVPCのCIDRが192.168.0.0/16だとして、それだけでいい。(初期設定でそうなってると思うので、そのままでいいはず)
  4. インターネットゲートウェイ設定
    最初から作られてた気がする。なければ作成して、VPCに割当する。
  5. セキュリティグループ設定
    Webサーバ用のセキュリティグループとDBサーバ用のセキュリティグループの2つを作成する。
    Webサーバが80番ポートで外部に公開されるならば、インバウンドで80番ポートを0.0.0.0/0に公開するルールを作る。
    SSHでつないで設定するので、22番を自分のIPだけ開放するとか、使わないときは閉じとくとかで設定する。
    DBサーバはネットワーク内からだけ繋がればいいから、MySQLなら3306番ポートをインバウンドで内部のアドレス(VPCのCIDR)に公開してやればいい。外部(0.0.0.0/0)の設定は行わないように。
    ほか必要に応じてルールを追加する。
  6. EC2作成
    無料の範囲で作成のチェックボックスを入れると1年無料の範囲で作れるはず。(1年無料以外になるメニューが無効化される)
    Amazon Linux AMIかAmazon Linux 2 LTS Candidate 2でやるのがよいかと思う。
    以降の説明はAmazon Linux AMIなので、そっち選んどけば、以降の手順の通りにやれば動く、、、かもしれない。
  7. ElasticIP割当
    ElasticIPってのはいわゆる固定IPアドレスです。
    インスタンスに割り当てないとお金がかかるので、EC2を作ってから割り当てます。
    作成したインスタンスに割り当てます。
  8. RDS作成
    EC2と同様に無料の範囲で作成のチェックボックスを入れる。
    WordPressならMySQLかMariaDBを選択する。
    MySQLの場合、DBインスタンス識別子、マスターユーザ名、マスターパスワードは忘れずにメモっておく。
    サブネットとかセキュリティグループは既存のものを選択でDB用に作成したやつを選ぶ。
  9. EC2の設定
    1. 接続するには
      EC2インスタンスを作るときに作成したpemファイル(キーペア)をppkファイルに変換して、puttyに設定してログインします。
      ppkファイルに変換するには、puttygen.exeを使う。
      Conversions → Inport Key → pemファイルを選んで → Generateする。
      ppkファイルが作成されるので、puttyの接続 → SSH → 認証として、中にある認証のためのプライベートキーファイルというところにセットする。
      接続先はパブリック DNS (IPv4)ってところに書かれてるアドレスです。ユーザーはec2-userです。
    2. 接続できたら、とりあえず更新する
      sudo yum -y update
    3. nginx、PHPをインストールする
      sudo yum -y install nginx
      sudo yum -y install php71
      sudo yum -y install php71-mbstring
      sudo yum -y install php71-pdo
      sudo yum -y install php71-fpm
      sudo yum -y install php71-mysqlnd
      php7.2はまだ入れられなかった。(2018年6月1日時点)
    4. nginxの設定
      1. /etc/nginx/nginx.conf
        httpディレクティブに
        server_tokens off;
      2. /etc/nginx/conf.d/*.conf
        ドメインの数だけ設定を作成する。
        fastcgi_pass 127.0.0.1:9000;
        ではなく
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
        としないと、111: Connection refusedが発生した。
    5. PHPの設定
      /etc/php-fpm-7.1.d/www.conf
      userとgroupをnginxの実行ユーザーにした。
      あとここでも
      127.0.0.1:9000
      ではなく、
      /var/run/php-fpm/php-fpm.sock
      とする必要があった。
      (2018/6/3 追記)
      Out of memoryが発生したので、
      pm = static
      に変更して、pm.max_childrenを減らした。
    6. WordPressの配備
      /var/www/html/wordpress
      に解凍して配備。
      初回の場合はインストールのPHPにアクセスしてインストール。
      移行の場合はwp-config.phpをいじってDBにつなげる。
      DBはRDSでエンドポイントって書かれてるのがアドレスで、セキュリティグループの設定がちゃんとしてれば、すんなり繋がる。
    7. 自動起動
      sudo service nginx start
      sudo chkconfig nginx on
      sudo service php-fpm start
      sudo chkconfig php-fpm on

-PC関連, ウェブ, ぼやき