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

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

查看所有标签

猜你喜欢:

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

深入理解计算机系统(原书第3版)

深入理解计算机系统(原书第3版)

Randal E.Bryant、David O'Hallaron / 龚奕利、贺莲 / 机械工业出版社 / 2016-11 / 139.00元

和第2版相比,本版内容上*大的变化是,从以IA32和x86-64为基础转变为完全以x86-64为基础。主要更新如下: 基于x86-64,大量地重写代码,首次介绍对处理浮点数据的程序的机器级支持。 处理器体系结构修改为支持64位字和操作的设计。 引入更多的功能单元和更复杂的控制逻辑,使基于程序数据流表示的程序性能模型预测更加可靠。 扩充关于用GOT和PLT创建与位置无关代码的......一起来看看 《深入理解计算机系统(原书第3版)》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

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

html转js在线工具