AWS EC2インスタンスを建ててnginxで静的コンテンツ配信する

  • このエントリーをはてなブックマークに追加

そういえば個人でEC2建てたこと無かったので簡単な静的コンテンツ配信サーバを構築してみた。

EC2インスタンスを建てる

AWS EC2インスタンスを最初に建てる場合、VPCやらセキュリティグループを設定しないといけないんだけど、 仮想マシンの起動 からインスタンス建てたらいい感じに設定してくれた。適当にクリックしていったら1分くらいでインスタンスが建ち上がった。

OSはRHEL 7.3

aws

httpを許可するために、セキュリティグループの設定を変更する。80番ポートのアクセスを許可する。

security_group

EC2の設定はこんな感じ。あとはパブリックIPとダウンロードした秘密鍵使ってsshログインして作業する。 ec2-user というユーザが予め用意されているので指定してログインする。

そういえば、EC2インスタンス建てる時にある程度の出費を予想してたけど、 インスタンスタイプがt2.microなら無料 で使えたので安心した。ずっと無料ではないけど、今回みたいにお試しするくらいなら全然余裕。

nginxインストール

以降、EC2インスタンスにsshログインして作業する。

$ ssh ec2-user@54.xxx.xxx.xxx -i ~/.ssh/hogehoge.pem
$ cat /etc/redhat-release 
Red Hat Enterprise Linux Server release 7.3 (Maipo)

nginxのrpmを登録してインストールする。

$ sudo rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
$ sudo yum -y update nginx-release-centos
$ sudo yum -y --enablerepo=nginx install nginx 
$ nginx -v
nginx version: nginx/1.10.2

nginx.confの設定

デフォルトのnginx.confファイルに server ディレクティブを追加してバーチャルサーバの設定をするだけ。

server {
        listen 80;
        server_name blog.mizukmb.local;
        access_log  /var/log/nginx/blog.access.log  main;

        location / {
            root /var/www/app/Blog;
        }
    }

これだけ。nginx初めて触ったとき、ポート番号のlistenがグローバルに書けないのは驚いた。

あとは、 root ディレクティブで指定した /var/www/app/Blog に配信コンテンツを設置するだけ。

コンテンツの設置など

今回は本ブログのリポジトリを git clone して使用した。

$ sudo mkdir -p /var/www/app
$ sudo chmod 755 /var/www
$ sudo chmod 755 /var/www/app
$ cd /var/www/app
$ sudo git clone https://***** # プライベートリポジトリのためURL省略

www, app には実行権限が必要なので注意。

もし、SELinuxが動いていたら切っておく。

$ getenforce
Enforcing
$ sudo setenforce permissive
$ getenforce
Permissive

nginxを起動させる。

$ sudo systemctl start nginx

最後に、ローカルマシンの /etc/hosts を編集して、パブリックIPと blog.mizukmb.local を紐付ける。

これで blog.mizukmb.local にアクセスするとブログが見られるようになる。

blog

/var/log/nginx/blog.access.log にもログが出力されていた。よさよう。

感想

予想外にEC2インスタンスが簡単に建てられて驚いた。インスタンスの作成からコンテンツのデプロイまで一通りやれたので何をすればいよいのかイメージしやすくなった。ここからデプロイ自動化や他のクラウドサービスを試したりして色々やっていく機運を高めていく。

参考