Commands <<
Previous Next >> Midterm
HW2
作業二 (20%): 在各種不同環境下的操作系統中配置 Reeborg's world (原始碼)
在 HW1 所建立的各種 nginx 伺服器與個人網站中配置 Reeborg 機器人程式, 並將所練習的 Python 程式放入網站的 downloads 目錄中, 逐步強化練習個人的 Python 程式語法. 並隨著各式課程的學習, 嘗試利用網際程式方法解題.
在 Windows 利用 Virtualbox 建立 wXX.mde.nfu.edu.tw 虛擬主機伺服器:
- 下載 win10.vdi
- 在 Virtualbox 7.1 之前的版本配置既有的虛擬主機檔案, 記憶體配置 8GB 以上, 將虛擬主機名稱設為 wXX, network 設為橋接至電腦的實體網卡
- 首次啟動 wXX 虛擬主機, 修改管理者密碼, 利用 IPv6 說明設定所分配到的 IPv6 網路位址
- 確定網路連線正常, 並可透過 proxy 設定讓瀏覽器連線至任何網站, 允許遠端桌面連線後關閉虛擬主機
- 透過 nssm 與 C:\Program Files\Oracle\VirtualBox\VBoxHeadless.exe 讓所建立的虛擬主機成為實體主機的服務
- 以管理者身分啟動 cmd 後, 執行實體目錄位置下的 nssm.exe, 例如: E:\portable_wcm2025\data\nssm install wXX
- 利用 C:\Program Files\Oracle\VirtualBox\VBoxHeadless.exe -startvm wXX 指令, 以 wXX 服務啟動
- 以滑鼠右鍵點擊"開始", 選擇"電腦管理", 將 wXX 服務設為"延遲自動啟動"後, 啟動 wXX 虛擬主機
- 遠端登入 wXX 虛擬主機後, 下載 nginx 並完成設定 , 讓 wXX.mde.nfu.edu.tw 可以透過 http 與 https 啟動
在 wXX.mde.nfu.edu.tw 主機設定 certbot, 以 https://wXX.mde.nfu.edu.tw 啟動:
- 可以直接讓 https://wXX.mde.nfu.edu.tw 伺服 Reeborg: https://mde.tw/reeborg/
- 或者結合 waitress 以 https://wXX.mde.nfu.edu.tw 編輯作業倉儲的動態網站內容, 並讓靜態網站透過 http://wXX.mde.nfu.edu.tw 連線
基本設定檔案: nginx.conf, start_waitress.py
若要將 nginx port 80 轉為倉儲的靜態內容, 則可以採用以下設定:
nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen [::]:80 ipv6only=on;
server_name wXX.mde.nfu.edu.tw;
#root html;
# 將 port 80 http 連結到倉儲的靜態網站
# 將 root 指向靜態倉儲目錄, 特別注意不要使用反斜線
root C:/Users/wcm/Downloads/portable_wcm2025_w10/data/tmp/wcm2025_hw;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
server {
listen [::]:443 ssl ipv6only=on;
http2 on;
server_name wXX.mde.nfu.edu.tw;
ssl_certificate fullchain.pem;
ssl_certificate_key privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
# https port 443 的連結資料是由近端 IPv6 port 8080 所提供
# port 8080 的資料是有 python start_waitress.py 提供
proxy_pass http://[::1]:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
}
start_waitress.py
from waitress import serve
from cmsimde import flaskapp
serve(flaskapp.app, listen='localhost:8080', threads=8)
之後, 若已經將 http 指向倉儲的靜態網站, 就可以利用 git clone https://github.com/mdecycu/reeborg.git 將機器人程式放入 reeborg 目錄中, 並且以下列連結開啟:
http://w99.mde.nfu.edu.tw/reeborg/?lang=en&mode=python&menu=worlds%2Fmenus%2Fselect_collection_en.json&name=Alone&url=worlds%2Ftutorial_en%2Fharvest1.json&editor=python%2Fharvest1.py
Commands <<
Previous Next >> Midterm