Laravel Vapor生产环境部署Passport遇错,如何执行passport:install及SSH访问?
在Laravel Vapor环境下处理Passport部署问题
先给你明确说一下:Laravel Vapor是基于AWS Lambda的无服务器平台,不支持直接SSH访问服务器——毕竟它没有固定的服务器实例,代码都是在临时的Lambda运行环境里跑的,没法像传统服务器那样SSH登录操作。
不过不用担心,执行php artisan passport:install有这几种靠谱的方式:
1. 用Vapor CLI的run命令手动执行(推荐)
这是最直接的方式,在本地终端运行下面的命令:
vapor run passport:install
Vapor会自动在一个临时的Lambda运行环境中执行这个Artisan命令,执行完成后,生成的Passport加密密钥和默认客户端记录会自动同步到你的生产环境数据库和应用配置里。
⚠️ 注意:确保你的Vapor生产环境已经配置好了正确的数据库连接信息(在Vapor控制台的环境变量里),因为这个命令需要连接数据库创建客户端记录。
2. 通过部署钩子自动执行(谨慎使用)
如果你想让passport:install在第一次部署时自动运行,可以修改项目根目录的vapor.yml文件,添加部署钩子:
environments: production: hooks: deploy: - 'php artisan passport:install --force'
但要特别注意:每次执行passport:install --force会重置Passport的加密密钥,导致之前生成的所有访问令牌失效。所以只建议在第一次部署时用这种方式,后续部署一定要移除这个钩子,除非你明确需要更新密钥并接受令牌失效的影响。
3. 手动生成密钥并配置到环境变量
如果不想通过命令执行,也可以手动生成密钥后配置到Vapor:
- 在本地开发环境运行
php artisan passport:install,会在storage/目录下生成oauth-private.key和oauth-public.key两个文件。 - 打开这两个文件,复制它们的完整内容(注意保留所有换行符)。
- 登录Vapor控制台,找到你的生产环境,在环境变量中添加
PASSPORT_PRIVATE_KEY和PASSPORT_PUBLIC_KEY,值分别对应两个密钥的内容。 - 同时,本地数据库中会生成Passport的默认客户端记录,你可以把这些记录导出后,手动插入到生产环境的数据库中(比如通过Vapor的数据库迁移脚本,或者直接用数据库管理工具导入)。
内容的提问来源于stack exchange,提问作者Matthias
相关产品推荐
相关产品推荐

