blog

Amazon VPC シリーズAmazon VPC上にシンプルなWordpress環境を構築する:Webサーバー構築編

    • Ryuichi Nonaka
    この記事は書かれてから1年以上経過しており、内容が古い場合があります。

    はじめに

    前回の準備編で、構築に必要なセキュリティグループやサブネットの準備ができました。今回は踏み台用サーバーやWebサーバーを構築してSSH接続とELBからWebサーバーに接続できるところまで進めます。

    SSH接続用踏み台サーバー(EC2)の作成

    まずは踏み台サーバーを作ります。ほぼ立てるだけなので簡単です。

    AMIを選択

    Amazon Linux AMIを選択します。

    AMIの選択

    Choose an Instance Type

    SSHで接続するだけに使うのでインスタンスサイズはt2.microにします。

    インスタンスタイプの選択

    Configure Instance Details

    NetworkでVPCを選択しSubnetを踏み台サーバー用にします。

    インスタンスの設定

    Add Storage

    ストレージはデフォルトのままでOK。

    Tag Instance

    タグもvpc-wordpress: jump hostとかTunnelとか適当に付けます。

    Configure Security Group

    SSH用のセキュリティグループを選択し、Review and Launchを教えて作成したKey Pairを選択します。

    セキュリティグループの選択

    踏み台サーバーにEIPを割り当てる

    踏み台サーバーが起動できたらEIPを割り当てます。メンテナンスをしない時はインスタンスをStopしておくことで不正アクセスされるリスクを減らすことができます。EIP(Elastic IPs)の作成はEC2のメニューからElastic IPsを選択し、Allocate New Addressをクリックします。

    EIPの作成

    EIPができたら先ほど作った踏み台用サーバーにAssociate Addressで割り当てます。

    踏み台サーバーへの接続

    踏み台サーバーへの接続は予め.ssh/configファイルに接続情報を記述しておくことで、$ ssh vpc-wpといったような非常に短いコマンドでアクセスできるようになります。

    $ vi ~/.ssh/config
    Host vpc-wp
      HostName xxx.xxx.xxx.xxx
      Port 22
      User ec2-user
      IdentityFile ~/.ssh/projects/vpc-wordpress.pem
    

    これで一度踏み台サーバーに接続してみます。

    $ ssh vpc-wp
    
           __|  __|_  )
           _|  (     /   Amazon Linux AMI
          ___|\___|___|
    
    https://aws.amazon.com/amazon-linux-ami/2014.09-release-notes/
    7 package(s) needed for security, out of 18 available
    Run "sudo yum update" to apply all updates.
    [ec2-user@ip-10-82-3-243 ~]$
    

    このように表示されたら踏み台サーバーへのアクセスは成功。Webサーバーへの接続はWebサーバーを用意してから行います。

    接続時のエラー:UNPROTECTED PRIVATE KEY FILE!

    こんなエラーが出たらパーミッションを0600に変更することで解決します。

    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    @         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    Permissions 0640 for '/Users/nonakaryuichi/.ssh/projects/xxx/vpc-wordpress.pem' are too open.
    It is required that your private key files are NOT accessible by others.
    This private key will be ignored.
    
    $ chmod 600 vpc-wordpress.pem
    

    Webサーバー(EC2)の作成

    踏み台サーバーとほぼ同じ流れで、Webサーバー用のサブネットとセキュリティグループを設定します。

    Public IPの設定

    Webサーバーなので外とデータのやりとりを行えるようPublic IPを設定します。これはConfigure InstanceのAuto-assign Public IPをEnableにすることで有効化できます。これを有効化して置かないと外とのやりとりが行えないためyum updateなどが行えません。

    インスタンスができたらPrivate IPをメモしておいてください。このPrivate IPは踏み台サーバーからWebサーバーに接続する際に必要になります。

    踏み台サーバー経由でWebサーバーにSSH接続

    ssh configにWebサーバーの情報を記述します。踏み台サーバー経由のSSH接続はこちらを参考にしました。ProxyCommandを使って踏み台サーバーを意識することなく、WebサーバーへSSH接続できるようになります。.ssh/configに接続情報を追記します。xxx.xxx.xxx.xxxの部分はメモしたPrivate IPを指定します。

    $ vi ~/.ssh/config
    Host app.vpc-wp
      Hostname xxx.xxx.xxx.xxx
      User ec2-user
      IdentityFile ~/.ssh/projects/vpc-wordpress.pem
      ProxyCommand ssh vpc-wp -W %h:%p
    

    踏み台サーバーを経由したSSH接続をテスト

    SSH接続を試してみましょう。
    以下のように接続できたら踏み台経由のアクセス成功です。

    $ ssh app.vpc-wp
    
           __|  __|_  )
           _|  (     /   Amazon Linux AMI
          ___|\___|___|
    
    https://aws.amazon.com/amazon-linux-ami/2014.09-release-notes/
    [ec2-user@ip-10-82-1-19 ~]$ 
    

    これでWebサーバーの準備は完了です。

    Wordpress環境の構築

    続けてWebサーバーにWordpressをインストールします。

    ApacheやPHPをyumでインストール

    yumで必要なモジュールをインストールしましょう。

    $ yum update
    $ yum -y install httpd php php-pear php-mysql php-mbstring php-gd php-xml php-mcrypt php-pecl-apc
    

    Apacheの自動起動

    Apacheの自動起動を設定、httpd.confの設定はとりあえず置いておきます。

    $ chkconfig httpd on
    

    Wordpressのダウンロード

    以下のコマンドを順番に実行して、WordpressのダウンロードとWebサーバーを起動します。

    $ cd /var/www
    $ rm -f -r html/
    $ wget http://ja.wordpress.org/latest-ja.tar.gz
    $ tar -xzvf latest-ja.tar.gz
    $ rm -f latest-ja.tar.gz
    $ mv wordpress html
    $ chown -R apache:apache html/
    $ chown -R ec2-user html/wp-content/themes/
    $ service httpd start
    

    これで、WebからアクセスできればWordpressのインストールを行える状態になりました。 Load Balancerを設定してWebサーバーにアクセスしてみましょう。

    Load Balancerの設定

    EC2のメニューからLoad Balancersに移動し、Create Load Balancerをクリックします。Load Balancer nameを適当に入力して、Create LB Insideで対象のVPC(vpc-wordpress)を選択します。Listener ConfigurationはHTTPのみで大丈夫です。

    ELBの作成

    Configure Health Checkの指定

    Ping Pathを/readme-ja.htmlに書き換えます。あとはデフォルトで問題ありません。

    Select Subnets

    Public subnet: ELBの左側に並んでいる+ボタンを押してSelected Subnetsに含めます。

    Assign Security Groups

    ELB用のセキュリティグループを選択します。

    Add Instances to Load Balancer

    作成したWebサーバー用のEC2インスタンスにチェックを入れます。

    ELBの起動

    あとはタグを適当に設定しレビューをチェックした後、Createボタンを押してELBを起動します。起動したELBのStatusが1 of 1 instances in serviceになれば正常に動作しています。DNS NameでWebブラウザからWordpressのインストール画面が表示されればうまくいっています。

    Wordpressインストール

    今回はここまで。
    次回はRDSを立ててWordpressをインストールします。

    シリーズ

    1. Amazon VPCを作成しEC2にHTTP接続する
    2. Amazon VPC上にシンプルなWordpress環境を構築する:準備編
    3. Amazon VPC上にシンプルなWordpress環境を構築する:Webサーバー構築編

    コメント・フィードバック