--- tags: 1091, lsa --- - Book mode https://hackmd.io/@ncnu-opensource/book Week 09(2020/11/19) - LSA midterm exam === [TOC] ## 規則:  - 如有問題請舉手發問。 - 請在 AWS 上實作。 - 請勿編輯本頁面。 - 請勿以私訊或聊天室等任何方式彼此溝通。 - 當然也請不要直接實體溝通啦... 那算作弊哦 - 可以上網自由地找資料、補充這學期相對應的共筆頁面。 - 請確定執行正確,再找助教 DEMO,僅 **部份**題目 需要 DEMO - 會標記在題目上 - 除了 Webserver 外,DEMO 時,助教發現答案錯誤便 **無法** 擁有再更改的權利(即為該題錯誤) **We Are Watching You.** ## 1. SSH 5% - 請建立 3 台 AWS EC2 的 Ubuntu VM - 並將下列 ssh 公鑰寫入各個 VM 的特定檔案中,讓助教能以 **無密碼** 的方式 ssh 進你的所有 server 中 - P.S.: 助教擁有私鑰 :::success ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCMCsWRObWBj5mv8FdWFNEb17TDTnlVH6yT1QAOemfsCsjIc1VTTGi1t7HkQJegSJdORNJe2ezSU1vPYhuOCWsnzC2x7tD2aAhrs3SlecR5pMYyhfCsOW+hP8ypb6aaHFSMK49fQf2QGhg80z3pwF1CDIO/3SfhjZR2eA69IsoopgmZ71Q8XmS790GPCNCsBdMkHRgTqJGp8DloxLkuMJQr8ouzm9JpKnnq2Uh0QCHRuRlonKkt/TQXntLR7htaniHjGe/wOcqfzxYfGTLDsPP7rbgZ3tMdttB0IFqGi1jNCdmnpQH15LSY+GnapaBgQekwtIrXsGucUYhM8e2L9dDz 1091lsamideumtest ::: ## 2. 檔案權限與設定 5% 請在家目錄底下建一個叫 `1091-lsa-您的學號` 的資料夾,並依照以下條件設定存取權限 - 擁有者可以「 **讀、寫、執行** 」 - 跟擁有者同一群組的可以「 **讀、執行** 」 - 其他人就只想給它「 **讀** 」而已 ## 3. [需要 DEMO] Webserver 與 Load balance 65% 請建立 3 台 EC2 VM ~~(皆需完成 **題1—SSH** 才可實作)~~ 分別實作 Nginx, Apache, Lighttpd server 請依照要求完成以 IP , domain name, 或 port 區分 virtual host 並呈現出不同顯示畫面,詳細架構連接如下圖:  ### A. <span class="vm">VM-1</span> Nginx server 1. (10%) 輸入 ==<public_**ip**>== 會得到以下頁面 (請依照下列格式作答並顯示在網頁上): - (10%) 成功輸出並且輸出內容正確 - (5%) 成功輸出但輸出內容錯誤 - (0%) 未成功輸出 ```htmlmixed= <head> <meta charset='UTF-8'> <h1>課程相關</h1> <h2>中文全名:(請填入此處)</h2> <h2>英文全名:(請填入此處)</h2> <h2>英文縮寫:(請填入此處)</h2> </head> ``` 2. (5%)輸入 ==<public_**ip**>:8080== 會 proxy 到 [Mr.郭網頁](https://vincentinttsh.github.io/) :::success 請使用 [NO-IP 免費提供 public domain name]( https://www.noip.com/) 取得兩個如 **題3** 與 **題4** 規定之 domain name EX: (以學號 106213014 為例,請依據自己的學號做替換) 106213014-apache.hopto.org 106213014-lighttpd.hopto.org ::: 3. (20%) 輸入 ==<學號>-apache.hopto.org== 會導向 Apache server 的頁面 **(詳細格式請看 VM-2)** - (10%) ==:80 (port)== : 助教資訊 - (10%) ==:80 (port)/~<username> (預設使用者)== : 學生個人資訊 4. (15%) 輸入 ==<學號>-lighttpd.hopto.org== 會導向 Lighttpd server 的頁面 **(詳細格式請看 VM-3)** - (10%) ==:80 (port)== : 老師相關訊息 - (5%) ==:8080 (port)== : 連到 1sa.bluet.org 5. (15%)輸入 ==<public_domain_**name**>== 會在以下 3 個網頁間做 load balance - (5%) 網頁顯示 — 助教的名字 (Apache) - (5%) 網頁顯示 — 老師的資訊 (Lighttpd) - (5%) 網頁顯示 — 老師的網頁 (Lighttpd proxy) ### B. <span class="vm">VM-2</span> Apache server 1. 在 port = 80 時,請作答並以下列格式顯示內容: ```htmlmixed= <head> <meta charset='UTF-8'> <h1>助教們的中文名字</h1> <h2>(請在此處填寫所有助教名字,包含愛心助教共 5 位)</h2> </head> ``` 2. 網址後增加 `/~<username> (預設使用者)` 可 show 出以下學生資訊: ```htmlmixed= <head> <meta charset='UTF-8'> <h1>本次作答學生資訊</h1> <h2>姓名:(請填寫名字)</h2> <h2>學號:(請填寫學號)</h2> </head> ``` ### C. <span class="vm">VM-3</span> Lighttpd server 1. 在 port = 80(Default) 時,請作答並以下列格式顯示內容: ```htmlmixed= <head> <meta charset='UTF-8'> <h1>LSA 的老師</h1> <h2>中文名字:(請作答)</h2> <h2>英文全名:(請作答)</h2> <h2>常用 ID:(請作答)</h2> <h2>Telegram ID:(請作答)</h2> <h2>Facebook 個人檔案的名稱:(請作答)</h2> </head> ``` 2. 在 port = 8080 時,請 proxy 到 lsa.bluet.org ## 4. [需要 DEMO] 查詢主機狀態資訊 20% 1. (5%) 建立了許多服務後,想看一下 port 的佔用狀況,並希望能符合以下條件的方式呈現。 ```= address, port 要以數值方式呈現 只列出正在使用中的 port 要 show 出屬於每個 socket 的 PID 和 Program name 只要 TCP 協定 ``` 2. (5%) 請將**前面的指令** 的輸出,加以過濾,只顯示特定兩個欄位 **`Local Address`、`PID/Program name`** 的**結果**(不要求顯示欄位名稱) - 為了好看,這兩欄輸出時,中間請加一個空白 3. (5%) 續題二結果,而因 lab 做的東西 port 剛好都是 **`80`** 開頭,所以請再幫我過濾出包含 **80** 這個數值的列 4. (5%) 續題三結果,有個指令能將輸入的字串**顯示**於螢幕並同時**儲存**進指定的檔案中,請將前面指令的輸出結果同時顯示並保存進 **`/etc/output.txt`** 中 ## 5. [需要 DEMO] 安裝服務 15% 1. (5%) 請安裝 `proftpd` 服務並確認狀態為開啟 2. (10%) 請開啟匿名(anonymous)登入,能夠看到檔案 welcome.msg ## 6. Hostname / DNS 10% 1. (5%) 把 AWS 上的三台 server 的 **hostname** 改成 lsa-學號-{proxy or apache}, ex: (1) lsa-學號-nginx (2) lsa-學號-apache (3) lsa-學號-lighttpd :::info - 測試重開機後還是維持更改後的 hostname - 請確認 ping 跟 sudo 時都是正常的 - 在指令提示列的中 的顯示也是正確的(如下圖反白處)  ::: 2. (5%) ping www 時會自動尋找到 www.ncnu.edu.tw - 意即不論 ping 什麼東西,找不到時都會去尋找 ncnu.edu.tw <style> .vm { background-color: #CD5C5C; color: white; font-size: 20px; font-weight: bolder; border-radius: 50% 20% / 10% 40%; } </style>
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up