【发布时间】:2017-09-13 21:26:51
【问题描述】:
我正在尝试使用 Laravel 将带有 MySQL 数据库的 Google Compute Engine 实例连接到 Google App Engine。我实际上已将我的 Google App Engine 连接到 Cloud SQL 实例,对此我没有问题,但我需要与位于 Google Compute Engine 上的数据库建立额外的数据库连接。
Google Compute Engine 实例位于不同的项目中。这是我的方案:
项目 A -> Compute Engine -> 实例 -> MySQL 数据库
项目 B -> App Engine -> Laravel
项目 B -> Cloud SQL -> 数据库实例 -> MySQL 数据库
这是我的 app.yaml 文件:
runtime: php
env: flex
runtime_config:
document_root: public
# Ensure we skip ".env", which is only for local development
skip_files:
- .env
env_variables:
# Put production environment variables here.
APP_LOG: "errorlog"
APP_KEY: "[KEY]"
STORAGE_DIR: "/tmp"
CACHE_DRIVER: "database"
SESSION_DRIVER: "database"
APP_DEBUG: "true"
#CLOUD SQL database connection
DB_CONNECTION: "[DATABASE_1_NAME]"
DB_HOST: "[CLOUD_SQL_INSTANCE_NAME]"
DB_DATABASE: "[DATABASE_1_NAME]"
DB_USERNAME: "root"
DB_PASSWORD: "[PASSWORD]"
DB_SOCKET: "/cloudsql/[PROJECTB]:[REGION]:[CLOUD_SQL_INSTANCE_NAME]"
# COMPUTE ENGINE database connection
DB_HOST_2: "[COMPUTE_ENGINE_INSTANCE_NAME]"
DB_DATABASE_2: "[DATABASE_2_NAME]"
DB_USERNAME_2: "root"
DB_PASSWORD_2: "[PASSWORD]"
beta_settings:
cloud_sql_instances: "[PROJECTB]:[REGION]:[CLOUD_SQL_INSTANCE_NAME]"
【问题讨论】:
-
抱歉,不清楚您的问题是什么。
-
我的问题是,如何将托管在 Compute Engine 上的数据库连接到托管在 App Engine 上的 Laravel 应用程序?
-
最大的挑战可能是管理防火墙规则以允许来自 App Engine 的连接,因为您不知道他的 IP 是什么。解决此问题的一种方法是将数据库服务器配置为仅允许基于 SSL 证书的身份验证并允许从任何地方进行连接。
标签: laravel google-app-engine google-compute-engine google-cloud-sql app.yaml