pin-cnx/laravel-aws-deploy
Artisan command to deploy Laravel to AWS EC2 Auto Scaling with near zero downtime. Creates an AMI from a master instance, builds a new launch configuration, updates the ASG, spins up new instances, and can terminate old ones.
The artisan command to deploy to aws EC2 auto scale without down time. This command will doing follow step.
$ composer require pin-cnx/laravel-aws-deploy
Modify services.php add following configuration. You can have many profiles, it will do them all in sequence(or just specify profile see in how to run the command)
'ec2' => [
'key' => env('EC2_KEY'),
'secret' => env('EC2_SECRET'),
'region' => env('EC2_REGION', 'ap-southeast-1'),
'profiles' => [
'AnyName' => [
// The value with *** need to change to your own aws component name
'AMI_PREFIX' => 'AWSDEPLOY', // Prefix for the AMI just for easy to regconize ie. AWSDEPLOY'
'InstanceId' => '***i-0123456789abcdef', //The master instance id to clone ie. i-0123456789abcdef
'KeyName' => '***serverkey', // The pem key name to access to the auto scale's instances
'AutoScalingGroupName' => '***my-auto-scale', // The auto scale group name,
'SecurityGroups' => '***sg-123456', // The security group of instance ie. sg-123456
'InstanceType' => env('EC2_SIZE','t3.nano') , // 'Instance type ie. t2.micro',
'VolumeSize' => 30, //(Optional) Default:30 SSD size
'region' => ['ap-southeast-1a','ap-southeast-1b'], // Region to spawn instances
'NoReboot' => false, //(Optional) Default:false Is it will reboot the master instance to make AMI
'IsTerminateCurrentInstance' => true, //(Optional) Default:true Is it will terminate the old instance which launch with old configuration.
'IamInstanceProfile' => null, //(Optional) Default:null
'AMI_TAGS' => [ // (Optional) What ever tag you need for the new instances
[
'Key' => 'stage',
'Value' => 'aws-deploy',
],
[
'Key' => 'Project',
'Value' => 'aws-deploy',
]
]
, 'UserData' => "#!/bin/bash \n" . // (Optional)The first boot command to the instances
"#su - www-data -c \"php /var/www/html/artisan queue:restart\""
]
]
]
Run all profiles
$ php artisan ec2backup
or just one profile
$ php artisan ec2backup --profile AnyName
for some reason aws need to have ca-bundle.crt with curl lib to run. So copy the ca-bundle.crt from this git repository then put it to your project at /config/ca-bundle.crt
don't forgot to add env EC2_KEY and EC2_SECRET which has permission to access EC2
The MIT License (MIT). Please see License File for more information.
How can I help you explore Laravel packages today?