Deploy Rails 6 to Google App Engine

栏目: Ruby · 发布时间: 5年前

内容简介:您也可以一併在如果您的圖片權限異常

事前準備

  • 於 Google Cloud Platform 主控台建立專案。

  • 為專案啟用計費功能,如果您尚未啟用,請立即 啟用計費功能

  • 安裝並初始化 Google Cloud SDK

  • 設定本機 Rails 環境,本文假設您對於 Rails 的部分已有足夠的理解,故不在此增加冗余的介紹

啟用 Cloud SQL Admin API

立即啟用 或使用指令介面:

# 切換專案
$ gcloud projects list
$ gcloud config set project <project_id>
# 查詢服務
$ gcloud services list --available
# 啟用
$ gcloud services enable sqladmin.googleapis.com

建立 Cloud SQL Instance 和 Database

安裝 gem

$ bundle add pg # 如果尚未安裝
$ bundle add appengine

設定資料庫連線

# 取得 Cloud SQL 資料庫資訊
$ gcloud sql instances describe <instance_name>
# config/database.yml
production:
  adapter: postgresql
  encoding: unicode
  pool: 5
  timeout: 5000
  username: "[YOUR_POSTGRES_USERNAME]"
  password: "[YOUR_POSTGRES_PASSWORD]"
  database: [your_database_name_production]
  host:   "/cloudsql/[YOUR_INSTANCE_CONNECTION_NAME]"

您也可以一併在 app.yaml 中加入 env_variables

Active Storage 設定

# config/storage.yml
google:
  service: GCS
  project: [YOUR_PROJECT_ID]
  credentials: <%= ENV['GOOGLE_APPLICATION_CREDENTIALS'] %>
  bucket: [YOUR_BUCKET_NAME]

如果您的圖片權限異常 SignedUrlUnavailable 可以取得 credential.json 再試試。

  • 控制台 > APIs & Services > Credentials > Create credentials > Service account key > App engine default service account > JSON > Create
# config/storage.yml
google:
  service: GCS
  project: website
  credentials: <%= Rails.root.join("your/path.json") %>
  bucket: [YOUR_BUCKET_NAME]

設定 app.yaml 部署至 App Engine

App Engine 彈性環境使用 app.yaml 描述部署環境設定,在 Rails 專案根目錄加入 app.yaml

entrypoint: bundle exec rackup --port $PORT
env: flex
runtime: ruby

# Rails 5.2+ 之後使用 config/master.key
env_variables:
  RAILS_MASTER_KEY: [MASTER_KEY]

beta_settings:
  cloud_sql_instances: [YOUR_INSTANCE_CONNECTION_NAME]

設定完成後執行下列指令:

$ gcloud app create
$ RAILS_ENV=production bundle exec rails assets:precompile
$ gcloud app deploy

# 取得專案資訊
$ gcloud info

# 瀏覽
$ gcloud app browse
# OR
$ gcloud app browse -s <service_name>

# 讀取日誌
$ gcloud app logs read
$ gcloud app logs tail
$ gcloud app logs tail -s <service_name>

授予 appengine RubyGem 權限,執行 Migration

$ gcloud projects list
$ gcloud projects add-iam-policy-binding [YOUR-PROJECT-ID] \
  --member=serviceAccount:[PROJECT_NUMBER]@cloudbuild.gserviceaccount.com \
  --role=roles/editor]

$ bundle exec rake appengine:exec -- bundle exec rake db:migrate

其他資源與參考

# 取得用於驗證 GCP 服務的本機憑證。
$ gcloud auth application-default login

# Stackdriver
# Add this to config/environments/*.rb
Rails.application.configure do |config|
  # Stackdriver Logging specific parameters
  config.google_cloud.logging.project_id = "YOUR-PROJECT-ID"
  config.google_cloud.logging.keyfile    = "/path/to/service-account.json"
end

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

On LISP

On LISP

Paul Graham / Prentice Hall / 09 September, 1993 / $52.00

On Lisp is a comprehensive study of advanced Lisp techniques, with bottom-up programming as the unifying theme. It gives the first complete description of macros and macro applications. The book also ......一起来看看 《On LISP》 这本书的介绍吧!

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

html转js在线工具
html转js在线工具

html转js在线工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试