---
# System prepended metadata

title: 'TWCC [1]'

---

[![](https://img.shields.io/badge/Author-Chieh-blue?style=for-the-badge&logo=appveyor)](https://hackmd.io/@Chieh)

# TWCC [1]

## Deploy a simple server

Notes:

1. 開對外Port 
    - 可於 "網路與安全" > "安全姓群組" 裡面設定對外Port
    - 如果有架設反向代理伺服器，則還須於 "負載平衡" 裡面做設定對外Port。

2. 如果是設**虛擬運算**，則需要先行創建一個虛擬網路。

---
本篇可以了解:

- [x] 部屬一個簡單"對外"服務的HTTP Web伺服器。
- [x] 如何部屬有SSL證書的HttpS伺服器。

---
## Steps:

1. 於 "網路與安全" > "虛擬網路" > 點選 "+" : 創建一個網路，等待大概1~2分鐘做建置。

    ![](https://i.imgur.com/aMhmk3L.png)
    
    當狀態顯示: Active 即為可用。
    
2. 於 "虛擬運算" > 點選 "+" : 建立一個虛擬運算個體管理。
    本次我們選擇Ubuntu，如果需要GPU的需求可選擇T4版本。
    
    ![](https://i.imgur.com/PXffpM9.png)
    
    選擇規格之後點選網路。
    
    ![](https://i.imgur.com/w8ZJJDn.png)
    
    預設會自動選擇我們建立的default虛擬網路
    
    ![](https://i.imgur.com/rJ7mUJ0.png)
    
    設定容量空間。
    
    ![](https://i.imgur.com/zWq5yYv.png)
    
    建立一組登入用的金鑰，並下載下來，稍後我們會用這組密碼作為登入使用。
    
    ![](https://i.imgur.com/pSVfcHi.png)
    
    最後確認無誤，則建立。
    
    ![](https://i.imgur.com/FlMiDZF.png)
    
    等待數分鐘，狀態亮綠燈(Ready)則可使用。
    
3. 由我們local端做遠端登入此VM，可以點入"虛擬運算"，點選"連線"。
    如果我們建置的時候已經設有一組浮動IP，則可略過第一步，如果還沒配置，則可配置一組浮動IP。
    
    ![](https://i.imgur.com/U28a4L5.png)
    1. 首先，先限制檔案的權限 `chmod 400 /path/kp100000.pem`
    2. 登入 `ssh -i /path/kp100000.pem ubuntu@(public IP)`

4. 於 "網路與安全" > "安全行群組" 設定我們的Server需要使用的對外Port。

    ![](https://i.imgur.com/uBdYRCD.png)
    
    點選: 建立
    
    ![](https://i.imgur.com/hEMtdgC.png)
    
    由於我的Demo伺服器需要的port是5757，因此我設定5757，走tcp/ip。
    CIDR我們可以先設定 `0.0.0.0/0`，然後下一步，完成建立。

5. 最後一步，遠端登入，並啟動伺服器，於瀏覽器確認我們的服務是否成功啟動～
    啟動web server：
    ![](https://i.imgur.com/xWsD7I1.png)
    
    Check it:
    ![](https://i.imgur.com/epx1c7r.png)
    

至於如何產生 web server 部份，可以參考我的這篇 [如合輕鬆無腦快速產生一個Web Server。](https://hackmd.io/@Chieh/rJulJSsIc)

---
# 配置靜態IP

如果之後正式對外服務，不想持續使用浮動IP，則可以考慮創建一組靜態IP。
![](https://i.imgur.com/Hkh3GD4.png)

然後到我們的虛擬運算點選我們的個體，進入之後移除原本的公用IP，等待移除之後，重新配置並選擇剛剛所創建的那組靜態IP。

![](https://i.imgur.com/EZWq2Z7.png)


---
# 部屬一個Https的網站

首先我們要先去申請一個SSL的證書，而不是自行產生的。

免費的SSL我們可以從這邊先行申請：[sslforfree](https://www.sslforfree.com/)

![](https://i.imgur.com/k3nSMC1.png)

輸入你的IP或網域名，跟著步驟做，這邊我選擇http方式上傳檔案來做驗證。
驗證成功之後，即可下載一包zip檔案，裡面會有private.key, certificate檔等等。

然後我們可以把此檔案放到程式底下，啟動https時候使用。

回到 "網路與安全" > "安全行群組" 設定我們的Server需要使用對外Https的Port。

啟動https 伺服器，即可在瀏覽器上做查看：https://(公用IP):(port)

建議可以多做一步驟，到 "網路與安全" > "SSL憑證" 註冊一下該SSL證書。

![](https://i.imgur.com/qoKaCj3.png)

轉換方式可參考此篇：https://man.twcc.ai/@twccdocs/howo-lb-convert-cert-zh

```
$ openssl pkcs12 -export -out server.p12 -inkey server.key -in server.crt -certfile ca.crt

(Enter to skip the questions.)

$ base64 server.p12 | tr -d \\n 
```

複製產生出來的檔案，貼到 Base64編碼欄位。

最後可以在瀏覽器上查看一下，web server上證書發行資訊。

![](https://i.imgur.com/knKInQb.png)


---
# Reference:

可參考官方的文件：
- https://man.twcc.ai/@twccdocs/doc-vcs-main-zh/https%3A%2F%2Fman.twcc.ai%2F%40twccdocs%2Fvcs-overview-zh
- https://man.twcc.ai/@twccdocs/howto-vcs-lb-build-secure-web-handle-high-traffic-zh/https%3A%2F%2Fman.twcc.ai%2F%40twccdocs%2Fhowto-vcs-lb-build-secure-web-handle-high-traffic-intro-zh

---
# Troubleshooting

1. apt install 任何東西都會報錯
    ```
    ubuntu@vm1652408398792-2692774-iaas:~$ sudo apt install -y vim
    Reading package lists... Done
    Building dependency tree       
    Reading state information... Done
    vim is already the newest version (2:8.1.2269-1ubuntu5.7).
    0 upgraded, 0 newly installed, 0 to remove and 117 not upgraded.
    1 not fully installed or removed.
    After this operation, 0 B of additional disk space will be used.
    Setting up install-info (6.7.0.dfsg.2-5) ...
    /usr/sbin/update-info-dir: 11: /etc/environment: dHdzeHBrZzI4Nzo3ODJna3B4c3d0: not found
    dpkg: error processing package install-info (--configure):
     installed install-info package post-installation script subprocess returned error exit status 127
    Errors were encountered while processing:
     install-info
    E: Sub-process /usr/bin/dpkg returned an error code (1)
    ```
    
    解決：
    ```
    sudo mv /var/lib/dpkg/info/install-info.postinst /var/lib/dpkg/info/install-info.postinst.bad
    ```
    
    Source: https://askubuntu.com/questions/1069702/dpkg-error-processing-package-install-info