class: title, smokescreen, shelf, no-footer # ソフトウエア工学概論<br>deploy体験 IaaS編 <div class=footnote> <small> </small> </div> --- class: img-right,compact # IaaS (Infrastructure as a Service) <div class=footnote> <small> (脚注1) ベアメタル ... 物理的にPC(サーバ)を占有できるソリューション。 SoftLayer社が広めた用語。 メモリやGPUをカスタマイズをする場合、発注後、データセンターの中の人が設置作業をします。 他社の専用サーバのような商品名も同様のサービス (脚注2) SaaSやPaaSでは実行環境をカスタマイズできない </small> </div> ![](https://d1.awsstatic.com/icons/jp/07.ecc6bd43bf20cf9341fcbedf466d0b2d18e95c58.png) ![](/images/background/bws_cpu_servers__P_20211014_200126.png) - Googleがクラウドという概念を唱えたけれど、 実際にサービス化したのは<B>AWS(Amazon Web Service)のEC2</B>が最初。 いまだにデファクトスタンダード - <B>(仮想的な)PCにOSをインストールするところから</B>行えるので、 <B>完全に自分好みのサーバを構築</B>できる。 (ふつう仮想環境を購入するので) 物理的な作業は不要で、ブラウザでクリックすると秒単位で準備が整います(<-秒は少し盛りすぎ?) --- class: title, smokescreen, shelf, no-footer # EC2(IaaS)上にWWWサーバをつくる <div class=footnote> <small> </small> </div> --- class: compact # 手順の概要 <div class=footnote> <small> (脚注) プロは1年中やる作業なので、この手順の4〜あたりは半分ねながらでも出来ないといかん(初級level)ね </small> </div> 1. AWS Academyにログイン->AWS管理コンソール->EC2でサーバを作成 1. コントロールパネルから作成したサーバのIPアドレスを調べる 1. コントロールパネルからSSHの公開鍵をダウンロードする - **AWSのサーバへパスワード認証は出来ません**。 インターネット上のサーバへ、 **パスワード認証のようなテオクレな方法**でログインしてはいけません (ネットワークの演習では**不慣れかな?と思い、ワザとパスワード認証**を使っていました) 1. 作成したサーバへログインする 1. public_htmlディレクトリを作成する 1. 自分のindex.htmlをサーバの`~/public_html/index.html`へ配置する <br> (コンピュータネットワークの授業で作成したindex.htmlを使いまわしてokです) 1. **サーバ上に**アプリ(www.py)をダウンロードする 1. www.pyを実行し、**サーバ上でローカルに**動作を確認(`127.0.0.1 -> 127.0.0.1`) 1. コントロールパネルのセキュリティグループを変更する 1. 各自のPCのブラウザで(つまり**あなたのローカル環境**から)動作確認 --- class: img-right,compact # AWS Academy へログイン -> 管理コンソール(手順の1.) <div class=footnote> <small> (脚注) オペレーティングシステム(秋学期)の教材「AWS構築ガイド」を参照しています </small> </div> ![](images/aws-console.png) - [AWS Academyへログイン(2回目以降)](https://exercises-aws.fml.org/ja/01_intro/01-02_login-to-aws-academy/#aws-academy%E3%81%B8%E3%81%AE%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3-2%E5%9B%9E%E7%9B%AE%E4%BB%A5%E9%99%8D) - [AWS管理コンソールへ](https://exercises-aws.fml.org/ja/01_intro/01-03_dashboard-to-console/)(右図) - EC2をクリック --- class: img-right,compact # EC2でAmazon Linuxのサーバを作成する(手順の1.と2.) ![](images/aws-console-ec2-top.png) - 最初に出てきたEC2設定画面のままでok。確認は次の2ヶ所のみ - OSのイメージは**Amazon Linux<br>(kernelは5系,これがdefaultのはず)** - SSHの公開鍵はvockeyを選択 - (デフォルト設定の意味の勉強は各自にまかせますぞ) - **EC2の作成後**、EC2の画面で**Public IPアドレスをメモる** - 参考資料: [EC2 で Amazon Linux 2 をインストールする(一世代前の画面)](https://exercises-aws.fml.org/ja/02_basic-setup/02-01_ec2-install-amazon-linux/) --- class: img-right,compact # 作成したEC2へSSHでログインする(手順の3.と4.) ![](https://exercises-aws.fml.org/ja/02_basic-setup/images/vocareum-console.png) - 接続先は**前頁でメモった**はずの**Public IPアドレス** - ユーザは ec2-user - 公開鍵は labsuser.pem - 公開鍵暗号認証(パスフレーズは無し) - 参考資料: [作成したEC2へSSHでログイン](https://exercises-aws.fml.org/ja/02_basic-setup/02-02_ssh-to-amazon-linux/) ``` [sshコマンドの書式 ssh -i 公開鍵 -l ユーザ サーバ(のIPアドレス) -i indiaのi (identityのi) -l limaのl (loginのl) ``` --- class: compact # サーバにWWWコンテンツを準備する(手順の5.と6.) 1. (サーバにログインしていますね?) 1. 入った先はホームディレクトリ(`/home/ec-user`)のはずです。 `pwd`コマンドを実行すると`/home/ec-user`と表示されるのが正しい。 違う場合`cd`コマンドを実行して**ホームディレクトリへ戻ってから先へ進んでください** (**以下の説明はホームで実行している前提**です) 1. `public_html`ディレクトリを作成します(`mkdir`コマンドを使う) 1. 自分のindex.htmlを今作成した`public_html`ディレクトリの中へ置いてください。 <br> このindex.htmlは**コンピュータネットワークの演習**で作成した**自分の学籍番号いりのHTML**です。 次の3方法のいずれか。どの案でもokですが素直に(a)が楽? <br> - (a) サーバ上で作成(viエディタはある):`vi public_html/index.html`を実行し作成&&編集 - (b) サーバ上でdownload: `curl http://www.ex2022.fml.org/~学籍番号/ > public_html/index.html` - (c) ブラウザで`http://www.ex2022.fml.org/~学籍番号/`にアクセスし、そのページのソース(HTML)を表示し、 自分の環境に保存する。 その保存したファイルをサーバの`public_html/index.html`へ`scp`コマンドでアップロードする ``` [書式] scp -i 公開鍵 保存したファイル名 ec2-user@サーバのIPアドレス:public_html/index.html ``` --- class: compact # WWWサーバを起動し動作を確認する(手順の7.と8.) <div class=footnote> <small> (脚注) 特権あつかいされている80/tcpでwww.pyを起動するため、 <B>sudoコマンドを使い管理者モードで</B>www.pyを起動しています (あんまりよくないけどね<-発展:なんでだ?) </small> </div> - (**以下の説明はホームで実行している前提**です) - WWWサーバのプログラム`www.py`を入手する - www.pyのソースコードは[こちら](examples/www.py) - **サーバ上で**curlコマンドを使いダウンロードしてください ``` curl -o www.py http://www.ex2022.fml.org/~fukachan/www.py ``` - www.pyを起動してください ``` sudo python3 www.py & ``` 注: 右端の`&`がないと、それ以上コマンドを受け付けません --- class: compact # フィルタを開ける(手順の9.) - 6/30の口頭試問の答え(の一部)が体感できるというベストタイミングな演習! - 作成した**WWWサーバをインターネットから見えるようにしてください** - **初期状態ではAWS(のVPC内に作る)サーバ群はインターネットからアクセス出来ません**。 これは、とても正しい設計です。 よく分からない人がサーバ立てると確実にやられるので、 そもそも素人の作成したサーバにインターネットから接触させちゃダメ <br> 典型例: wordpress とかのコンテンツ管理ソフトとかの類とかな! - WWWサーバを起動後**AWSの管理コンソールで設定**変更です(**フィルタを開けます**) - [セキュリティグループの設定](https://exercises-aws.fml.org/ja/appendix/aws/security-group/)画面で、 80/tcpつまりHTTPを許可してください - AWS用語だと「**セキュリティグループのインバウンドルールでHTTPを許可**」 ``` [参考] アクション PROTOCOL SRC_IP DST_IP SRC_PORT DST_PORT PERMIT TCP ANY ANY ANY 80 ``` --- class: compact # 動作確認(手順の10.) - **このページは自分のPC上での操作**です - www.pyを修正したので、もういちどwww.pyをダウンロードしてください - 自分のブラウザ(自分のPC上のブラウザ)から作成したホームページが見えることを確認 - サーバの場所 ... 作成したEC2のPublic IPアドレス - ポート ... デフォルトの 80/tcp つまり http - 例: もし Public IPアドレスが 10.20.30.40 (**<- 各自ことなる**)の場合なら - アクセス先 URL は`http://10.20.30.40/`です - アクセス先 URL `http://10.20.30.40/`で次のようなページが表示されればok <br> (表示の**学籍番号は各自ことなります**) ``` It (b2902900's homepage) works ```