--- title: 作業系統考試大補帖 --- # 指南瀏覽 - [灌Linux系統] - [Linux操作] - [ssh連線] - [Python Django操作(Windows cmd)] - [Python Django操作(Linux)] - [Nginx proxy事前準備] - [Nginx proxy正式操作] - [將SSL Error移除] - [將Django與Nginx結合] ## 灌Linux系統 1. 前往[proxmox](https://10.40.18.94:8006/#v1:0:18:4:::::::) 2. 輸入使用者和密碼 ![image](https://hackmd.io/_uploads/B1eUAR5fgx.png) >[!Warning][Realm] 記得改成Proxmox VE authentication server > 3. 使用Console 即可看到畫面 ![image](https://hackmd.io/_uploads/rkI-yyjGeg.png) 4. 按下 Start Now後 看到下方的[PROMOX]LOGO 就按下Esc鍵 ![image](https://hackmd.io/_uploads/ryO2JJjfxx.png) >[!Warning]如果沒有及時按Esc鍵 請進行[重開]步驟: > ===[重開] 開始 1. 按Commands下的[關機] ![image](https://hackmd.io/_uploads/SkPM-kiMgg.png) 2. 按Start Now ![image](https://hackmd.io/_uploads/BypnWkjflg.png) [重開] 結束=== 5. 進入這個畫面後 按數字鍵2 (對應選項為:DVD/CD...) ![image](https://hackmd.io/_uploads/ryldfJsGex.png) 6. 選擇Install ![image](https://hackmd.io/_uploads/SkzfXyoMxl.png) 7. 選擇語言 (English) ![image](https://hackmd.io/_uploads/HJ5BXyjfgg.png) (※這個符號後的文字用於確認您是否在正確的頁面) ※Choose the language to be used for the installation... 8. 選擇時區 (other) ![image](https://hackmd.io/_uploads/Byq94Jjzeg.png) ※The selected location will be used to set your... ================================================= (Asia) ![image](https://hackmd.io/_uploads/SkiuBJjfll.png) ※The selected location will be used to set your... ================================================= (Taiwan 按字母鍵 T 就可以找到) ![image](https://hackmd.io/_uploads/ry6eIJofxl.png) ※The selected location will be used to set your... 9. 選擇區域(United States) ![image](https://hackmd.io/_uploads/Hkb8UkiGex.png) ※There is no locale defined for the combination... 10. 選擇鍵盤(American English) ![image](https://hackmd.io/_uploads/Hy8EPJoGex.png) ※Keymap to use: 11. 設定電腦名稱(以我的舉例 user122214109) ![image](https://hackmd.io/_uploads/HJ7cOksMee.png) ※Please enter the hostname for this system. 12. 設定網域(以我的舉例 user122214109) ![image](https://hackmd.io/_uploads/r1ixtJozee.png) ※The domain name is the part of your Internet... 13. 設定密碼 >[!Warning]要輸入兩次 不要忘記密碼! >![image](https://hackmd.io/_uploads/Sk12Ykjfxx.png) ※You need to set a password for 'root'... 第二次輸入 ![image](https://hackmd.io/_uploads/rkob5yofex.png) ※Please enter the same root password... 14. 設定使用者名稱 >[!Warning]要輸入兩次 不要忘記名稱! > ![image](https://hackmd.io/_uploads/Bkx5qkszle.png) ※a user account will be created for you... 第二次輸入 ![image](https://hackmd.io/_uploads/ByEAqJjMlx.png) ※Select a username for the new account... 15. 設定使用者密碼 >[!Warning]要輸入兩次 不要忘記密碼! > ![image](https://hackmd.io/_uploads/Sy1oiyiflx.png) ※A good password will contain a mixture of letters... 第二次輸入 ![image](https://hackmd.io/_uploads/BJ1-n1iMxe.png) ※Please enter the same user password... 接下來等它跑完 16. 選擇安裝方式 (Guided - use entire disk) ![image](https://hackmd.io/_uploads/ryWt2yoMle.png) ※The installer can guide you through... 17. 選擇磁碟(是的 只有一個選項) ![image](https://hackmd.io/_uploads/HkdAn1jfll.png) ※Note that all data on the disk you select... 18. 檔案管理方式 (All files in one partition (recommended for new users)) ![image](https://hackmd.io/_uploads/SJtNpJoMeg.png) ※Selected for partitioning:... 19. 確定磁碟分割 (Finish partitioning and write changes to disk) ![image](https://hackmd.io/_uploads/rJZopkjGxe.png) ※This is an overview of your currently... 20. 再次確認 (Yes) ![image](https://hackmd.io/_uploads/ryWG01oGgx.png) ※If you continue, the changes listed below will be... 接下來等它跑完 21. 是否要使用額外的磁碟 (No) ![image](https://hackmd.io/_uploads/BJaj01sfll.png) ※Scanning your installation media finds the label:... 22. 選擇鏡像站國家 (Go Back 請使用Tab鍵) ![image](https://hackmd.io/_uploads/SkqQ1xsGex.png) ※The goal is to find a mirror of the Debian... 23. 是否不使用鏡像站 (Yes) ![image](https://hackmd.io/_uploads/rka_yeofgg.png) ※No network mirror was selected 24. 是否允許收機資料 (No) ![image](https://hackmd.io/_uploads/H1P01ljzxl.png) ※The system may anonymously supply the distribution... 25. 選擇要安裝的套件 (直接按Enter) ![image](https://hackmd.io/_uploads/B1uSgxszxx.png) ※At the moment, only the core of the system... 接下來等它跑完 26. 安裝GRUB開機程式 (Yes) ![image](https://hackmd.io/_uploads/HJM3gejzlg.png) ※It seems that this new installation is the only... 27. GRUB開機程式安裝位置 (/dev/sda) ![image](https://hackmd.io/_uploads/H1TebeiGex.png) ※You need to make the newly installed system bootable... 接下來等它跑完 28. 安裝完成 (Continue) ![image](https://hackmd.io/_uploads/Bk98ZlsGle.png) ※Installation is complete... 接下來會跑出一堆畫面 不要理他 不要按任何鍵 直到看到以下畫面↓ ![image](https://hackmd.io/_uploads/rJvJzejMll.png) ## Linux操作 1. 取得權限 ``` su ``` 然後輸入密碼 ![image](https://hackmd.io/_uploads/HJPwBgozle.png) >[!Warning]@前的root表示您現在擁有最高權限 在刪除任何東西時請特別注意!!! > 2. 移除預設套件來源 ``` rm /etc/apt/sources.list ``` 3. 新增本地套件來源 ``` echo 'deb [trusted=yes] http://10.40.8.78/my-apt-repo stable main' | tee /etc/apt/sources.list.d/localrepo.list ``` 4. 更新 ``` apt update ``` 5. 升級 ``` apt upgrade -y ``` 6. 安裝 ``` apt install -y sudo ssh wget curl ``` ## ssh連線 1. 打開Windows的cmd ![image](https://hackmd.io/_uploads/r1pxCRoGgx.png) 2. 前往Linux查找ip ``` ip a ``` ![image](https://hackmd.io/_uploads/BkSFCAsGlx.png) 找到ip 在2:的地方找到[inet] 畫面上是:10.40.18.171 請記住自己的 3. ssh連線 ``` ssh -l user122214109 10.40.18.171 ssh -l [你的Linux帳號] [你剛剛ip a 的ip] ``` ![image](https://hackmd.io/_uploads/SJFt-J2Glx.png) ``` yes ``` ![image](https://hackmd.io/_uploads/rJ42Wy2Glg.png) ``` 輸入密碼 打字時畫面不會動是正常的 ``` ![image](https://hackmd.io/_uploads/SJ1JfJhzll.png) 看到綠色的字 說明ssh連線成功 ※指令補充 登出 ``` logout ``` ![image](https://hackmd.io/_uploads/H1IX6k2Mxe.png) ## Python Django操作(Wincdows cmd) 1. 前往D槽 (C/D槽無影響 但D槽較乾淨) ``` D: ``` ![image](https://hackmd.io/_uploads/HynI6J2Mll.png) 2. 操作 ※為了操作流暢性 接下來會減少配圖 建立專案目錄 ``` mkdir pyTest ``` 進入該目錄 ``` cd pyTest ``` 建立env虛擬環境(此步驟需要等他一下 完成後畫面不會有改動) D:\pyTest>py -m venv env ``` py -m venv env ``` 啟動虛擬環境(成功啟動後 會有(env) 表示您正在虛擬環境) D:\pyTest>env\Scripts\activate ``` env\Scripts\activate ``` >[!Tip] ※指令補充 請依情況決定是否要執行 ※退出虛擬環境 > ``` deactivate ``` 升級pip (env)D:\pyTest>py -m pip install -U pip ![image](https://hackmd.io/_uploads/SJfX-x3Gel.png) ``` py -m pip install -U pip ``` 在虛擬環境中安裝套件Django (env)D:\pyTest>pip install django ![image](https://hackmd.io/_uploads/H1twZg2Mll.png) ``` pip install django ``` 測試Django是否正確安裝 (env)D:\pyTest>py -m django --version ![image](https://hackmd.io/_uploads/H1tTWg3Geg.png) ``` py -m django --version ``` 3. 建立Django專案 先回到D槽 ``` cd.. ``` ![image](https://hackmd.io/_uploads/rkA1dM2fel.png) 建立專案 D:\>django-admin startproject myweb ``` django-admin startproject myweb ``` 進入myweb D:\>cd myweb ``` cd myweb ``` 啟動web server D:\myweb>py manage.py runserver ``` py manage.py runserver ``` ![image](https://hackmd.io/_uploads/ByYeYM2Geg.png) >[!Tip] ※指令補充 請依情況決定是否要執行 ※關閉web server > ``` Ctrl C ``` ## Python Django操作(Linux) ※接下來使用cmd ssh連線 ※可以先執行 su 獲得root權限 1. 建立Virtual Enviornment(操作環境) ``` sudo apt-get install python3-venv ``` ![image](https://hackmd.io/_uploads/HkBdjM2Gxl.png) 打Y (接下來等它跑完) ``` cd /home/user122214109 cd /home/[你自己的user名稱] ``` ``` python3 -m venv myvenv source myvenv/bin/activate ``` ![image](https://hackmd.io/_uploads/ryfu2MnGel.png) 前面有(myvenv)表示成功建立虛擬環境 安裝Django ``` pip install Django ``` ![image](https://hackmd.io/_uploads/r1oT2Ghzxe.png) 建立專案 ``` django-admin startproject myweb cd myweb python manage.py runserver ``` ![image](https://hackmd.io/_uploads/H1uw0G3Meg.png) 看到這個畫面(紅色字、黃色字)不用怕 這是正常的 代表您有成功啟動Django 還有一些東西要調整 我們先將伺服器關掉 ``` Ctrl C ``` ![image](https://hackmd.io/_uploads/BJu4JXnfeg.png) ``` cd myweb nano settings.py ``` 會進入這個畫面↓ ![image](https://hackmd.io/_uploads/Skji1XnMll.png) 請找到 [ALLOWED_HOSTS] ![image](https://hackmd.io/_uploads/BkCyxm3zxg.png) 改成這樣↓ ![image](https://hackmd.io/_uploads/S1a8eQhzgg.png) ``` ALLOWED_HOSTS = ['127.0.0.1' , '10.40.18.171'] ALLOWED_HOSTS = ['127.0.0.1' , '您自己的ip'] (如果忘記自己的ip 請到Linux打ip a) ``` 改好之後 按Ctrl X 按Y 按Enter 回到這個畫面 ![image](https://hackmd.io/_uploads/r1WeGm2zxx.png) (如果你的畫面有之前執行的指令 是正常的 我的畫面經過clear處理) 啟動伺服器 ``` python manage.py runserver ``` 會發生錯誤 這是正常的 ![image](https://hackmd.io/_uploads/r1duGm3zxl.png) 請先執行: ``` cd .. (請注意cd和..中有空格) ``` ![image](https://hackmd.io/_uploads/HyzQX7hGee.png) 再啟動伺服器 ``` python manage.py runserver 0.0.0.0:8000 0.0.0.0:8000 一定要打 ``` ![image](https://hackmd.io/_uploads/H1nSmQ2Ggg.png) 在瀏覽器輸入 ``` 10.40.18.171:8000 [您自己的ip]:8000 ``` ![image](https://hackmd.io/_uploads/rymhSX3zle.png) 完成 ## Nginx proxy事前準備 先確認位置 ![image](https://hackmd.io/_uploads/HyoYd73Mll.png) 我們的伺服器正在啟動中(Django操作) 先 Ctrl C 關閉伺服器 ![image](https://hackmd.io/_uploads/r1jRu7hzgg.png) 然後關閉虛擬環境 ``` deactivate ``` ![image](https://hackmd.io/_uploads/HkM8tXnMgg.png) 接著回到根目錄 ``` cd ``` ![image](https://hackmd.io/_uploads/S1OuK7nzel.png) 現在我們開始正式的Nginx proxy ## Nginx proxy正式操作 ※為了操作流暢性 接下來會減少配圖 1. 更新系統套件資料庫 ``` sudo apt update sudo apt upgrade -y ``` 2. 安裝Nginx ``` sudo apt install nginx -y ``` 3. 確認Nginx服務狀態 ``` sudo systemctl status nginx ``` ![image](https://hackmd.io/_uploads/rJ-hi72flg.png) 看到這個畫面 請按 Ctrl C 就可以繼續操作了 如果不行 再按Enter 就可以繼續操作了 4. 安裝OpenSSL ``` sudo apt install openssl -y ``` 5. 驗證OpenSSl版本 ``` openssl version ``` ### 建立自簽SSL憑證 1. 建立存放憑證的目錄 ``` sudo mkdir -p /etc/nginx/ssl ``` 2. 生成私鑰和自然憑證(請直接複製貼上 反斜線\ 是因為指令太長) ``` sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \ -keyout /etc/nginx/ssl/nginx.key \ -out /etc/nginx/ssl/nginx.crt ``` 執行成功後 會出現以下畫面↓ ![image](https://hackmd.io/_uploads/rJJqz4nGee.png) 請看到畫面上的 Country Name(2 letter code)[AU]: 接下來會有: - 國家名稱 (Country Name) - 地區名稱 (State or Province Name) - 城市名稱 (Locality Name) - 組織名稱 (Organization Name) - 組織單位名稱 (Organizational Unit Name) - **通用名稱 (Common Name)** - 電子郵件地址 (Email Address) 我們的重點是 **通用名稱 Common Name** 其他部分直接按Enter **Common Name (e.g. server FQDN or YOUR name) []:** ``` st109.114os.tw st<您的學號>.114os.tw ※正式考試中可能會更動 這裡先以教材為例 ``` ![image](https://hackmd.io/_uploads/H1VdE42Mxl.png) 3. 設定權限 ``` sudo chmod 400 /etc/nginx/ssl/nginx.key sudo chmod 444 /etc/nginx/ssl/nginx.crt ``` ### 基本SSL設定 1. 編輯網站配置文件 ``` sudo nano /etc/nginx/sites-available/your_domain ※這段指令中的your_domain是檔案名稱 如果改成其他名稱 請自行記住 ``` 會進入這個畫面↓ ![image](https://hackmd.io/_uploads/SJQLI4nflx.png) 2. 添加以下配置(※這段文字中的 st109.114os.tw 請改成先前設定的網域名稱) 可以使用txt用以編輯 ``` server { listen 80; server_name st109.114os.tw www.st109.114os.tw; #這裡要改 # HTTP 重定向到 HTTPS return 301 https://$host$request_uri; } server { listen 443 ssl; server_name st109.114os.tw www.st109.114os.tw; #這裡要改 # SSL 憑證設定 ssl_certificate /etc/nginx/ssl/nginx.crt; ssl_certificate_key /etc/nginx/ssl/nginx.key; # SSL 協議設定 ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256'; # SSL 會話設定 ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; ssl_session_tickets off; # HSTS 設定 (HTTP Strict Transport Security) add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; # 網站根目錄 root /var/www/html; index index.html index.htm index.nginx-debian.html; location / { try_files $uri $uri/ =404; } } ``` 畫面如下↓ ![image](https://hackmd.io/_uploads/B10nPNhfgx.png) 接下來 按Ctrl X 按Y 按Enter 3. 啟用網路配置 ``` sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/ sudo ln -s /etc/nginx/sites-available/你的檔案名稱 /etc/nginx/sites-enabled/ ※這裡有 your_domain 的檔案名稱 記得要改 sudo nginx -t sudo systemctl reload nginx ``` 4. 測試SSL配置 ``` echo '<!DOCTYPE html><html><head><meta charset="UTF-8"></head><body><h1>SSL 測試頁面</h1><p>Nginx SSL 設定成功!</p></body></html>' | sudo tee /var/www/html/index.html ``` ※原本的上課教材會有亂碼 亂碼問題已解決 5. 在瀏覽器上輸入 ``` 10.40.18.171 您自己的ip ※不用打:8000 :8000是Django 我們現在是Nginx ``` ![image](https://hackmd.io/_uploads/SkAj9VnMlg.png) 如果您瀏覽器輸入您的網域 ``` 例如 st109.114os.tw ``` 會出現以下畫面↓ ![image](https://hackmd.io/_uploads/Hkhbj42Mle.png) 因為我們還沒有設定DNS ### 設定BIND9 DNS 伺服器 1. 安裝BIND9 ``` sudo apt install bind9 bind9utils dnsutils -y ``` 2. 編輯本地區域設定 ``` sudo nano /etc/bind/named.conf.local ``` 會出現以下畫面↓ ![image](https://hackmd.io/_uploads/BydO64hMex.png) 3. 添加區域配置 (st109.114os.tw 請改成自己的網域) ``` # 前向區域 (Forward Zone) # 這裡要改 zone "st109.114os.tw" { type master; # 這裡要改 file "/etc/bind/zones/db.st109.114os.tw"; allow-transfer { none; }; }; ``` 請參考以下畫面↓ ![image](https://hackmd.io/_uploads/HkQVZSnfll.png) 按 Ctrl X 按Y 按Enter 4. 創建區域文件目錄 ``` sudo mkdir -p /etc/bind/zones ``` 5. 創建前向區域文件 ``` sudo cp /etc/bind/db.local /etc/bind/zones/db.st109.114os.tw sudo cp /etc/bind/db.local /etc/bind/zones/db.[這裡要改] ``` 6. 編輯前向區域文件 ``` sudo nano /etc/bind/zones/db.st109.114os.tw sudo nano /etc/bind/zones/db.[這裡要改] ``` 進入以下畫面↓ ![image](https://hackmd.io/_uploads/SJyKfShfgl.png) 改成 (st109.114os.tw請改成自己的網域 10.40.18.171 請改成自己的ip) (如果忘記自己的ip 請前往Linux 輸入ip a) ``` $TTL 604800 @ IN SOA ns1.st109.114os.tw. admin.st109.114os.tw. ( 2022051501 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS ns1.st109.114os.tw. @ IN A 10.40.18.171 ns1 IN A 10.40.18.171 www IN A 10.40.18.171 ``` 請參考以下畫面(將原本的內容覆蓋) ![image](https://hackmd.io/_uploads/SJlaEShGle.png) 按 Ctrl X 按Y 按Enter 7. 檢查區域文件語法 ``` sudo named-checkzone st109.114os.tw /etc/bind/zones/db.st109.114os.tw sudo named-checkzone [這裡要改] /etc/bind/zones/db.[這裡要改] ``` ![image](https://hackmd.io/_uploads/SyQG8B3fgg.png) 8. 重啟BIND9 ``` sudo systemctl restart bind9 sudo systemctl status bind9 ``` ![image](https://hackmd.io/_uploads/Hk1hDS3flg.png) 看到這個畫面 請按 Ctrl C 就可以繼續操作了 如果不行 再按Enter 就可以繼續操作了 9. 設定乙太網路 在Windows下方搜尋"控制台" ![image](https://hackmd.io/_uploads/r1jgFS2zxx.png) 點擊"網路和共用中心" ![image](https://hackmd.io/_uploads/B1CNFShzgl.png) 點擊"乙太網路 2"(淺藍色字樣) ![image](https://hackmd.io/_uploads/rkzuKSnGeg.png) 點擊"內容" ![image](https://hackmd.io/_uploads/ry5RYB2Gxe.png) 點兩下"網際網路通訊協定第4版(TCP/IPv4)" ![image](https://hackmd.io/_uploads/rJUW9r2fxe.png) 將"慣用DNS伺服器(P)"的ip改成自己的ip → 改好後按"確定" ![image](https://hackmd.io/_uploads/Hk-3cBhflx.png) 看到類似的警告 按"是" ![image](https://hackmd.io/_uploads/H1yQoHnflx.png) 剩下的對話框都按"確定"或"關閉" 接下來在瀏覽器輸入 ``` st109.114os.tw [自己的網域] ``` ![image](https://hackmd.io/_uploads/rJ5ajH3Gex.png) 按"進階"(在下方藍色按鈕的左邊) 往下滑 ![image](https://hackmd.io/_uploads/SJde2HnMll.png) 按"繼續前往st109.114os.tw網站(不安全)" 此處的網域會是自己的網域 ![image](https://hackmd.io/_uploads/rJrV2Hhfeg.png) 完成 ## 將SSL Error移除 1. 下載火狐FireFox瀏覽器 在瀏覽器搜尋火狐 ![image](https://hackmd.io/_uploads/BJalpHnGex.png) 2. 選擇第一個(LOGO黑色+綠色的那一個) ![image](https://hackmd.io/_uploads/HkeBTHhfge.png) 3. 點選"下載Firefox" ![image](https://hackmd.io/_uploads/SJS66HnMxe.png) 4. 按"存檔" ![image](https://hackmd.io/_uploads/BylkRB3Mle.png) 5. 安裝Firefox(以下稱火狐) ![image](https://hackmd.io/_uploads/rJYm0r3zge.png) 6. 在火狐中輸入 → 點選"進階" ``` st109.114os.tw [您自己的網域] ``` ![image](https://hackmd.io/_uploads/S1Zke8nGxe.png) 7. 往下滑 → 點選"接受風險並繼續" ![image](https://hackmd.io/_uploads/B1GQgUnMex.png) 8. (因作業失誤 沒有圖片 但您一定可以) 關掉並重開網頁 完成 ![image](https://hackmd.io/_uploads/HJnsWU3Mxe.png) ## 將Django與Nginx結合 1. 更改配置 ``` sudo nano /etc/nginx/sites-available/your_domain ``` 會看到以下畫面↓ ![image](https://hackmd.io/_uploads/HkAm4U3Mee.png) 請將location部分改成 ``` location / { proxy_pass http://127.0.0.1:8000; 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; } ``` 請參考以下畫面↓ ![image](https://hackmd.io/_uploads/ryjl9vnMlx.png) 按Ctrl X 按Y 按Enter 2. 測試並重新載入配置 ``` sudo nginx -t sudo systemctl restart nginx ``` 3. 更改Django設定 ``` python3 -m venv myvenv source myvenv/bin/activate ``` ``` cd /home ls ``` ![image](https://hackmd.io/_uploads/S1rHvL3Mle.png) 我的是user122214109 您的應該會不一樣 ``` cd user122214109 cd myweb cd myweb ※檔案結構是myweb中還有一個myweb 所以執行兩次 nano settings.py ``` 會進入這個畫面↓ ![image](https://hackmd.io/_uploads/r1NfuI2Glg.png) 找到 ``` ALLOWED_HOSTS = ['127.0.0.1' , '10.40.18.171'] ALLOWED_HOSTS = ['127.0.0.1' , '您自己的ip'] ``` 改成 ``` ALLOWED_HOSTS = ['127.0.0.1' , '10.40.18.171' , 'st109.114os.tw'] ALLOWED_HOSTS = ['127.0.0.1' , '您自己的ip' , '您自己的網域'] ``` 請參考以下畫面↓ ![image](https://hackmd.io/_uploads/B1MpuIhfee.png) 按Ctrl X 按Y 按Enter 執行 ``` cd .. (請注意cd和..中有空格) ``` ``` python manage.py runserver 0.0.0.0:8000 0.0.0.0:8000 一定要打 ``` 如果看到以下問題↓ ![image](https://hackmd.io/_uploads/r1DhKU2Gee.png) 請執行 ``` pip install django ``` 再執行 ``` python manage.py runserver 0.0.0.0:8000 ``` 在火狐中重新開啟st109.114os.tw[您自己的網域] 完成 ![image](https://hackmd.io/_uploads/S1C57vhzgx.png)