顯示具有 aws 標籤的文章。 顯示所有文章
顯示具有 aws 標籤的文章。 顯示所有文章

2022-06-29

限制 CloudFront CDN 的讀取

限制 CloudFront CDN 的讀取

使用 CloudFront 的 CDN 協助非公開 S3 資料的傳輸 (尤其是影片檔和大量的圖檔)

這兩篇介紹的很詳儘:

https://deliciousbrains.com/wp-offload-media/doc/cloudfront-setup/ https://deliciousbrains.com/wp-offload-media/doc/serve-private-media-signed-cloudfront-urls/

A. Create a free HTTPS Certificate

建立免費的 SSL/TLS 認證,建立此認證的用意是讓 CloudFront 可以使用,並指定你自己的網域而不是 CloudFront 提供的預設網域。 注意事項: 1.在 Certificate Manager 建立認證。 2. 要指定區域為 us-east-1 (N. Virginia) 3. Request a public certificate 4. 網域使用包含子網域的設定,例如「.shinder.cc」 5. 使用 DNS Validation 的方式驗證網域

B. Create an Amazon CloudFront Origin Access Identity

建立 OAI 是讓 CloudFront 可以透過 OAI 去讀取 S3 的資料,並同步。這個動作要在設定 CloudFront distribution 前設定,才會是最方便處理的。OAI 的位置在 CloudFront 頁面左側 "Security" > "Origin access identity"。

C. Create an Amazon CloudFront distribution

建立時指定 S3 bucket,並指定使用 OAI,更新 S3 bucket 存取政策。 設定自訂的網域 Alternative domain name (CNAME),並輸入設定第一個動作申請的 SSL 認證。

D. Add a Custom Domain (CNAME) to the distribution

設定 DNS,以自訂的網域指向 CloudFront 預設的網域。

E. Create an Amazon CloudFront Key Pair

在主帳號的下拉選單,點選 Security Credentials 進入 CloudFront Key Pairs 分頁,以建立 key pair。 此組 key pair 用來產生可讀取 CDN 的網域或 cookie。

F. Create a New Amazon CloudFront Behavior for Private Media

在 CloudFront distribution 項目內設定 behavior 設定可讀取的路徑(資料夾前綴), Restrict Viewer Access

G. 使用 aws-cloudfront-sign

最後使用 aws-cloudfront-sign 套件,來產生簽證的 URL。

2020-12-07

定期備份 mongodb 並上傳到 s3

定期備份 mongodb 並上傳到 s3

使用 mongodump 滙出資料庫,並以 tar 壓縮,再以 s3cmd 上傳至 AWS S3 備份。

寫成 backup-mongo.sh,搭配 crontab 就可以定時備份了!以下中文的部份請自行換成真實資料:

#!/bin/bash # 設定當日日期字串為變數值 today=`date +"%Y-%m-%d"` # 將資料庫倒至暫存資料夾 /usr/bin/mongodump -h 芒果主機 -u 芒果用戶 -p 用戶密碼 --authenticationDatabase admin --db my_database --out "/home/ubuntu/mongo_data/bk-${today}" # 壓縮資料夾 /usr/bin/tar -zcvf "/home/ubuntu/mongo_data/my_database-${today}.tar.gz" -C "/home/ubuntu/mongo_data/bk-${today}" my_database # 使用 s3cmd 上傳壓縮檔到 s3 /usr/bin/s3cmd put "/home/ubuntu/mongo_data/my_database-${today}.tar.gz" s3://my_database/mongo-backup/ # 移除暫存資料夾 /usr/bin/rm -fr "/home/ubuntu/mongo_data/bk-${today}" # 移除暫存壓縮檔 /usr/bin/rm "/home/ubuntu/mongo_data/my_database-${today}.tar.gz"

要注意的是若使用 root 執行,在 /root 目錄下要有 s3cmd 的設定檔 .s3cfg。

2020-11-01

在 AWS EC2 安裝 nginx

在 AWS EC2 安裝 nginx

安裝 nginx 和 php

前置的步驟:

  • 先登入 AWS console。
  • 選擇 EC2 console。
  • 啟用實體(instance)。
  • 選擇作業系統影像檔,我習慣用 ubuntu。
  • 選虛擬機器規格,一般用途選 t2 系列。
  • 啟動之前會詢問要使用已存在的 key pair 或者建立新的。若選建立新的,要保管好 key,不然無法登入實體。
  • 啟動後可以在 console 看到實體。

注意:記得到 instance console 的 security 分頁,設定 inbound rules,讓一般人都可以透過 http 和 https 拜訪。

登入主機:我自己是使用 Mac zsh,當然也可以使用 linux bash,若使用 Windows 建議用 git bash 來登入。

# 先將 key 檔權限設定為 400 chmod 400 my_ec2_key.pem # 使用 ssh 登入,ubuntu 為預設用戶 ssh -i /my_path/my_ec2_key.pem ubuntu@xxx.xxx.xxx.xxx

將本機的 ~/.ssh/id_rsa.pub 加到遠端 ~/.ssh/authorized_keys 內,之後就可以不需要 pem 檔登入。

# 登入後先更新系統 sudo apt update sudo apt upgrade
# 安裝 nginx sudo apt install nginx # 查看 nginx 狀態,應該會是啟動的狀態 service nginx status
# 利用 curl 測試是否可以正常訪問 curl -I http://xxx.xxx.xxx.xxx
# 安裝 PHP 相關套件 sudo apt install php php-cli php-fpm php-json php-pdo php-mysql php-zip php-gd php-mbstring php-curl php-xml php-pear php-bcmath # 安裝套件後會自動啟動 apache2,但由於未安裝 apache2 所以會看到啟動失敗的錯誤訊息 # 查看 php-fpm 的狀態,應該要為啟動的狀態 service php7.4-fpm status
# 查看 nginx 預設網站設定,原則上不需要變更 sudo nano /etc/nginx/sites-available/default

在 /var/www/ 建立「 網域同名資料夾」,例如 php.shinder.cc,用來服務 php.shinder.cc domain 的站台。 在 /etc/nginx/sites-available/ 新增一個設定檔(通常和你的網域同名),例如: php.shinder.cc。並設定內容如下:

server { listen 80; server_name php.shinder.cc; root /var/www/php.shinder.cc; index index.php index.html; location / { try_files $uri $uri/ =404; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; } location ~ /\.ht { deny all; } }
# 在 sites-enabled 內建立 link sudo ln -s /etc/nginx/sites-available/php.shinder.cc /etc/nginx/sites-enabled/
# 測試一下 nginx 的設定檔,看有沒有寫錯 sudo nginx -t
# 重啟 nginx sudo service nginx restart

在 /var/www/php.shinder.cc 放一個 phpinfo 的測試程式,就可以測試 php 了。

安裝 nodejs

# 目前從官方套件安裝,版本為 10.19 有點舊,不過應該可以應付大部份的需求 sudo apt install nodejs npm

FB 留言