1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Web3層システムをAWSで作ってみる #2(Webサーバ編)

Last updated at Posted at 2021-05-02

リハビリ&社内勉強用のために作成します。第2弾。

#用意するもの
・PC
・インターネット
TeraTarm

#用語

用語 意味
EC2 AWSにおけるIaasのサーバ
Apache Webサーバ用のソフトウェア(MW)

#ゴール
スライド6.JPG
Webサーバを立てて、HTMLファイルをWebサーバ上で確認できるようにする。

#手順
##1.EC2を作成
①検索窓でEC2を検索し、「インスタンスを起動」をクリック。
②以下を入力。未記載部分はデフォルトでOK。入力したら「確認と作成」をクリック。

項目 設定値 意味
Amazon マシンイメージ (AMI) Amazon Linux 2 AMI (HVM), SSD Volume Type インスタンスの種別。ここでOSを決める。LinuxやWindows、macOSなど選択可能。
インスタンスタイプの選択 t2.micro インスタンスのスペック。CPUやメモリの大きさが決まる。無料枠にもなっているt2.microを選択。tが用途(メモリ・CPU重視など)、2が世代、microがスペック(具体的なサイズ)。
ネットワーク vpc_yh_20210501 作成したVPCを選択。
サブネット PublicSubnet01_20210501 Webサーバなのでインターネット接続を受けられるPublicSubnetを選択。
自動割り当てパブリック IP 有効 グローバルIPの要否。外(インターネット)から接続するため必要。
ストレージの追加 デフォルトでOK EC2が利用するストレージのサイズ・タイプを選択。デフォルトで8G、SSDタイプになる。

③「起動」を押すとサーバへアクセスするためのキーペアの設定画面になる。
 「新しいキーペアの作成」をクリックしキーペアをダウンロード。名前はなんでもOK。
④「インスタンスの表示」をクリックし、EC2の一覧へ。下タブ「詳細」の「パブリックIPアドレス」をコピー。
InkedFireShot Capture 003 - インスタンス - EC2 Management Console - us-west-2.console.aws.amazon.com_LI.jpg

##2.EC2へログイン
①TeraTermを起動し、「ホスト(T)」へEC2のパブリックIPv4アドレスを入力。
 「サービス」はsshを選択し「OK」をクリック。
image.png
②「ユーザ名」をec2-userとし、秘密鍵としてキーペアを選択して「OK」をクリック。
image.png
③EC2へログイン完了!
image.png

##3.Apacheのインストール

[ec2-user@ip-10-0-1-236 ~]$sudo yum -y install httpd
#sudoは管理者に代わって重要コマンドを打つもの。
#yum install パッケージ名 で対象のSWをyumリポジトリ(倉庫)から持ってきてインストール。-y付けると確認スキップ。
#色々出るが末尾に「Complete!」が出ればOK

[ec2-user@ip-10-0-1-236 ~]$ec2-user@ip-10-0-1-236 ~]$ yum list installed | grep httpd
generic-logos-httpd.noarch            18.0.0-4.amzn2                 @amzn2-core
httpd.x86_64                          2.4.46-1.amzn2                 @amzn2-core
httpd-filesystem.noarch               2.4.46-1.amzn2                 @amzn2-core
httpd-tools.x86_64                    2.4.46-1.amzn2                 @amzn2-core
#yumのinstallしたlistを表示して、httpd(Apache)で絞る。ちゃんとhttpdのインストールが出来ているか確認。

[ec2-user@ip-10-0-1-236 ~]$ httpd -v
Server version: Apache/2.4.46 ()
Server built:   Aug 24 2020 18:54:20
#Apache専用コマンド(httpd)で-v(バージョン)確認し、インストールされていることを確認

[ec2-user@ip-10-0-1-236 ~]$ systemctl status | grep httpd
           x     tq3323 httpd -k start
           x     tq3324 httpd -k start
           x     tq3325 httpd -k start
           x     tq3326 httpd -k start
           x     tq3327 httpd -k start
           x     tq3328 httpd -k start
           x     mq3373 grep --color=auto httpd
#systemctlでサービスの状態を変更・確認できる。
#statusを見てhttpdのサービスが生きていることを確認。

[ec2-user@ip-10-0-1-236 ~]$ systemctl stop
[ec2-user@ip-10-0-1-236 ~]$ systemctl status | grep httpd
           x     mq3373 grep --color=auto httpd
[ec2-user@ip-10-0-1-236 ~]$ systemctl start
#サービスを落として上げるとこんな感じ

##4.Apacheの設定値確認
Apache設定の親玉ことhttpd.confの中身を確認する。

[ec2-user@ip-10-0-1-236 ~]$ cat /etc/httpd/conf/httpd.conf | grep DocumentRoot
DocumentRoot "/var/www/html"
#"/etc/httpd/conf/httpd.conf"というファイルの中身を見て(cat)、"DocumentRoot"という文字列で検索。
#DocumentRoot=ドキュメント置き場。

[ec2-user@ip-10-0-1-236 ~]$ cat /etc/httpd/conf/httpd.conf | grep Listen
Listen 80
#Listen=Apacheが受け取るポート番号。http(Webアクセス)が通常80ポートで行われるため80で指定されている。

[ec2-user@ip-10-0-1-236 ~]$ sudo netstat -anp | grep "LISTEN " | grep "80"
tcp6       0      0 :::80                   :::*                    LISTEN      3323/httpd
#サーバの80番ポートでhttpdが接続待ちしていることを確認。
#netstatコマンドはネットワーク状態を確認するためのコマンド。

##5.HTMLファイルの配備
WebサーバへHTMLファイルを置く。

[ec2-user@ip-10-0-1-236 html]$ cd /var/www/html
#DocumentRootに移動して
[ec2-user@ip-10-0-1-236 html]$ sudo touch index.html
#htmlファイルを作成する
[ec2-user@ip-10-0-1-236 html]$ ls -ltr index.html
-rw-r--r-- 1 root root 0 May  2 13:23 index.html
#ファイルを確認すると、今の状態だと権限がないことが分かるので
[ec2-user@ip-10-0-1-236 html]$ sudo chmod 777 index.html
#権限を付けるコマンドを打って
[ec2-user@ip-10-0-1-236 html]$ ls -ltr
-rwxrwxrwx 1 root root 0 May  2 13:23 index.html
#権限がついていることを確認して
[ec2-user@ip-10-0-1-236 html]$ vi index.html
#htmlファイルにhtmlコードを書き込む
[ec2-user@ip-10-0-1-236 html]$ cat index.html
<html>
 <head>
  <title>Web3層構造のシステムをAWSで作ってみる</title>
 </head>
 <body>
  <h1>Sample</h1>
  <b>2020/5/1</b>
 </body>
</html>

##6.ブラウザで確認
「http://+グローバルIPアドレス」でサイトが表示されればOK!
sample.png
上手くいかなければプロセス再起動

[ec2-user@ip-10-0-1-236 html]$ sudo systemctl restart httpd

##7.おまけ
アクセスログとか。

[ec2-user@ip-10-0-1-236 html]$ cat /etc/httpd/conf/httpd.conf | grep ServerRoot
ServerRoot "/etc/httpd"
#Apacheの親玉ディレクトリは"/etc/httpd"で
[ec2-user@ip-10-0-1-236 html]$ cat /etc/httpd/conf/httpd.conf | grep CustomLog
CustomLog "logs/access_log" combined
#アクセスログは"logs/access_log"。つまりアクセスログは"/etc/httpd/logs/access_log"にある。
[ec2-user@ip-10-0-1-236 html]$ sudo tail -f /etc/httpd/logs/access_log
#アクセスログの追記を監視(tail -f)しながら、ブラウザを更新するとアクセスログが出てくることが分かる

#参考
AWSのEC2でroot昇格
yumコマンド超基礎
やむれるパッケージ
httpd.confの設定値諸々
ディレクトリのお作法
systemctlの登録
httpdコマンドの細かい話~systemctl自動登録の経緯とか~
RHELバージョン毎のコマンド変更
systemctlコマンド
netstatコマンド
Apacheその他

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?