Deploy Rails 6 to Google App Engine

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

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

事前準備

  • 於 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

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

查看所有标签

猜你喜欢:

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

编程的修炼(中英双语)

编程的修炼(中英双语)

[荷]Edsger W. Dijkstra / 裘宗燕 / 电子工业出版社 / 2013-7 / 79.00元

本书是图灵奖获得者Edsger W. Dijkstra在编程领域里的经典著作中的经典。作者基于其敏锐的洞察力和长期的实际编程经验,对基本顺序程序的描述和开发中的许多关键问题做了独到的总结和开发。书中讨论了顺序程序的本质特征、程序描述和对程序行为(正确性)的推理,并通过一系列从简单到复杂的程序的思考和开发范例,阐释了基于严格的逻辑推理开发正确可靠程序的过程。 本书写于20世纪70年代中后期,但......一起来看看 《编程的修炼(中英双语)》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具