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

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

查看所有标签

猜你喜欢:

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

不止情感设计

不止情感设计

陈华 / 电子工业出版社 / 2015-5-21 / 59.00

本书着眼于“设计&心理”两个主要的维度,围绕“创新式思维2.0”(共情—移情—定义—构思—建模—测试)的模式,分析如何“理解一款好的产品设计”、“如何了解用户需求”、“如何从需求来定义产品”的几个步骤,由浅入深地介绍设计师通过洞察和理解用户内在需求来指导产品创新和设计的理念。一起来看看 《不止情感设计》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

MD5 加密
MD5 加密

MD5 加密工具

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

HEX HSV 互换工具