Link Search Menu Expand Document

Part 6: 第三方服務

19. E-mail 服務

這年頭要自行架設 E-Mail 伺服器很複雜,因為為了防堵垃圾郵件需要很多額外的配置。因此網站上的 E-mail 功能,我們偏好租用第三方的 E-mail 服務,推薦的廠商有:

無論是哪一家 E-mail,註冊後會拿到 SMTP (郵件通信協議) 伺服器的 1.位址 2. 帳號 3. 密碼

如果你希望寄信來源要顯示你自己的網域,例如來自 [email protected] 的話,首先你需要購買自己的網域(Part 7 會教),以及進一步的 DNS 配置。

Mailgun

images

SendCloud

http://sendcloud.net/

將生成的API_USERAPI_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 通知你。免費的方案就夠用了,如果需要短信通知或增加檢查頻率,則需要付費。

Rails 異常監控

以下這些第三方服務,可以在 Rails 發生異常 (exception) 時,主動通知及紀錄下這個錯誤例外(exception),好讓我可以進行追蹤除錯。

這些服務都有提供 gem 可以安裝,按照註冊流程應該就可以完成。

效能監控

以下這些第三方服務,會紀錄監控網站程式的效能,例如網站的回應速度,協助你分析哪些部分需要做最佳化改善:

這些服務都有提供 gem 可以安裝,按照註冊流程應該就可以完成。


Copyright © 2010-2022 Wen-Tien Chang All Rights Reserved.