Amazon Web ServerでWebサーバの構築
AWSのインターン課題の備忘録である。AWSでWebサーバ―構築を1からやる人は参考になれば。
開発環境
- Windows10
- Git Bash
AWSで実現したい事
1. Webサーバ環境の構築(Apacheの設定)
http://[IPアドレス]/
でアクセスし、"AMAZON"と表示。なお、OSを再起動した場合でも自動的にWebサーバが起動できるように設定。
$ curl "http://1.2.3.4/"
AMAZON
手順
①Apacheの設定
https://web.arena.ne.jp/support/suiteprov2/manual/centos4/webserver/apache.html
②サービスの自動起動設定
https://web.arena.ne.jp/support/suiteprov2/manual/centos4/serveradmin/chkconfig.html
参考
よく使うもの
何もわからん!って人がいればこちらを参考に。
2. ベーシック認証
http://[IPアドレス]/secret/
へアクセスした際、ベーシック認証をする。成功ならSUCCESS
。
ユーザ名:amazon
パスワード:candidate
(認証なしでのアクセス例)
$ curl "http://1.2.3.4/secret/"
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>401 Authorization Required</title>
</head><body>
<h1>Authorization Required</h1>
<p>This server could not verify that you
are authorized to access the document
requested. Either you supplied the wrong
credentials (e.g., bad password), or your
browser doesn't understand how to supply
the credentials required.</p>
<hr>
<address>Apache/2.2.29 (Amazon) Server at 1.2.3.4 Port 80</address>
</body></html>
(認証ありでのアクセス例)
$ curl -u amazon:candidate "http://1.2.3.4/secret/"
SUCCESS
手順
①.htaccessの作成
ざっくりいうと、設定を書く。
②.htpasswdの作成
認証する情報を書く。
参考
https://blanche-toile.com/web/htaccess-htpasswd-basic
https://tweeeety.hateblo.jp/entry/2015/07/05/163040
3. 四則演算
- 数字と+-*/()以外の文字列が与えられたら
ERROR
と表示。 - 余剰が発生するちょうな除算、0による除算は発生なし。
- ファイルの拡張子は自由。
$ curl 'http://1.2.3.4/calc?abc'
ERROR
$ curl 'http://1.2.3.4/calc?1+1'
2
$ curl 'http://1.2.3.4/calc?2-1'
1
$ curl 'http://1.2.3.4/calc?3*2'
6
$ curl 'http://1.2.3.4/calc?4/2'
2
$ curl 'http://1.2.3.4/calc?1+2*3'
7
$ curl 'http://1.2.3.4/calc?(1+2)*3'
9
手順
※あくまで筆者の方法です
①CGIを許可するようにApacheを設定
②コードを書く
teratailに似たようなものがあったので、これを参考にしました
筆者はbashを使用したので、bashで書きたい人はこちらも参考に
4. 商品在庫管理システム
- 予期しない値が入力された場合には、
ERROR
と出力。 - 必ず一番最初に全削除リクエストがある。
- 以下の機能を実装する。
- 在庫の追加
- 在庫チェック
- 販売
- 売上チェック:checksales
- 全削除:deleteall
手順
筆者はPHP+MySQLで作成しました。
①PHPのインストールと設定
②MySQLのインストールと設定
一連の流れの参考
最後に
「Webサーバーの構築」は難しそうに見えて、手順を踏めば誰でもできるものです。
今回のAWSの課題は1週間程度の期限がありました。つまり、誰でも1週間あればこの程度ができるわけです。見ていただいた方の参考になれば幸いです。
詳細な問題に関しては、AWSにエントリーしていただくか、Github上でオマージュした問題を公開していますので、そちらをご覧ください。