Part 6: 第三方服務
19. E-mail 服務
這年頭要自行架設 E-Mail 伺服器很複雜,因為為了防堵垃圾郵件需要很多額外的配置。因此網站上的 E-mail 功能,我們偏好租用第三方的 E-mail 服務,推薦的廠商有:
無論是哪一家 E-mail,註冊後會拿到 SMTP (郵件通信協議) 伺服器的 1.位址 2. 帳號 3. 密碼
如果你希望寄信來源要顯示你自己的網域,例如來自 [email protected]
的話,首先你需要購買自己的網域(Part 7 會教),以及進一步的 DNS 配置。
Mailgun
SendCloud
將生成的API_USER
和API_KEY
信息保存下來。如果忘記 API_KEY
,可以重新生成。
Rails 設定
在本機編輯 config/environments/production.rb
,加載 email 設定檔。
+ config.action_mailer.default_url_options = { :host => '你的網域名稱,暫時還沒有就填IP地址' }
+ config.action_mailer.delivery_method = :smtp
+ config.action_mailer.smtp_settings = config_for(:email).symbolize_keys
在遠端伺服器上,用 deploy 帳號新增 /home/deploy/rails-recipes/shared/config/email.yml
如果用 SendCloud 會長這樣:
production:
address: "smtpcloud.sohu.com"
port: 25
domain: "XXX.sendcloud.org"
authentication: "plain"
user_name: "XXX_test_XXX"
password: "keyXXXXX"
enable_starttls_auto: true
注意,在阿里雲、AWS、Google Cloud Platform 等大雲服務商,會封鎖 25 port 來阻擋垃圾郵件發送。通常 E-mail 服務商會另外提供 2525 或 587 port,例如 SendCloud 的 SMTP 服務只開放了 25 埠麽?,請依此修改 port 和 SMTP address 位置。
如果用 Mailgun 會長這樣:
production:
address: "smtp.mailgun.org"
port: 587
domain: "mailgun.org"
authentication: "plain"
user_name: "[email protected]"
password: "XXXXX"
enable_starttls_auto: true
最後編輯 config/deploy.rb
,在部署過程中去連結 config/email.yml
設定檔。
- append :linked_files, "config/database.yml", "config/secrets.yml"
+ append :linked_files, "config/database.yml", "config/secrets.yml", "email.yml"
git commit 和 git push 後,進行部署 cap production deploy
。
可以用忘記密碼流程進行測試 E-mail 發送。
20. 檔案存儲服務
使用者上傳的檔案,在 carrierwave 或 paperclip gem 中預設會把檔案放在伺服器上的 shared/public/system
目錄下。這樣當然是可以運作。
不過相比於資料庫所需要的硬盤空間,用戶上傳的檔案很可能會耗費更多空間。不但造成備份上的難度,也需要時常註意硬盤空間,萬一硬盤滿了之後,會需要增加硬盤空間甚至移機,麻煩很多。
因此,在正式運營的網站,我們會偏好使用專門的第三方檔案儲存服務,來放這些用戶上傳的檔案,節省我們後續維運上的麻煩。
比較大的雲服務商上都有提供類似的產品,這裡我們推薦:
詳細的安裝用法,在之前的 Rails 實戰:購物網站 教程有介紹。至於密碼的處理,可以參考上一節處理 email.yml 的手法。
21. 伺服器監控服務
網站 Uptime 監控
以下這些第三方服務,可以每隔幾分鐘檢查你指定的 URL 是否正常回應(不需要額外安裝Gem),如果連不上可以透過 E-mail 通知你。免費的方案就夠用了,如果需要短信通知或增加檢查頻率,則需要付費。
- https://uptimerobot.com/
- https://www.statuscake.com/
- https://tools.pingdom.com/
- https://www.pagerduty.com
Rails 異常監控
以下這些第三方服務,可以在 Rails 發生異常 (exception) 時,主動通知及紀錄下這個錯誤例外(exception),好讓我可以進行追蹤除錯。
這些服務都有提供 gem 可以安裝,按照註冊流程應該就可以完成。
效能監控
以下這些第三方服務,會紀錄監控網站程式的效能,例如網站的回應速度,協助你分析哪些部分需要做最佳化改善:
這些服務都有提供 gem 可以安裝,按照註冊流程應該就可以完成。