### 長話短說 三句 command 可以搞定 ```sh $ openssl genrsa -out key.pem 2048 $ openssl req -new -sha256 -key key.pem -out csr.pem $ openssl x509 -req -in csr.pem -signkey key.pem -out cert.pem ``` 搞掂,可以用來起住個 development environment 先。
### 在自己的主機上預備
在開發時,有時可能會需要到驗證主機 https 及 DNS 的服務,例如 OAuth 或是 Payment Gateway 等等,
我們可以在自己的主機用以下的 Command 來把自己主機的某一個 Port Tunnel 度 Remote 主機的某一個 Port。
```sh
$ ssh -f -N -T -R 9000:localhost:3000 root@<your-vps-ip>
```
##### -f
把服務在背景運行。
##### -R
是指把 localhost 上,Port 3000 的資料 Tunnel 到 Remote 主機上的 Port 9000 上。
##### root@<your-vps-ip>
目標主機的使用者及地址。
### 在 Remote 主機上預備
可以在 Remote 主機上裝上 Nginx 來進行 reverse proxy。
```sh
$ apt-get update
$ apt-get install nginx
```
然後在 nginx 的 config 設定好 reverse proxy 設定。
開一個新的檔案 `/etc/nginx/site-available/tunnel`,設定以下內容。
```sh
server {
listen 80;
location / {
proxy_pass http://127.0.0.1:9000;
}
}
```
*** 如果要使用 https 的話,就要裝返張 CERT 同埋 `proxy_pass` 要改返去 https。
在 `/etc/nginx/site-enable` 加入
然後就可以檢查 nginx 設定及重新啟動服務。
```sh
$ nginx -t
$ nginx -s reload
```
### S3
S3 (Simple Storage Service) 是 AWS 其中一個服務,主要用來儲存一些東西,可以是檔案,可以是文字,可以是什麼都可以。
當然雖然佢個名話自己係 simple... 但佢其實真係一 D 都唔 simple。又或者 simple 只係解作佢個功能好單純只係儲存東西。而東西可以被什麼人存取,怎樣寫入,權限等等... 就可以玩到好複雜。
### Cloudfront
Cloudfront 是一個由 AWS 提供的 CDN 服務,可以將你的資源 cache 去佢地既 edge location 度,等每個地區的人都可以用最少既時間去取得佢想要既資源。
### S3 檔案可以在 Public access
每一個放到 S3 的 Object 也是會有自己的 ACL (Access control list) 來控制權限,可以做得到一些很細緻的調整。不過在新版的 S3 內,就加入了 Bucket Policy 這個東西,這個可以說是整個 Bucket 內的權限描述。
不過上面要用到 Bucket Policy 的是有個前設,就是只可以套用到 Object owner 是 Bucket owner 的 Object 上。
我們可以通過 Cloudfront 設立新的 Distribution,在 origin 選取現有的 S3 Bucket。然後設定一個 OAI (Origin access identity),而這個 identity 就可以加入到 S3 的 Bucket Policy 內的 Principal 來限制 Cloudfront 存取 :
```js
"Principal": {
"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity EH1HDMB1FH2TC"
}
```
這樣就可以無痛把 S3 的內容經 Cloudfront public 出街了。
### 一次處理多個 docker container 的生命 在測試使用 docker 時常常都會進行生成/斬掉 container 的動作,在 command line 內一個一個斬掉重續實在太多字要打,以下幾個 command 可以省回不少的時間。 ### 一次過停用所有的 container ```sh $ docker kill $(docker ps -q) ``` ### 一次過移除所有的 container ```sh $ docker rm $(docker ps -a -q) ``` ### 一次過移除所有的 images ```sh $ docker rmi $(docker images -q) ``` ### 停用並移除 container ```sh $ docker rm -f <container_name> ``` 有了它們之後覺得非常方便 !
### 長話短說 每一次整個新 VM 出來試野都要搞個 GIT,同埋 Github 要改左一定要強制用 person access token 先可以登入,好難可以記得一個水蛇春咁長的 token 來用,所以不可能每次都打密碼來 clone 同埋 pull。 下面呢句係用來記住 git 登入資料的。 ```sh # 使用 store 方法來記低你的登入資料 $ git config --global credential.helper store ``` 另外如果需要 push 的話,就需要設定埋 user name 同埋 email 了。 ```sh # 設定 username # git config --global user.name user $ git config --global user.name YOURNAME # 設定 email # git config --global user.email user@example.com $ git config --global user.email YOUREMAIL ```
### 長話短說 Down interface ```sh # sudo ifconfig enp0s23 down // 舊方法 # sudo ip link set enp0s23 down ``` Up interface ```sh # sudo ifconfig enp0s23 up // 舊方法 # sudo ip link set enp0s23 up ```
### Error "The table XXX is full" 在起 ndb cluster 時很容易會遇到這個問題,原因有很多,以下會主要介紹幾個。 參考文件 : https://dev.mysql.com/doc/refman/8.0/en/mysql-cluster-ndbd-definition.html 以下這幾個項目如果的內容不夠的話,就會引起 The table is full 錯誤。 - DataMemory - IndexMemory - MaxNoOfOrderedIndexes - MaxNoOfUniqueHashIndexes 當然還有很多設定如果不夠大的話,都會出錯。上面只是其中一部份。