难以通过Google App Engine(GAE)部署Laravel Passport

时间:2019-04-03 00:12:03

标签: sql laravel google-app-engine google-cloud-platform laravel-passport

我已经使用 Google Cloud SQL作为数据库成功部署并维护了 Google App Engine + Laravel项目。我正在使用Cloud Build进行部署,但是在手动部署中,我的问题也一样。我正在尝试使本地可运行的Laravel Passport安装在Google App Engine上运行。

Laravel Passport需要运行php artisan passport:install 才能生成其加密密钥并将其存储到数据库中。
在GAE自动构建过程中唯一可以做到这一点的位置是在 composer 中的"post-install-cmd":[]中,但是在那个阶段还没有建立数据库连接。 =>运行passport:install

时出现SQL错误


但是

我还尝试通过SSH进入App Engine实例并手动运行passport:install,将存储目录更改为0600,将所需的护照加密密钥更改为 www-data ,但仍然出现以下错误:
LogicException Key path "file:///app/storage/oauth-private.key" does not exist or is not readable

我现在缺乏选择,可悲的是找不到将Laravel Passport部署到GAE项目的参考。

我正在寻找的是可能出问题的另一种观点。我是否缺少某些特定于Google App Engine的权限?

提前谢谢!

2 个答案:

答案 0 :(得分:3)

我遇到了同样的问题,这个solution对我有用。请翻译成英文,因为本网站上的内容是中文。

将护照设置放入环境变量中

创建配置文件。

php artisan vendor:publish --tag=passport-config

将文件内容嵌入环境变量中

php artisan passport:install 

以下文件创建于

storage / oauth-private.key

storage / oauth-private.key

如下所示将该密钥文件的内容放入配置文件中

//app.yaml
runtime: php72

env_variables:
  APP_KEY: YOUR_APP_KEY
  APP_STORAGE: /tmp
  VIEW_COMPILED_PATH: /tmp
  CACHE_DRIVER: database
  SESSION_DRIVER: database
  ## Set these environment variables according to your CloudSQL configuration.
  DB_DATABASE: YOUR_DB_DATABASE
  DB_USERNAME: YOUR_DB_USERNAME
  DB_PASSWORD: YOUR_DB_PASSWORD
  DB_SOCKET: "/cloudsql/YOUR_CONNECTION_NAME"
+   PASSPORT_PRIVATE_KEY: |
+     -----BEGIN RSA PRIVATE KEY-----
+     <private key here>
+     -----END RSA PRIVATE KEY-----
+   PASSPORT_PUBLIC_KEY: |
+     -----BEGIN PUBLIC KEY-----
+     <public key here>
+     -----END PUBLIC KEY-----

答案 1 :(得分:0)

sudo chown www-data:www-data storage/oauth-*.key
sudo chmod 600 storage/oauth-*.key
sudo chown www-data:www-data oauth-public.key
sudo chmod 600 oauth-public.key