Mar*_*nJH 16 mysql git environment-variables amazon-web-services laravel-5
我已成功将我的laravel 5应用程序部署到AWS EC2.我还使用AWS RDS创建了一个MySQL数据库,并将其与我的应用实例相关联.
现在我想设置我的env变量,以便在我开发的本地机器上使用homesteads默认值,在部署和生产时使用我的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
Run Code Online (Sandbox Code Playgroud)
为了生产,我终于明白我只是用我的生产变量创建一个新的.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
Run Code Online (Sandbox Code Playgroud)
我使用AWS eb cli从git部署我的应用程序.但是如何部署我的生产.env文件而不必先将其推送到git?
Mar*_*nJH 21
上面的Russ Matney给出了正确的答案,所以他得到了复选标记.我会在这里写下自己的答案,详细说明我如何使事情发挥作用.我假设您确实已设置数据库并拥有所需的所有凭据.
1.转到弹性beanstalk仪表板

2.接下来转到您的软件配置

3.添加生产环境变量,如下所示.请记住将doc root设置为/ public,并在数据库端点的末尾添加:3306以避免PDOEXCEPTION错误.

4.下一个SSH进入你的应用程序eb实例.请在此处查看详细信息,或尝试以下操作:
$ ssh -i path/to/your/key/pair/pem/file.pem ec2-user@ec1-11-11-11-111.eu-central-1.compute.amazonaws.com
请注意ec1-11-11-11-111.eu-central-1.compute.amazonaws.com是您的应用程序公共DNS.你会在这里找到你的:

5. cd到你的应用程序:$ cd /var/app/current
6.授予对存储文件夹的读/写访问权限,否则应用程序无法写入日志文件夹,并且在运行迁移时会导致错误.提供访问权限:$ sudo chmod -R ugo+rw storage
7.终于!如果您愿意,可以运行您的迁移并执行其他工匠命令!$ php artisan migrate成功应该从gitbash粗略看起来像这样:

Rus*_*ney 16
您可以在ec2实例上创建一个新的.env,并在其中添加所有env变量.一个选项是ssh-ing到框中并通过vi或cat创建文件.或者您可以编写一个脚本来远程从外部位置拉入.env.
您也可以将ssh放入框中以及export APP_ENV=production所有env变量(假设这是适合您操作系统的命令).
将env变量添加到您的环境将取决于您的ec2实例正在运行的操作系统,因此解决方案将依赖于此.ec2有一个"标签"的概念可能很有用,但文档显示它们将标签数量限制为10,所以你可能需要手动完成每个ec2实例:/
请参阅此处了解一种方法,该方法使用标记来引入并设置env变量(非特定于laravel).
我昨天刚刚经历了这个问题,同时让Laravel在Elastic Beanstalk上运行,解决方案很干净.您实际上可以通过aws控制台直接设置env变量(EB app/environment - > Configuration - > Software Configuration - > Environment Properties).
更新:
要理解的关键概念是Laravel只使用phpdotenv将.变量文件中的变量转储到php的全局$_ENV变量中,而$_ENV当php启动服务器(docs)时,任何现有的env变量都会自动包含在内.所以.env文件本身是不必要的,实际上只是开发方便.(除非我刚刚被弹性豆茎破坏了).
| 归档时间: |
|
| 查看次数: |
10044 次 |
| 最近记录: |