我已经使用 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
我还尝试通过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的权限?
提前谢谢!
答案 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