AWS

AmazonLinuxでnginxを使ったWebサーバを構築する

ここまでで EC2 へアクセスするための最低限の設定が完了したので、いよいよ Web サーバを構築していきます。

今回は、無料枠期間を想定して Web サーバ 1 台に色々とサービスを詰め込む前提で進めていきます。

nginx(公開用、管理用)
PHP
MySQL(クライアント)
Redis(クライアント)
Jenkins(デプロイ用)

また、ELB を介さずに直接 HTTPS のアクセスを受け付けます。

よって、Web サーバ側で SSL のサーバ認証をします。

サーバ証明書は Let’s Encrypt を利用します。

OSの基本設定

AmazonLinux をインストールして ec2-user を削除しただけの状態なので、まずは OS の基本的な設定をしていきます。

ec2-user の削除については「AmazonLinuxで新しいユーザを作成してec2-userを削除する」を参照してください。

AmazonLinuxで新しいユーザを作成してec2-userを削除するAmazonLinux ではデフォルトで ec2-user というユーザが作成されています。 これは AmazonLinux で EC...

また、ssh のアクセスは 10022 番ポートで受け付けるようにしています。

「AmazonLinuxでsshの待ち受けポートを22番から別の番号に変更する」の記事の通り、こちらに接続してコンソール画面で作業をしていきます。

AmazonLinuxでsshの待ち受けポートを22番から別の番号に変更するEC2 で Web サーバを構築する手順に盛り込もうと思いましたが、ssh の待ち受けポートの変更だけで記事を独立させてみました。 ここ...

まずは、アップデート通知が届いているパッケージをすべて更新しておきます。

次に開発ツール類をインストールします。

不要サービスの停止

他にも不要なサービスはありますが、ここではパケットフィルタ系のサービスのみ停止しておきます。

インスタンス再起動時にもサービスが自動起動しないようにしておきます。

AWS の場合はポートをセキュリティグループで制御した方が楽ですからね。

スワップの作成

t2.micro だとメモリが 1GB と心もとないのでスワップメモリを活用します。

2GB くらい割り当てておけばいいでしょう。

インスタンス再起動時にも割当たるようにしておきます。

タイムゾーンの設定

日本向けのサービスですし、海外展開とか考えないのでタイムゾーンを UTC から JST に変更します。

実際に日付を確認してみるとわかりますが、最初は UTC になっていますからね。

下記のコマンドを実行したのは日本時間で 8/4 の 23:27 です。

JST はシンボリックリンクで /etc/localtime に設定しておきます。

スワップの再割り当て確認がてらインスタンスを再起動してもいいですが、再起動するのが困る場合は crond のサービス再起動でタイムゾーンを反映させます。

また、ハードウェアクロックの時刻も調整しておきます。

nginxのインストール

Web サーバには Apache ではなく nginx を採用します。

まだまだ業務系システムを開発する会社では Apache を使うイメージが強いですが、個人的には nginx を使う会社の方が多くなってきた印象があります。

Windows Server で IIS 使われるよりは断然 Apache 使ってくれた方がいいですけどね(笑)

nginx のサービス自動起動を設定しておきます。

PHPのインストール

いい加減 PHP7 系に乗り換えたいのですが、アプリの改修が追い付いていないので今回は PHP5 系です。

実は使用している PHP のフレームワークが Codeigniter2 系なんですよね・・・。

Codeigniter3 系に置き換える際にはまた記事を書きたいと思います。

いつの間にか phpredis もパッケージに追加されているので yum で入れちゃいます。

php-fpm の設定を調整します。

php.ini の設定を調整します。

php-fpm のサービス自動起動を設定しておきます。

nginxの設定

この時点で、nginx の設定をします。

まずはサイト単位ではなく nginx 全体の設定をします。

nginx.conf は下記のような感じで設定します。

ELB を通す場合はソースアドレスを取得するようにしておきましょう。(今回はELBは使いませんが)

nginx のサービスを起動します。

php-fpm のサービスも起動します。

ここまでで Web サーバの基本的な設定は完了です。

次回、EC2 の最終仕上げをしていきます。