はじめに
今回はこんな方向けに、Webサーバにベーシック認証を設定したAWS検証環境を作成する方法を解説します。
完成イメージおよび今回構築するAWS構成図は以下の通りです。
【完成イメージ】
【AWS構成図】
本記事の内容
■ VPC・EC2インスタンス・サブネット等の作成方法
■ Webサーバ作成方法
■ ベーシック認証設定方法
■ SCPツールによるファイルアップロード方法
なお、今回VPCやサブネットはあらかじめAWS側で用意されているデフォルトのものを使用せずに、新規作成していきます。
Contents
VPCの作成方法
まず、AWSクラウド内に論理的に分離された仮想ネットワークを作成するため、VPCを新規作成します。
AWSマネジメントコンソールで「VPC」を検索し、以下のVPCの画面に遷移し、「VPCの作成」ボタンを押してください。
次にVPCの詳細設定をします。
「IPv4 CIDRブロック」は以下のプライベートIPアドレスの範囲から指定します。
プライベートIPアドレスから外れるCIDRブロックも利用できますが、プライベートIPアドレスの利用が推奨されております。
10.0.0.0 – 10.255.255.255 (10.0.0.0/8)
172.16.0.0 – 172.31.255.255 (172.16.0.0/12)
192.168.0.0 – 192.168.255.255 (192.168.0.0/16)
今回は、AWS構成図にあわせて10.0.0.0/16
を設定します。
作成ボタンを押したら、VPC作成完了です。
サブネットの作成方法
次にVPC内に配置するためのネットワーク空間であるサブネットを作成します。
AWSの使用上、VPCとサブネットは必ずセットで作成する必要があります。
画面左側のメニューのサブネットをクリックし、「サブネットの作成」ボタンをクリックします。
サブネット詳細画面にて以下のように設定します。
名前タグ:どういうサブネット(public or private)、どのAZに所属しているかが分かる名前にすることをおすすめします。
VPC:先程作成したVPC
アベイラビリティゾーン:どれでもOKですが、今回は末尾が-1a
のものを選択します。
作成ボタンを押したらサブネット作成完了です。
EC2インスタンス作成
次にWebサーバとなるEC2インスタンスを作成します。
AWSマネジメントコンソールの検索画面で「EC2」と入力し、下図のような画面へ遷移し、「インスタンスの作成」をクリックしてください。
AMIの選択
「AMI」はEC2インスタンスで使用するOSやソフトウェアのテンプレートです。
今回は標準的なLinuxサーバが使用できればよいので、下図の赤枠のインスタンスを選択します。
インスタンスタイプの選択
こちらはEC2インスタンスの性能を選択する画面となります。
規模にもよりもますが、Webサイトの検証サーバとして使用するのであれば、「t2.micro」で問題ないと思います。
今回は「t2.micro」を選択します。
インスタンスの詳細設定
ネットワーク:先程作成したVPCを選択
サブネット:先程作成したサブネットを選択
自動割当パブリックIP:有効にする。有効にすることで外部からアクセス可能なグローバルIPが発行されます。
終了保護の有効化:チェックする。チェックすることでインスタンスを削除しようとすると警告が出るようになります。
上記項目以外はデフォルトのままでOKです。
EC2インスタンスのストレージ(EBS)のタイプの選択
特に理由がない限りデフォルトのままでOKです。
タグの追加
こちらはEC2インスタンスに名前をつけるために、下記のようなName
タグを追加します。
セキュリティグループの設定
セキュリティグループの設定を行うことで、このインスタンスへのアクセス制限をすることができます。
デフォルトでSSH
での通信しか設定されていないのですが、今回Webサイトを表示するため、HTTP
、HTTPS
も追加します。
特定のIPのみに公開制限したい場合は、ソース部分にIPを指定してください。
今回はフルオープンを設定しております。
次に進むとこれまで設定した内容の確認画面に遷移しますので、問題なければ「起動」ボタンを押します。
キーペア作成
「新しいキーペアの作成」を選択して、秘密鍵を新規作成してください。
キーペア名を入力したら、「キーペアのダウンロード」を押してください。
こちらEC2インスタンスにログインするための秘密鍵で、のちほど使用しますので、大事に保管しておいてください。
ダウンロード完了しましたら、「インスタンスの作成」ボタンを押してください。
EC2インスタンス起動確認
EC2インスタンス一覧画面で以下のようにステータスが「running」となっていればEC2インスタンス作成完了です。
Elastic IPの設定
Elastic IPはEC2インスタンスのグローバルIPを固定するための機能です。
設定してないと、EC2インスタンスを再起動したら、毎回グローバルIPが変わってしまうため、設定しておきましょう。
まずは、AWSマネジメントコンソールから「VPC」を検索し、VPCの設定画面に遷移します。
次に、「Elastic IP」を選択し、「新しいアドレスの割り当て」をクリックします。
次に詳細画面に遷移したら、デフォルトの設定のままで「割り当て」ボタンをクリックします。
次に作成したElastic IPを先程作成したEC2インスタンスに割り当てます。
作成したElastic IPを選択し、アクション>アドレスの関連付けをクリックしてください。
アドレスの関連付け設定画面に遷移したら、下図のように設定して「関連付け」ボタンを押して設定完了です。
試しにEC2インスタンスを再起動して、パブリックIPが変わらないことを確認してください。
インターネットゲートウェイの作成
次に、EC2インスタンスがインターネットへ接続できるよう「インターネットゲートウェイ」を作成します。
VPCの画面より、「インターネットゲートウェイ」を選択し、「インターネットゲートウェイの作成」ボタンを押してください。
以下のように名前をつけ、「作成」ボタンを押してください。
次に作成したインターネットゲートウェイを先ほど作成したVPCにアタッチします。
作成したインターネットゲートウェイを選択し、アクション>VPCにアタッチをクリックしてください。
詳細画面にて、先ほど作成したVPCを選択し、「アタッチ」ボタンを押してください。
ルートテーブルの編集
AWSのルートテーブルは、サブネット内にあるインスタンス等がどこに通信にいくかのルールを定めたものです。
つまり、ルートテーブルはパケットの宛先(IPアドレス)を見て、どこに通信を流すかが書かれている表です。
インターネットゲートウェイ経由で外部アクセスするため、ルートテーブルに今回作成したインターネットゲートウェイを設定する必要があります。
まずは、VPCの画面よりルートテーブルをクリックし、先ほど作成したVPCに紐づくルートテーブルを選択します。
※ VPC作成時に自動でルートテーブルが作成されております。
対象のルートテーブルを選択した状態で、「ルートの編集ボタン」をクリックします。
「ルートの追加」ボタンを押して、下図のように先ほど作成したインターネットゲートウェイを設定します。
次に、どのサブネットからの通信の制御をするのかを設定するため、サブネットの関連付けを行います。
対象のルートテーブルを選択した状態で、「サブネットの関連付け」を選択し、「サブネットの関連付けの編集」ボタンをクリックします。
下図のように今回作成したパブリックサブネットにチェックし、保存ボタンを押し、設定完了です。
お疲れ様でした!
少し休憩して、次はWebサーバを構築していきましょう!
Webサーバの作成
EC2インスタンスへのログイン
ターミナルで以下のコマンドを実行し、EC2インスタンスへログインします。
ログインするためには以下の情報が必要なのでご準備ください。
■ EC2インスタンスのパブリックIP(EC2インスタンスのIPv4パブリックIP部分に記載されている)
■ ダウンロードした秘密鍵
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# 秘密鍵格納用ディレクトリ作成 $ mkdir ~/.ssh # ダウンロードした秘密鍵を.sshディレクトリへコピー $ cp ~/Downloads/design-server-key.pem ~/.ssh # 秘密鍵の権限変更 # ユーザーのみ読込・書込みOKというように閲覧権限を限定しなければログインできない場合がある $ cd .ssh $ chmod 600 design-server-key.pem # sshでログイン # XXX部分はパブリックIP $ ssh -i ~/.ssh/design-server-key.pem ec2-user@XXX.XXX.XXX.XXX # ログイン続けるか聞かれるので「yes」を入力 $ Are you sure you want to continue connecting (yes/no)? yes |
Webサーバ(Apache)のインストール
ターミナルで以下のコマンドを実行し、Apacheをインストールします。
1 2 3 4 5 6 7 8 9 10 11 |
# ルートユーザへ変更 $ sudo -s # apatchをインストール $ yum install httpd -y # apatchのバージョンが出力されればOK $ httpd -v # インスタンス起動時に自動起動するよう設定 $ chkconfig httpd on |
サンプルファイルの作成
次にWebブラウザに表示するためのサンプルファイル(HTML)を作成します。
今回はブラウザに「hello world!!」と表示するHTMLファイルをサンプルで作成します。
1 2 3 4 5 6 7 |
$ cd /var/www/html $ vi index.html # 「i」でインサートモードにして以下の内容をコピー&ペーストしてください。 <html><h1>hello world!! </h1></html> # 完了したら、「esc」、「:wq」で保存してください。 |
Webサイトへアクセス
以下のコマンドでWebサーバを起動してください。
1 2 3 4 5 |
# Webサーバ起動 $ service httpd start # 以下のコマンドを実行し、active(running)が表示されればOKです。 $ service httpd status |
Webサーバが起動したら、以下のURLをブラウザへ入力してください。
http://パブリックIPアドレス/
以下のような画面が表示されたらOKです。
ベーシック認証の設定
パスワードファイルの作成
まず、ベーシック認証でログインする際のIDとパスワードを記載したファイル(.htpasswd)を以下のコマンドで作成します。
今回はIDとパスワードは以下の前提で行います。
ID | user |
---|---|
パスワード | password |
1 2 3 4 5 |
# パスワードファイル作成 $ htpasswd -c -b /etc/httpd/conf/.htpasswd user password # 以下のファイルが作成されていればOK $ ls -l /etc/httpd/conf/.htpasswd |
Webサーバ設定ファイルの修正
次に、Webサーバ設定ファイル(.htaccess)へベーシック認証するための設定を追記します。
1 2 3 4 5 6 7 8 9 10 11 12 |
$ vi /etc/httpd/conf/httpd.conf # 「i」でインサートモードにして以下の内容を「httpd.conf」の末尾にコピー&ペーストしてください。 <Directory "/var/www/html/"> AuthUserFile /etc/httpd/conf/.htpasswd AuthGroupFile /dev/null AuthName "Basic Auth" AuthType Basic Require valid-user </Directory> # 完了したら、「esc」、「:wq」で保存してください。 |
ベーシック認証の確認
以下のコマンドでWebサーバを再起動してください。
1 2 3 4 5 |
# Webサーバ再起動 $ service httpd restart # 以下のコマンドを実行し、active(running)が表示されればOKです。 $ service httpd status |
Webサーバが起動したら、以下のURLをブラウザへ入力してください。
http://パブリックIPアドレス/
以下のようなベーシック認証のログイン画面が表示されたらOKです。
また、ログインして以下の画面が問題なく表示されるかも確認してください。
SCPツールでサーバへファイルをアップロードする方法
Win-SCPやCyberDuckなどのSCPツールでファイルをアップロードする場合は、以下のように設定してください。
通信方式 | SFTP |
---|---|
サーバ | パブリックIP |
ポート | 22 |
ユーザ名 | ec2-user |
パスワード | 入力せず、秘密鍵を指定するよう設定(ツールによって指定方法が異なるため、設定方法は省略) |
また、ファイルをアップロードする際、ec2-userでファイルをアップロードすることになるため、以下のコマンドでec2-userに書き込み権限を与えてください。
1 |
$ chown -R ec2-user:ec2-user /var/www/html |
さいごに
そんな方は以下の教材がおすすめです。
これだけでOK! AWS 認定ソリューションアーキテクト – アソシエイト試験突破講座(SAA-C02試験対応版)
AWS認定ソリューションアーキテクト試験とタイトルにありますが、初心者向けにわかりやすく解説されており、ハンズオン形式で網羅的にAWSの主要サービスについて学べます。
「せっかくだから資格も取りたい」という方は、以下の記事を参考にしていただければと思います。
さいごまでお読みいただき、ありがとうございました。
知り合いから
「フリーランスエンジニアになれば、年収800万円以上の高報酬でかつ、自由な働き方をチョイスできる」
というのを聞いて、フリーランスエンジニアに興味を持ったのですが、
当時SIer企業でエンジニアをやっていたボクはなかなか一歩踏みだせませんでした。
というもの以下のような不安があったからです。
■フリーランスエンジニアってかなりの技術力がないとなれないのではないのか?
■フリーランスエンジニアって不安定なのではないのか?
■フリーランスエンジニアって人脈やコネ、営業力が必要なのではないのか?
しかし、実際にフリーランスエンジニアになってみて気づきました。
これらはすべて間違いです。
過去のボクのようにフリーランスエンジニアに興味あるけど一歩踏み出せないという方向けに
『フリーランスエンジニア転職完全ロードマップ』
という記事を書きました。
この記事読めば、どうすればフリーランスになれるのかが分かりますので、ぜひ一読ください。