リハビリ&社内勉強用のために作成します。第2弾。
#用意するもの
・PC
・インターネット
・TeraTarm
#用語
用語 | 意味 |
---|---|
EC2 | AWSにおけるIaasのサーバ |
Apache | Webサーバ用のソフトウェア(MW) |
#ゴール
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アドレス」をコピー。
##2.EC2へログイン
①TeraTermを起動し、「ホスト(T)」へEC2のパブリックIPv4アドレスを入力。
「サービス」はsshを選択し「OK」をクリック。
②「ユーザ名」をec2-userとし、秘密鍵としてキーペアを選択して「OK」をクリック。
③EC2へログイン完了!
##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!
上手くいかなければプロセス再起動
[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その他