如何在带有MySQL的AWS EC2上设置Laravel 5的环境变量

15 浏览
0 Comments

如何在带有MySQL的AWS EC2上设置Laravel 5的环境变量

我已经成功地将我的Laravel 5应用部署到了AWS EC2上。我还使用AWS RDS创建了MySQL数据库,并将其与我的应用实例关联起来。

现在,我想设置我的环境变量,这样在开发时使用homestead的默认值,在部署和生产中使用我的AWS数据库。

从这里开始,我对原来的问题进行了重大修改,以反映自己在提问之后所学到的东西

一个Laravel项目中用于本地开发的经典.env文件大致如下:

APP_ENV=local
APP_DEBUG=true
APP_KEY=BF3nmfzXJ2T6XU8EVkyHtULCtwnakK5k (Note, not a real key)
DB_HOST=localhost
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync
MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null

对于生产环境,我终于明白了,我只需创建一个新的.env文件,包含我生产环境中的变量。当使用AWS时,我的.env文件大致如下:

APP_ENV=production
APP_DEBUG=false
APP_KEY=BF3nmfzXJ2T6XU8EVkyHtULCtwnakK5k (Note, not a real key)
DB_HOST=aaxxxxxxxxxxxxx.cyxxxxxxxxxx.eu-central-1.rds.amazonaws.com:3306
DB_DATABASE=MyAppsDatabaseName
DB_USERNAME=MyAWSRDSUserName
DB_PASSWORD=NotARealPassword
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync
MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null

我现在的问题/难题

我使用AWS eb cli从git中部署我的应用。但是,我如何在不先将它推送到git上的情况下部署我的生产.env文件呢?

admin 更改状态以发布 2023年5月20日
0
0 Comments

你可以在 ec2 实例上创建一个新的 .env 文件,然后添加所有的环境变量。其中一种选项是通过 ssh 连接到服务器,通过 vi 或 cat 创建文件。也可以编写一个脚本从外部位置远程拉取 .env 文件。

你也可以通过 ssh 连接到服务器,并 export APP_ENV=production 来设置所有的环境变量(假设这是你的操作系统正确的命令)。

添加环境变量到你的环境将取决于你的 ec2 实例运行的操作系统,因此解决方案将有所不同。ec2 有一个“标签”的概念,可能会有用,但文档中显示它们限制标签的数量为 10,所以您可能需要手动完成并为每个 ec2 实例完成 :/

这里看到使用标签获取和设置环境变量的一种方法(非 Laravel 特定)。

我昨天在 Elastic Beanstalk 上运行 Laravel 时刚好遇到这个问题,解决方案很干净。您实际上可以直接通过 AWS 控制台设置环境变量(EB 应用/环境—>配置—>软件配置—>环境属性)。

更新:

关键的概念是,Laravel 只是使用 phpdotenv 将 .env 文件中的变量转储到 php 的全局 $_ENV 中,而当 php 启动服务器时,任何已经存在的环境变量都会自动包括在 $_ENV 中(查看文档)。因此,.env 文件本身其实是不必要的,只是一种开发便利。(除非到目前为止我一直被 Elastic Beanstalk 弄得很惯了)。

0
0 Comments

Russ Matney给出了正确的答案,所以他得到了勾选标记。我在这里写下自己的答案,以便增加我实现这些工作的细节。我假设您已经设置好数据库并拥有所有必需的凭据。\n\n1. 前往您的弹性Beanstalk仪表板\n2. 接下来,转到您的软件配置\n3. 如下所示添加您的生产环境变量。记得将doc根目录设置为/public,并在数据库端点结尾添加:3306,以避免PDOEXCEPTION错误。\n4. 接下来SSH到您的应用程序的eb实例。\n5. cd到您的应用程序\n6. 授予读/写访问权限以访问您的存储文件夹,否则应用程序无法写入日志文件夹,这将导致运行迁移时出现错误。\n7. 最后!运行您的迁移,如果您喜欢,可以执行其他artisan命令! 成功大致应该看起来像这样:

0