EC2にもう一つのServerを建ててみた。
こんにちは!クラスメソッド(Classmethod)のキム・ジェウク(Kim Jaewook)と申します!
今回はDockerを利用して、EC2にもう一つのServerを建ててみました。
環境設定
EC2インスタンスのOSはUbuntuを選びました。
apt-get update apt-get install nginx apt install php-fpm apt-get install nano
apt update実行した後、nginxをダウンロードします。そして、phpではなくphp-fpmをダウンロードしますが、php-fpmはPHP Fast CGI Process Managerという意味で、GCIより速度が早いバージョンです。 CGIは実行するたびに、新しいプロセスを作成して起動しますが、このしたら負荷がかかって遅くなります。しかし、Fast CGIはすでに作成したプロセスを再利用する方法を使用するため、処理がより速いというメリットがあります!
しかし、なぜphp-fpmなのかと言うと、apacheの場合、apache用phpモジュールがありますので、いかなる設定もする必要なく、phpを認識しますが、nginxの場合、phpを認識できないので、php-fpmをインストールしてnginxと連動しなければなりません。
最後にnanoの場合、nginxとphpを連動させるためにはテキストを修正しなければならないので、nanoをインストールしました。
cd /etc/nginx/sites-available nano default
インストールが終わったら、/etc/nginx/sites-availableに入ります。そして、lsコマンドを実行してみると、defaultがありますので、インストールしたnanoでテキストを修正します。
ここに index.phpを追加してください。
その後、下の部分にイメージどうり「#」を消してください。セーブするコマンドは、Ctrl+Oで、nanoから抜け出すコマンドはCtrl+Xです。
では、phpとnginxの連動が終わったので、テストをやってみましょう。
EC2のPublic IPに接続してみると、
nginxページが出ます。
その後、
nano index.php "hello world PHP"
コマンドを実行して、phpファイルを作菜します。
systemctl restart nginx
次、nginxを再起動した後、EC2に/index.phpをつけて接続してみましょう。
このページが出たら、nginxとphpの連動は成功です。
Docker環境を設定
apt install docker.io
Dockerをダウンロードします。
その後、「Docker」というコマンドを実行すると、Dockerのコマンドリストが出たら、インストール成功です。
まず、Dockerfileを作成する前にDockerfileのディレクトリを設定する必要があります。
cd /etc/nginx/sites-available mv deafult /./home/ubuntu
私は、Dockerfileのディレクトリをhome/ubuntuに設定しました。そして、phpを設定したdefaultファイルも必要ですので、ubuntuディレクトリにコピーします。最後には、ubuntuディレクトリで「nano phpinfo.php -> <?php phpinfo(); ?>」でphpファイルを作成します。
Dockerfileを作成
では、Dockerfileを作成しましょう!
- MAINTAINERは「作成者の名前をイメージに付与するコマンド」
- RUNは「ビルド時に任意のコマンドを実行できるコマンド」
- COPYは「ホスト側のファイルをイメージ側の指定したディレクトリにコピーするコマンド」
- WORKDIRは「作業ディレクトリを指定(ない場合は新しく作成)するコマンド」
- CMDは「
docker run
かdocker-compose run
を実行するときに実行されるコマンド」 - EXPOSEは「コンテナが公開するポートを指定するコマンド」になります。
Dockerについては、こちらを参考してください。
Dockerfileをビルド
では、作成したDockerfileをビルドしてみましょう!
docker build -t ubuntu-nginx-php:latest .
コマンドを実行した後、「docker images」コマンドを実行してみると、
Dockerfileが成功的にビルドされました。
Container化
次は、ImageをContainer化してみましょう
docker create -i -t --name ubuntu-nginx-php -p 8000:80 image-id docker ps -a
image-idには、「docker images」のコマンドを実行して、IMAGE IDの部分を入力します。portは、Dockerfileではport 80を入力しましたけど、port 8000に変えてContainer化してみましょう。80:80しても大丈夫です。
そして、docker ps -a コマンドで作成したDocker Containerを見れます。
docker start Containter-ID
では、上のコマンドで、Containerを起動します。
次は、Security GroupでPort 8000を設定してください。
Dockerのテスト
では、port 8000に接続してみると、nginxページが出ます。ここまでが、EC2にDokcerを利用してもう一つのServerを構築する過程でした。
最後に
後は、今回構築したDocker ServerでAWS Serviceである、RDSにも連動してみようと思います。これから機会があったらDockerについてたくさん書いてみるつもりです!