title
Deploying a Laravel App via Elastic Beanstalk | Amazon Web Services BASICS

description
Elastic Beanstalk is a great service to get your web application into the web. This video shows how you can easily use it to deploy a Laravel application which even uses a database! Want to learn AWS Serverless apps? Dive into my complete introduction: https://acad.link/aws-serverless The sample project: https://github.com/academind/laravel-simple-blog Get Composer (for installing dependencies): https://getcomposer.org/ More on .ebextensions: http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/ebextensions.html Dive into the EB CLI: http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb-cli3.html Elastic Beanstalk Pricing: https://aws.amazon.com/elasticbeanstalk/pricing/ Other useful AWS Articles: - Getting Started: https://aws.amazon.com/getting-started - Infrastructure: https://aws.amazon.com/about-aws/global-infrastructure - Pricing: https://aws.amazon.com/pricing Want to become a frontend developer? Consider diving into some of my courses: Angular vs React vs Vue - Quickstart and Comparison: https://acad.link/ng-vs-react-vs-vue Ionic + Angular - The Practical Guide: https://acad.link/ionic Angular - The Complete Guide: https://acad.link/angular Vue.js - The Complete Guide: https://acad.link/angular You can follow me on Twitter (@maxedapps), Facebook (https://www.facebook.com/academindchannel/) or visit our Website (https://www.academind.com). See you in the videos!

detail
{'title': 'Deploying a Laravel App via Elastic Beanstalk | Amazon Web Services BASICS', 'heatmap': [{'end': 354.875, 'start': 330.685, 'weight': 0.703}, {'end': 476.194, 'start': 399.306, 'weight': 0.743}, {'end': 562.206, 'start': 538.792, 'weight': 0.724}, {'end': 797.983, 'start': 770.275, 'weight': 0.812}, {'end': 1302.578, 'start': 1281.647, 'weight': 0.713}, {'end': 1387.366, 'start': 1349.128, 'weight': 0.93}, {'end': 1591.71, 'start': 1551.079, 'weight': 0.755}], 'summary': 'Tutorial demonstrates deploying a laravel application with a database to aws using aws elastic beanstalk, covering laravel env file configuration, error handling, rds connection, database migration, and automating the deployment process using elastic beanstalk cli.', 'chapters': [{'end': 205.267, 'segs': [{'end': 61.405, 'src': 'embed', 'start': 2.298, 'weight': 0, 'content': [{'end': 3.639, 'text': 'Hi everyone, welcome to this video.', 'start': 2.298, 'duration': 1.341}, {'end': 9.306, 'text': 'My name is Maximilian and in a previous video I already got you started with AWS.', 'start': 3.96, 'duration': 5.346}, {'end': 18.976, 'text': 'In this video I want to show you how you can deploy a Laravel application including a database to AWS using AWS Elastic Beanstalk.', 'start': 9.826, 'duration': 9.15}, {'end': 19.817, 'text': "Let's start.", 'start': 19.316, 'duration': 0.501}, {'end': 29.564, 'text': 'This is the application I want to deploy, a very simple one, but it does use a database behind the scenes.', 'start': 24.482, 'duration': 5.082}, {'end': 44.712, 'text': 'In this application, we can sign up and create blog posts like this is my first post, the very first one.', 'start': 30.145, 'duration': 14.567}, {'end': 49.779, 'text': 'Once we did this, we see an overview over all blog posts.', 'start': 46.878, 'duration': 2.901}, {'end': 51.42, 'text': 'I already created some.', 'start': 50.2, 'duration': 1.22}, {'end': 53.181, 'text': 'And that is the application.', 'start': 52.081, 'duration': 1.1}, {'end': 58.364, 'text': 'Not super amazing, but using a database, which makes it interesting when we talk about deployment.', 'start': 53.481, 'duration': 4.883}, {'end': 61.405, 'text': 'Now you can find this application on GitHub.', 'start': 58.984, 'duration': 2.421}], 'summary': 'Maximilian demonstrates deploying a laravel app with a database to aws using aws elastic beanstalk.', 'duration': 59.107, 'max_score': 2.298, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ISVaMijczKc/pics/ISVaMijczKc2298.jpg'}, {'end': 135.921, 'src': 'embed', 'start': 93.201, 'weight': 1, 'content': [{'end': 98.003, 'text': 'this allows us to spin up virtual servers so basically like physical ones which we own,', 'start': 93.201, 'duration': 4.802}, {'end': 101.985, 'text': 'but just a part on a physical server with the configuration we want.', 'start': 98.003, 'duration': 3.982}, {'end': 109.048, 'text': 'We could do this and then we could install a web server on EC2 and deploy our code onto the instance.', 'start': 102.425, 'duration': 6.623}, {'end': 116.672, 'text': 'We would also have to take care that we set it up in a secure way and do some configuration and we could do all that.', 'start': 109.569, 'duration': 7.103}, {'end': 118.513, 'text': 'But there is an easier way.', 'start': 116.812, 'duration': 1.701}, {'end': 125.697, 'text': 'Our goal is to deploy a web application and that easier way is another service named Elastic Beanstalk.', 'start': 118.793, 'duration': 6.904}, {'end': 127.638, 'text': 'Behind the scenes.', 'start': 126.537, 'duration': 1.101}, {'end': 135.921, 'text': 'Elastic Beanstalk will use EC2, it will start such a server for us, but it will do also all the other configuration we want to do,', 'start': 127.638, 'duration': 8.283}], 'summary': 'Elastic beanstalk simplifies deploying web applications on ec2 servers.', 'duration': 42.72, 'max_score': 93.201, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ISVaMijczKc/pics/ISVaMijczKc93201.jpg'}, {'end': 205.267, 'src': 'embed', 'start': 157.493, 'weight': 3, 'content': [{'end': 164.078, 'text': "Next, you need to choose a platform, and since we're using Laravel, this obviously should be PHP, since Laravel is a PHP framework.", 'start': 157.493, 'duration': 6.585}, {'end': 167.499, 'text': "we don't want to start with a sample application.", 'start': 164.838, 'duration': 2.661}, {'end': 175.544, 'text': 'instead, we want to upload our own code, and now it would be tempting to pick the zip file you downloaded from github right.', 'start': 167.499, 'duration': 8.045}, {'end': 176.964, 'text': "that won't work, though.", 'start': 175.544, 'duration': 1.42}, {'end': 185.829, 'text': 'the zip file which you upload here should contain all the source files and not a folder which contains all the source files.', 'start': 176.964, 'duration': 8.865}, {'end': 191.532, 'text': 'therefore, simply go to the folder you just downloaded and extract it.', 'start': 185.829, 'duration': 5.703}, {'end': 201.443, 'text': 'This will give you a folder and now in this folder, select all the files and compress them, sip them again with your favorite sipping tool.', 'start': 192.213, 'duration': 9.23}, {'end': 205.267, 'text': 'However, before you do so, make sure you do one thing.', 'start': 201.823, 'duration': 3.444}], 'summary': 'Choose php as the platform for laravel framework. upload source files in a single zip file.', 'duration': 47.774, 'max_score': 157.493, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ISVaMijczKc/pics/ISVaMijczKc157493.jpg'}], 'start': 2.298, 'title': 'Deploying laravel app with database on aws', 'summary': 'Covers deploying a laravel application with a database to aws using aws elastic beanstalk, demonstrating a simple application with a database and its availability on github.', 'chapters': [{'end': 61.405, 'start': 2.298, 'title': 'Deploying laravel app with database on aws', 'summary': 'Covers deploying a laravel application with a database to aws using aws elastic beanstalk, demonstrating a simple application with a database and its availability on github.', 'duration': 59.107, 'highlights': ['The chapter covers deploying a Laravel application with a database to AWS using AWS Elastic Beanstalk, demonstrating a simple application with a database and its availability on GitHub.', 'The application allows signing up and creating blog posts, providing an overview of all blog posts created, and is available for access on GitHub.']}, {'end': 205.267, 'start': 61.685, 'title': 'Deploying laravel application with elastic beanstalk', 'summary': 'Covers the process of deploying a laravel web application using aws elastic beanstalk, which simplifies the deployment process by automating server setup, configuration, and code deployment, allowing for easy management of different versions and environments.', 'duration': 143.582, 'highlights': ['Elastic Beanstalk simplifies deployment by automating server setup, configuration, and code deployment, allowing for easy management of different versions and environments.', 'AWS EC2 service provides the capability to spin up virtual machine instances and install a web server to deploy code onto the instance.', 'Choosing the appropriate platform, such as PHP for a Laravel application, is crucial when configuring Elastic Beanstalk for deployment.', 'The zip file uploaded to Elastic Beanstalk should contain all the source files directly, without being wrapped in a folder.']}], 'duration': 202.969, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ISVaMijczKc/pics/ISVaMijczKc2298.jpg', 'highlights': ['The chapter covers deploying a Laravel application with a database to AWS using AWS Elastic Beanstalk, demonstrating a simple application with a database and its availability on GitHub.', 'Elastic Beanstalk simplifies deployment by automating server setup, configuration, and code deployment, allowing for easy management of different versions and environments.', 'The application allows signing up and creating blog posts, providing an overview of all blog posts created, and is available for access on GitHub.', 'Choosing the appropriate platform, such as PHP for a Laravel application, is crucial when configuring Elastic Beanstalk for deployment.', 'The zip file uploaded to Elastic Beanstalk should contain all the source files directly, without being wrapped in a folder.', 'AWS EC2 service provides the capability to spin up virtual machine instances and install a web server to deploy code onto the instance.']}, {'end': 470.553, 'segs': [{'end': 234.279, 'src': 'embed', 'start': 205.948, 'weight': 0, 'content': [{'end': 208.17, 'text': 'You see that env.example file?', 'start': 205.948, 'duration': 2.222}, {'end': 221.536, 'text': 'Laravel manages a couple of global settings in its env file and by default this env file is not shared when hosting or when shipping your code to a code repository like github,', 'start': 209.204, 'duration': 12.332}, {'end': 225.82, 'text': 'which is why here you only have a dummy file and not an actual one.', 'start': 221.536, 'duration': 4.284}, {'end': 234.279, 'text': 'you should copy that file and rename it to env without example.', 'start': 225.82, 'duration': 8.459}], 'summary': 'Laravel env file not shared by default, copy and rename dummy file to env', 'duration': 28.331, 'max_score': 205.948, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ISVaMijczKc/pics/ISVaMijczKc205948.jpg'}, {'end': 286.687, 'src': 'embed', 'start': 258.769, 'weight': 1, 'content': [{'end': 262.592, 'text': 'So we need that API key here, the app key to be precise.', 'start': 258.769, 'duration': 3.823}, {'end': 268.281, 'text': 'and to get one, we can use the artisan command to generate one.', 'start': 263.573, 'duration': 4.708}, {'end': 272.007, 'text': 'however, for that, we will need php installed in our machine.', 'start': 268.281, 'duration': 3.726}, {'end': 274.291, 'text': 'so make sure that you have php installed.', 'start': 272.007, 'duration': 2.284}, {'end': 280.441, 'text': 'You can then simply navigate into your folder and run php artisan and then a command.', 'start': 275.216, 'duration': 5.225}, {'end': 284.025, 'text': 'But for this to work, we actually need to do one other thing first.', 'start': 280.501, 'duration': 3.524}, {'end': 286.687, 'text': 'We need to install all the dependencies.', 'start': 284.605, 'duration': 2.082}], 'summary': 'To generate an api key, php must be installed on the machine and all dependencies need to be installed beforehand.', 'duration': 27.918, 'max_score': 258.769, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ISVaMijczKc/pics/ISVaMijczKc258769.jpg'}, {'end': 354.875, 'src': 'heatmap', 'start': 330.685, 'weight': 0.703, 'content': [{'end': 337.668, 'text': 'now you can run a new command still in that folder, php artisan key, colon generate,', 'start': 330.685, 'duration': 6.983}, {'end': 343.53, 'text': 'and this will generate this application key and automatically store it in this dot env file.', 'start': 337.668, 'duration': 5.862}, {'end': 354.875, 'text': 'as you can see if you open it again here, it is with that the project is prepared and now we can select all these files inside this folder,', 'start': 343.53, 'duration': 11.345}], 'summary': "Running 'php artisan key:generate' in the folder generates the application key and stores it in the .env file.", 'duration': 24.19, 'max_score': 330.685, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ISVaMijczKc/pics/ISVaMijczKc330685.jpg'}, {'end': 447.985, 'src': 'embed', 'start': 387.757, 'weight': 2, 'content': [{'end': 393.241, 'text': 'Choose that zip file we just created, which holds all our code, including the dependencies, including the vendor folder.', 'start': 387.757, 'duration': 5.484}, {'end': 395.023, 'text': "And let's click upload.", 'start': 393.682, 'duration': 1.341}, {'end': 398.686, 'text': 'Now, as you can see in the bottom left, this now ships our code to Amazon.', 'start': 395.583, 'duration': 3.103}, {'end': 408.755, 'text': 'Then Elastic Beanstalk will spin up the EC2 instance we need and will ship our code onto the instance and also configure that instance to hold a web server and so on.', 'start': 399.306, 'duration': 9.449}, {'end': 413.299, 'text': 'Before it does so, though, we need to go through the remaining steps of the configuration.', 'start': 409.675, 'duration': 3.624}, {'end': 418.844, 'text': 'We could click create application or we have a look at the other options we can set up.', 'start': 413.839, 'duration': 5.005}, {'end': 423.663, 'text': 'Here, we can, for example, choose which kind of preset we want to use.', 'start': 420.66, 'duration': 3.003}, {'end': 429.408, 'text': "I'll go with the low-cost one, which stays within this free tier as long as you don't have multiple of these apps.", 'start': 423.923, 'duration': 5.485}, {'end': 432.711, 'text': 'But of course, you could choose to a more production-ready one.', 'start': 429.768, 'duration': 2.943}, {'end': 435.633, 'text': 'And you can change the environment settings.', 'start': 433.632, 'duration': 2.001}, {'end': 438.016, 'text': "I'll name the environment here differently.", 'start': 435.854, 'duration': 2.162}, {'end': 439.897, 'text': "I'll name it Prod.", 'start': 438.556, 'duration': 1.341}, {'end': 441.719, 'text': 'You can choose any name you like.', 'start': 440.218, 'duration': 1.501}, {'end': 447.985, 'text': 'And you can manage different environments on Elastic Beanstalk, for example, for a testing environment, a production environment,', 'start': 442.24, 'duration': 5.745}], 'summary': 'Upload code to amazon, configure instance on elastic beanstalk, set environment for production and testing.', 'duration': 60.228, 'max_score': 387.757, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ISVaMijczKc/pics/ISVaMijczKc387757.jpg'}], 'start': 205.948, 'title': 'Laravel application deployment', 'summary': 'Covers laravel env file configuration, emphasizing the importance of the env.example file and the deployment process on elastic beanstalk, including api key generation, dependency installation, and code compression for uploading to amazon elastic beanstalk.', 'chapters': [{'end': 258.067, 'start': 205.948, 'title': 'Laravel env file configuration', 'summary': 'Explains the significance of the env.example file in laravel, its management of global settings, and the need to copy and rename it to env while assigning an app key, with other settings remaining unchanged.', 'duration': 52.119, 'highlights': ['The env.example file in Laravel manages global settings, and it should be copied and renamed to env without example, with the need to assign an app key.', 'The default env file is not shared when hosting or shipping code to a repository like GitHub, and altering settings such as changing from local to prod is optional.', 'The URL setting can remain as it is for the time being.']}, {'end': 470.553, 'start': 258.769, 'title': 'Deploying laravel application on elastic beanstalk', 'summary': 'Explains the process of deploying a laravel application on elastic beanstalk, including the generation of api keys, installation of dependencies using composer, compression of code into a zip file, and uploading the code to amazon elastic beanstalk.', 'duration': 211.784, 'highlights': ["The chapter details the process of generating an API key using the artisan command, which requires PHP to be installed on the machine and the execution of 'php artisan key:generate' command to automatically store the application key in the .env file.", "It explains the installation of dependencies, including the Laravel framework, using Composer by running 'composer install' in the project folder, which installs all the necessary dependencies, including Laravel, and takes a couple of seconds to complete.", 'The chapter outlines the process of compressing all the project files, including the dependencies, into a zip file and renaming it, followed by uploading the zip file to Amazon Elastic Beanstalk, where Elastic Beanstalk will spin up the EC2 instance, ship the code onto the instance, and configure the instance to hold a web server and more.', 'It also mentions the configuration options available in Elastic Beanstalk, including choosing the type of preset, environment settings, and managing different environments, such as testing, production, staging, and new feature environment.', 'The chapter emphasizes the importance of going through the remaining configuration steps, such as choosing the appropriate preset, managing environment settings, and creating the application on Elastic Beanstalk, which will lead to spinning up the EC2 instance and setting everything up.']}], 'duration': 264.605, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ISVaMijczKc/pics/ISVaMijczKc205948.jpg', 'highlights': ['The chapter emphasizes the importance of the env.example file in Laravel and the need to copy and rename it to env without example, assigning an app key.', "The process of generating an API key using the artisan command is detailed, requiring PHP installation and execution of 'php artisan key:generate' command to store the application key in the .env file.", 'The chapter outlines the process of compressing all project files, including dependencies, into a zip file and uploading it to Amazon Elastic Beanstalk, where Elastic Beanstalk will spin up the EC2 instance and configure it to hold a web server and more.', 'The configuration options available in Elastic Beanstalk, including choosing the type of preset, environment settings, and managing different environments, are mentioned.', 'The importance of going through the remaining configuration steps, such as choosing the appropriate preset, managing environment settings, and creating the application on Elastic Beanstalk, is emphasized.']}, {'end': 1164.905, 'segs': [{'end': 570.113, 'src': 'heatmap', 'start': 538.792, 'weight': 0.724, 'content': [{'end': 540.233, 'text': 'We can easily change this, though.', 'start': 538.792, 'duration': 1.441}, {'end': 544.255, 'text': "Let's go to the configuration of our environment, of the prod environment here.", 'start': 540.773, 'duration': 3.482}, {'end': 551.279, 'text': 'And there, under software configuration, we can configure anything related to our server, which is running here.', 'start': 545.196, 'duration': 6.083}, {'end': 556.402, 'text': 'So if we click on this settings icon, we can set a document root.', 'start': 551.76, 'duration': 4.642}, {'end': 558.424, 'text': 'And this is exactly what we need here.', 'start': 556.863, 'duration': 1.561}, {'end': 562.206, 'text': 'Here we can decide from which folder,', 'start': 558.944, 'duration': 3.262}, {'end': 570.113, 'text': 'from which subfolder the server should in the end serve our files or where the request should basically be handled.', 'start': 562.206, 'duration': 7.907}], 'summary': 'Configuring document root in prod environment for server file handling.', 'duration': 31.321, 'max_score': 538.792, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ISVaMijczKc/pics/ISVaMijczKc538792.jpg'}, {'end': 610.582, 'src': 'embed', 'start': 562.206, 'weight': 0, 'content': [{'end': 570.113, 'text': 'from which subfolder the server should in the end serve our files or where the request should basically be handled.', 'start': 562.206, 'duration': 7.907}, {'end': 580.682, 'text': 'And we can set this to slash public so that now we target the public folder and there it will then automatically reach the index.php file.', 'start': 571.134, 'duration': 9.548}, {'end': 584.746, 'text': 'With this tiny change, we will fix this error.', 'start': 581.683, 'duration': 3.063}, {'end': 586.347, 'text': 'Now, what else can you configure here?', 'start': 585.106, 'duration': 1.241}, {'end': 593.053, 'text': 'A couple of server-specific settings about compression, for example, if you want to display errors,', 'start': 586.848, 'duration': 6.205}, {'end': 598.518, 'text': 'and until when you want to or when you want to terminate incoming requests.', 'start': 593.053, 'duration': 5.465}, {'end': 599.779, 'text': 'and some settings about logging.', 'start': 598.518, 'duration': 1.261}, {'end': 604.183, 'text': "Now, we don't need that, but this public thing here is really interesting.", 'start': 600.479, 'duration': 3.704}, {'end': 606.745, 'text': "With that, let's click apply here.", 'start': 604.643, 'duration': 2.102}, {'end': 610.582, 'text': 'And this will update our environment.', 'start': 608.581, 'duration': 2.001}], 'summary': "Configured server to serve files from 'public' folder, fixed error, updated environment.", 'duration': 48.376, 'max_score': 562.206, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ISVaMijczKc/pics/ISVaMijczKc562206.jpg'}, {'end': 663.142, 'src': 'embed', 'start': 636.249, 'weight': 6, 'content': [{'end': 639.73, 'text': 'We get an SQL error that the connection was refused.', 'start': 636.249, 'duration': 3.481}, {'end': 641.451, 'text': 'And this makes sense.', 'start': 640.431, 'duration': 1.02}, {'end': 646.454, 'text': "We're trying to connect to a database in the Laravel code, but we got no database here.", 'start': 641.932, 'duration': 4.522}, {'end': 653.597, 'text': 'By default, no database is created on that virtual server, which is spun up by Elastic Beanstalk behind the scenes.', 'start': 646.914, 'duration': 6.683}, {'end': 657.799, 'text': 'Now, we could install a server on this EC2 instance.', 'start': 654.498, 'duration': 3.301}, {'end': 663.142, 'text': 'By the way, you can always have a look at this instance by simply going to the EC2 service.', 'start': 658.179, 'duration': 4.963}], 'summary': 'Sql error: connection refused when trying to connect to database in laravel code on a virtual server spun up by elastic beanstalk. no database created by default on ec2 instance.', 'duration': 26.893, 'max_score': 636.249, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ISVaMijczKc/pics/ISVaMijczKc636249.jpg'}, {'end': 797.983, 'src': 'heatmap', 'start': 754.08, 'weight': 1, 'content': [{'end': 762.748, 'text': 'So database servers with a configuration of our choice, again regarding the power, and then with a database on these servers.', 'start': 754.08, 'duration': 8.668}, {'end': 770.275, 'text': "now this is a fully managed service, so here we don't have to take care about backing the data up or updating software.", 'start': 762.748, 'duration': 7.527}, {'end': 778.703, 'text': "that's all done by aws and there also is a free tier option available here, so that we even don't pay a dime for the first year as long as, again,", 'start': 770.275, 'duration': 8.428}, {'end': 783.187, 'text': 'we stay in some boundaries as set on the pricing page by aws.', 'start': 778.703, 'duration': 4.484}, {'end': 787.532, 'text': "So let's click, create a new RDS instance and we're taken to this wizard.", 'start': 783.948, 'duration': 3.584}, {'end': 796.761, 'text': 'Here we could create this instance based on an existing snapshot, which would basically copy old data into this to be created database.', 'start': 788.373, 'duration': 8.388}, {'end': 797.983, 'text': "I don't want that.", 'start': 797.402, 'duration': 0.581}], 'summary': 'Aws offers fully managed database servers with free tier option for the first year.', 'duration': 24.623, 'max_score': 754.08, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ISVaMijczKc/pics/ISVaMijczKc754080.jpg'}, {'end': 953.508, 'src': 'embed', 'start': 928.01, 'weight': 3, 'content': [{'end': 937.777, 'text': 'in the end, elastic beanstalk is managing everything and, as it turns out, it also gives you access to the database settings on the server,', 'start': 928.01, 'duration': 9.767}, {'end': 938.798, 'text': 'super global.', 'start': 937.777, 'duration': 1.021}, {'end': 940.299, 'text': 'how does that work?', 'start': 938.798, 'duration': 1.501}, {'end': 946.283, 'text': 'we can go to the config folder in the laravel project and there we have this database.php file.', 'start': 940.299, 'duration': 5.984}, {'end': 953.508, 'text': 'in here we manage the configuration for the database and if we open this again with any text editor of your choice,', 'start': 946.283, 'duration': 7.225}], 'summary': 'Elastic beanstalk manages everything, including database settings, providing super global access.', 'duration': 25.498, 'max_score': 928.01, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ISVaMijczKc/pics/ISVaMijczKc928010.jpg'}, {'end': 1089.328, 'src': 'embed', 'start': 1064.293, 'weight': 5, 'content': [{'end': 1072.295, 'text': 'With these globals set up we can go down and for example here replace the host with the RDS host name global which will hold the host.', 'start': 1064.293, 'duration': 8.002}, {'end': 1080.561, 'text': 'the database here can be replaced with the db name and the username, obviously with the username,', 'start': 1072.955, 'duration': 7.606}, {'end': 1086.546, 'text': 'whilst we can set the password well equal to rds password.', 'start': 1080.561, 'duration': 5.985}, {'end': 1089.328, 'text': 'whoops, rds password here.', 'start': 1086.546, 'duration': 2.782}], 'summary': 'Using global variables to set up rds host, database name, username, and password.', 'duration': 25.035, 'max_score': 1064.293, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ISVaMijczKc/pics/ISVaMijczKc1064293.jpg'}, {'end': 1139.089, 'src': 'embed', 'start': 1114.291, 'weight': 7, 'content': [{'end': 1126.018, 'text': "We couldn't choose 5.7 and literal 5.4, the version I'm using here actually requires MySQL 5.7 or higher, or a certain command.", 'start': 1114.291, 'duration': 11.727}, {'end': 1128.76, 'text': 'at the point of time we run, migrations will fail.', 'start': 1126.018, 'duration': 2.742}, {'end': 1139.089, 'text': 'we can already set this up to you and this is done in the app folder under providers, under app service provider.', 'start': 1129.8, 'duration': 9.289}], 'summary': 'Migrations fail due to mysql version 5.4 instead of 5.7, setup in app service provider needed.', 'duration': 24.798, 'max_score': 1114.291, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ISVaMijczKc/pics/ISVaMijczKc1114291.jpg'}], 'start': 470.553, 'title': 'Configuring laravel application and elastic beanstalk setup', 'summary': 'Discusses configuring a laravel application on beanstalk, addressing an error in handling incoming requests, updating server settings, and connecting a laravel application to rds on elastic beanstalk, highlighting the benefits of using rds and dynamic configuration of database settings.', 'chapters': [{'end': 635.468, 'start': 470.553, 'title': 'Configuring laravel application on beanstalk', 'summary': 'Discusses configuring a laravel application on beanstalk, addressing an error in handling incoming requests, and updating server settings to resolve the issue, with a focus on setting the document root to the public folder.', 'duration': 164.915, 'highlights': ['Configuring document root to public folder resolves the forbidden error By setting the document root to slash public in the server configuration, the issue of incoming requests not hitting the public folder is resolved, fixing the forbidden error.', 'Updating server settings to fix errors and improve application performance The chapter discusses updating server settings, such as compression, error display, request termination, and logging, to address errors and enhance application performance.', 'Restarting web server after applying changes to the environment After applying the configuration changes, the web server restarts, resulting in the application displaying improvements and resolving the previous error.']}, {'end': 1164.905, 'start': 636.249, 'title': 'Elastic beanstalk and rds setup', 'summary': 'Explains how to connect a laravel application to rds on elastic beanstalk, highlighting the benefits of using rds over managing a database on an ec2 instance and the dynamic configuration of database settings in laravel.', 'duration': 528.656, 'highlights': ['Elastic Beanstalk spun up a virtual server with no database by default, requiring manual server management if a database is installed, posing a disadvantage for big enterprises.', 'RDS allows for the creation of a fully managed database instance with a free tier option, eliminating the need for manual backups and updates, and ensuring dynamic retrieval of database settings.', 'Configuration of database settings in Laravel can be dynamically managed through the use of superglobals, allowing for the retrieval of database values and secure connectivity without needing to adjust Laravel code.', 'Adjusting the Laravel application to connect to the RDS database involves replacing the host, database, and username with the RDS hostname, database name, and username, respectively, in the database.php file.', 'To resolve migration issues, the default string length method needs to be set to 191 in the app service provider file, as the MySQL version used requires MySQL 5.7 or higher.']}], 'duration': 694.352, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ISVaMijczKc/pics/ISVaMijczKc470553.jpg', 'highlights': ['Configuring document root to public folder resolves the forbidden error', 'RDS allows for the creation of a fully managed database instance with a free tier option', 'Updating server settings to fix errors and improve application performance', 'Configuration of database settings in Laravel can be dynamically managed through the use of superglobals', 'Restarting web server after applying changes to the environment', 'Adjusting the Laravel application to connect to the RDS database involves replacing the host, database, and username with the RDS hostname, database name, and username, respectively, in the database.php file', 'Elastic Beanstalk spun up a virtual server with no database by default, requiring manual server management if a database is installed, posing a disadvantage for big enterprises', 'To resolve migration issues, the default string length method needs to be set to 191 in the app service provider file, as the MySQL version used requires MySQL 5.7 or higher']}, {'end': 1414.185, 'segs': [{'end': 1222.286, 'src': 'embed', 'start': 1190.456, 'weight': 0, 'content': [{'end': 1191.556, 'text': 'But what do you have to do?', 'start': 1190.456, 'duration': 1.1}, {'end': 1199.1, 'text': 'the first time you set up your Laravel application on a server, be that your development environment or the production environment?', 'start': 1191.556, 'duration': 7.544}, {'end': 1209.682, 'text': 'you have to run your migrations because, of course, in this project too, I set up a couple of migrations here in the database migrations folder,', 'start': 1200.319, 'duration': 9.363}, {'end': 1215.284, 'text': 'one for the users table and one for the posts table, and we have to run these migrations right at the start,', 'start': 1209.682, 'duration': 5.602}, {'end': 1222.286, 'text': 'when we deploy this app for the first time, to make sure that these tables are created in the database.', 'start': 1215.284, 'duration': 7.002}], 'summary': 'When setting up a laravel application, run migrations to create users and posts tables in the database.', 'duration': 31.83, 'max_score': 1190.456, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ISVaMijczKc/pics/ISVaMijczKc1190456.jpg'}, {'end': 1264.533, 'src': 'embed', 'start': 1233.626, 'weight': 3, 'content': [{'end': 1235.146, 'text': 'There are different ways of doing that.', 'start': 1233.626, 'duration': 1.52}, {'end': 1241.908, 'text': 'You could connect to this EC2 instance, which was created by Beanstalk, via SSH.', 'start': 1235.406, 'duration': 6.502}, {'end': 1249.11, 'text': 'You could set up an SSH connection and then manually execute this command in the Laravel folder on that server.', 'start': 1242.508, 'duration': 6.602}, {'end': 1250.091, 'text': 'That is doable.', 'start': 1249.33, 'duration': 0.761}, {'end': 1255.232, 'text': 'On Windows, you will need an extra program or application to run SSH though.', 'start': 1250.751, 'duration': 4.481}, {'end': 1264.533, 'text': 'A different alternative, or generally an alternative, is to take advantage of behavior Elastic Beanstalk offers to you.', 'start': 1256.949, 'duration': 7.584}], 'summary': 'Connecting to ec2 instance via ssh is doable; an alternative is using elastic beanstalk behavior.', 'duration': 30.907, 'max_score': 1233.626, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ISVaMijczKc/pics/ISVaMijczKc1233626.jpg'}, {'end': 1311.062, 'src': 'heatmap', 'start': 1281.647, 'weight': 0.713, 'content': [{'end': 1287.71, 'text': 'inside that folder you now can create files which have to end with dot config,', 'start': 1281.647, 'duration': 6.063}, {'end': 1293.953, 'text': 'which will be run by elastic beanstalk every time you deploy a new version,', 'start': 1287.71, 'duration': 6.243}, {'end': 1302.578, 'text': 'and therefore here i can simply create a new file where we first enter container underscore commands.', 'start': 1293.953, 'duration': 8.625}, {'end': 1305.199, 'text': 'And this is not something you can choose.', 'start': 1303.298, 'duration': 1.901}, {'end': 1311.062, 'text': 'This is a command or a setup, a configuration basically detected by Elastic Beanstalk.', 'start': 1305.239, 'duration': 5.823}], 'summary': 'Elastic beanstalk runs dot config files for new deployments, enforcing container commands and configurations.', 'duration': 29.415, 'max_score': 1281.647, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ISVaMijczKc/pics/ISVaMijczKc1281647.jpg'}, {'end': 1398.812, 'src': 'heatmap', 'start': 1349.128, 'weight': 2, 'content': [{'end': 1350.889, 'text': 'make sure to implement this fix.', 'start': 1349.128, 'duration': 1.761}, {'end': 1353.871, 'text': 'i showed a couple of seconds ago before you run this.', 'start': 1350.889, 'duration': 2.982}, {'end': 1364.704, 'text': 'so this fix regarding the default string length, and with this you can now save this file in your root project folder and name it,', 'start': 1353.871, 'duration': 10.833}, {'end': 1369.865, 'text': 'for example init.config.', 'start': 1364.704, 'duration': 5.161}, {'end': 1378.748, 'text': 'now, of course, make sure to, in the end, place it in this dot eb extensions folder here,', 'start': 1369.865, 'duration': 8.883}, {'end': 1387.366, 'text': 'And with that this file will get executed by Elastic Beanstalk and the command in there will be executed too, thus migrating our files.', 'start': 1379.662, 'duration': 7.704}, {'end': 1391.568, 'text': 'Now of course it will execute this whenever you deploy a new version too.', 'start': 1387.906, 'duration': 3.662}, {'end': 1398.812, 'text': 'So for newer versions you should probably not include that because migrate would fail then since the database tables already would exist.', 'start': 1391.928, 'duration': 6.884}], 'summary': 'Implement fix for default string length in init.config for elastic beanstalk to execute migration on new versions.', 'duration': 49.684, 'max_score': 1349.128, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ISVaMijczKc/pics/ISVaMijczKc1349128.jpg'}], 'start': 1164.905, 'title': 'Laravel database migration and elastic beanstalk configuration', 'summary': 'Covers the significance of running migrations in laravel to create essential database tables, preventing errors with older mysql versions, and explores configuring elastic beanstalk via ssh and .ebextensions, highlighting advantages and step-by-step processes for each method.', 'chapters': [{'end': 1232.566, 'start': 1164.905, 'title': 'Migrating database in laravel', 'summary': 'Discusses the importance of running migrations in laravel when deploying an app to ensure the creation of necessary database tables, preventing errors when using older mysql database versions.', 'duration': 67.661, 'highlights': ['Running migrations in Laravel is crucial when deploying an app to ensure that necessary database tables, such as for users and posts, are created at the start, preventing errors and ensuring proper functionality.', "The command 'php artisan migrate' is used to run migrations in Laravel, which is essential for setting up a Laravel application on a server, whether it's a development or production environment."]}, {'end': 1414.185, 'start': 1233.626, 'title': 'Configuring elastic beanstalk with ssh and .ebextensions', 'summary': 'Explores two methods for configuring elastic beanstalk - via ssh and using .ebextensions, explaining the step-by-step process and the advantage of each method, with a focus on executing commands and configuration files.', 'duration': 180.559, 'highlights': ["Using .ebExtensions allows for automatic execution of commands upon deploying a new version, demonstrated by creating and configuring a .ebExtensions folder and a .config file, with the example of running 'php artisan migrate' for database migration.", 'Connecting to the EC2 instance via SSH provides a more preferable method for one-time tasks like running commands, while .ebExtensions offers automatic execution of commands upon deployment, ensuring the migration of files and database tables.', 'On Windows, an additional program or application is required to run SSH for connecting to the EC2 instance, while .ebExtensions relies on creating and configuring .config files, ensuring automatic execution of commands upon deployment.']}], 'duration': 249.28, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ISVaMijczKc/pics/ISVaMijczKc1164905.jpg', 'highlights': ['Running migrations in Laravel is crucial for deploying an app, preventing errors, and ensuring proper functionality.', "The command 'php artisan migrate' is essential for setting up a Laravel application on a server.", 'Using .ebExtensions allows for automatic execution of commands upon deploying a new version, demonstrated by creating and configuring a .ebExtensions folder and a .config file.', 'Connecting to the EC2 instance via SSH provides a more preferable method for one-time tasks like running commands.', 'On Windows, an additional program or application is required to run SSH for connecting to the EC2 instance.']}, {'end': 1684.237, 'segs': [{'end': 1443.26, 'src': 'embed', 'start': 1414.565, 'weight': 0, 'content': [{'end': 1422.192, 'text': 'And of course, there are a couple of ways of automating this whole Elastic Beanstalk process even more, for example, with the Elastic Beanstalk CLI.', 'start': 1414.565, 'duration': 7.627}, {'end': 1424.313, 'text': 'Back to our example here, though.', 'start': 1422.972, 'duration': 1.341}, {'end': 1435.398, 'text': 'we can switch back to the elastic beanstalk console and it just finished here, and with that we can go back and create a new bundle we want to deploy.', 'start': 1425.094, 'duration': 10.304}, {'end': 1443.26, 'text': "so let's first delete the old one and then select everyone, everything here and compress it again.", 'start': 1435.398, 'duration': 7.862}], 'summary': 'Automate elastic beanstalk using cli, create and deploy new bundle.', 'duration': 28.695, 'max_score': 1414.565, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ISVaMijczKc/pics/ISVaMijczKc1414565.jpg'}, {'end': 1498.52, 'src': 'embed', 'start': 1456.126, 'weight': 1, 'content': [{'end': 1462.391, 'text': 'And back in the Elastic Beanstalk console, you can now click on upload and deploy to upload a new application version.', 'start': 1456.126, 'duration': 6.265}, {'end': 1469.737, 'text': "Here I'll choose this new file, which holds the changes regarding the dynamic database connection,", 'start': 1463.192, 'duration': 6.545}, {'end': 1476.063, 'text': 'this initialization script and this fix for level 5.4 with older MySQL databases.', 'start': 1469.737, 'duration': 6.326}, {'end': 1478.104, 'text': 'And we can now hit deploy.', 'start': 1476.723, 'duration': 1.381}, {'end': 1483.849, 'text': 'This will now upload the code again and then exchange the old code with this new one.', 'start': 1478.965, 'duration': 4.884}, {'end': 1488.712, 'text': 'Whilst doing that, it will not restart the EC2 instance or anything like that.', 'start': 1484.729, 'duration': 3.983}, {'end': 1491.875, 'text': "So we can still access our application whilst it's doing that.", 'start': 1489.053, 'duration': 2.822}, {'end': 1497.439, 'text': 'But after a couple of seconds, the new code will be live and can be used by us.', 'start': 1492.435, 'duration': 5.004}, {'end': 1498.52, 'text': 'It already finished.', 'start': 1497.739, 'duration': 0.781}], 'summary': 'Uploaded new application version with database connection changes and fix for level 5.4 in elastic beanstalk console.', 'duration': 42.394, 'max_score': 1456.126, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ISVaMijczKc/pics/ISVaMijczKc1456126.jpg'}, {'end': 1545.338, 'src': 'embed', 'start': 1521.674, 'weight': 5, 'content': [{'end': 1529.065, 'text': "but actually, if we scroll down, we see that it failed to deploy the application, so it simply didn't update the code.", 'start': 1521.674, 'duration': 7.391}, {'end': 1531.248, 'text': 'it rolled back to our old application code.', 'start': 1529.065, 'duration': 2.183}, {'end': 1534.531, 'text': 'Now this error can be really strange.', 'start': 1531.889, 'duration': 2.642}, {'end': 1539.354, 'text': 'At first it looks like we messed something up in our YAML since it tells us invalid YAML.', 'start': 1534.571, 'duration': 4.783}, {'end': 1545.338, 'text': 'But actually this is related to how Mac, and you can see a hint here, stores hidden folders.', 'start': 1539.694, 'duration': 5.644}], 'summary': 'Deployment failed, rolled back to old code due to invalid yaml and mac storing hidden folders.', 'duration': 23.664, 'max_score': 1521.674, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ISVaMijczKc/pics/ISVaMijczKc1521674.jpg'}, {'end': 1591.71, 'src': 'heatmap', 'start': 1551.079, 'weight': 0.755, 'content': [{'end': 1557.545, 'text': 'You can simply fix this error or this strange behavior by going into the terminal, into that folder,', 'start': 1551.079, 'duration': 6.466}, {'end': 1563.531, 'text': 'so where this zip file can be found and executing zip dash D Laravel.', 'start': 1557.545, 'duration': 5.986}, {'end': 1568.033, 'text': 'simple block the zip file And then underscore.', 'start': 1563.531, 'duration': 4.502}, {'end': 1572.815, 'text': 'underscore Mac OS X forward slash, backslash star.', 'start': 1568.033, 'duration': 4.782}, {'end': 1577.137, 'text': 'And this will remove this annoying folder in there.', 'start': 1573.495, 'duration': 3.642}, {'end': 1582.538, 'text': 'with this out of the way we can try uploading this again.', 'start': 1578.533, 'duration': 4.005}, {'end': 1585.802, 'text': "so let's choose this zip file again.", 'start': 1582.538, 'duration': 3.264}, {'end': 1591.71, 'text': 'now we have to define our own version label, since the old one is already taken,', 'start': 1585.802, 'duration': 5.908}], 'summary': "Fix error by executing 'zip -d laravel.zip *' in terminal.", 'duration': 40.631, 'max_score': 1551.079, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ISVaMijczKc/pics/ISVaMijczKc1551079.jpg'}, {'end': 1684.237, 'src': 'embed', 'start': 1625.607, 'weight': 4, 'content': [{'end': 1627.952, 'text': 'Now it seems to successfully create a user.', 'start': 1625.607, 'duration': 2.345}, {'end': 1629.416, 'text': 'This already hits the database.', 'start': 1628.073, 'duration': 1.343}, {'end': 1631.12, 'text': "And let's enter a post.", 'start': 1630.217, 'duration': 0.903}, {'end': 1634.339, 'text': 'And see if that also works.', 'start': 1632.998, 'duration': 1.341}, {'end': 1635.48, 'text': 'And it does.', 'start': 1634.859, 'duration': 0.621}, {'end': 1638.982, 'text': 'Now we got the application working on Elastic Beanstalk.', 'start': 1636.1, 'duration': 2.882}, {'end': 1641.544, 'text': 'With a dynamic connection to the database.', 'start': 1639.122, 'duration': 2.422}, {'end': 1645.006, 'text': 'As you saw there were some gotchas we had to take care about.', 'start': 1642.104, 'duration': 2.902}, {'end': 1646.207, 'text': 'As I mentioned.', 'start': 1645.406, 'duration': 0.801}, {'end': 1650.57, 'text': 'There are of course more flexible or better ways of deploying everything.', 'start': 1646.567, 'duration': 4.003}, {'end': 1652.451, 'text': 'Through the Elastic Beanstalk CLI.', 'start': 1650.59, 'duration': 1.861}, {'end': 1654.893, 'text': 'You can automate a lot of the stuff you saw here.', 'start': 1652.711, 'duration': 2.182}, {'end': 1657.334, 'text': 'But this is how you can ship your applications.', 'start': 1655.333, 'duration': 2.001}, {'end': 1659.576, 'text': 'And there is nothing wrong about this approach.', 'start': 1657.394, 'duration': 2.182}, {'end': 1662.698, 'text': 'So if you got a Laravel application which you want to host.', 'start': 1659.876, 'duration': 2.822}, {'end': 1664.259, 'text': 'This is how you could do it.', 'start': 1663.178, 'duration': 1.081}, {'end': 1670.805, 'text': "And for the first year, as long as you don't use any other services at least, this will be for free.", 'start': 1664.6, 'duration': 6.205}, {'end': 1672.867, 'text': 'That is how that works.', 'start': 1671.726, 'duration': 1.141}, {'end': 1674.388, 'text': 'In another video.', 'start': 1673.287, 'duration': 1.101}, {'end': 1682.295, 'text': 'I want to take a closer look at Elastic Beanstalk and what we can do in the configuration, what all this stuff on the left here is about.', 'start': 1674.388, 'duration': 7.907}, {'end': 1683.536, 'text': 'Hopefully see you there.', 'start': 1682.535, 'duration': 1.001}, {'end': 1684.237, 'text': 'Bye.', 'start': 1683.977, 'duration': 0.26}], 'summary': 'Successfully created user and deployed application on elastic beanstalk. hosting laravel application for free for the first year.', 'duration': 58.63, 'max_score': 1625.607, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ISVaMijczKc/pics/ISVaMijczKc1625607.jpg'}], 'start': 1414.565, 'title': 'Automating elastic beanstalk deployment', 'summary': "Discusses automating the elastic beanstalk deployment process using the elastic beanstalk cli, including creating and deploying a new application version with changes like dynamic database connection and initialization script, with a seamless update process that does not disrupt the application's availability.", 'chapters': [{'end': 1521.674, 'start': 1414.565, 'title': 'Automating elastic beanstalk deployment', 'summary': "Discusses automating the elastic beanstalk deployment process using the elastic beanstalk cli, including creating and deploying a new application version with changes like dynamic database connection and initialization script, with a seamless update process that does not disrupt the application's availability.", 'duration': 107.109, 'highlights': ['Using Elastic Beanstalk CLI to automate deployment process The CLI provides a way to further automate the Elastic Beanstalk process, streamlining deployment.', "Creating and deploying a new application version The process involves compressing the application, uploading the new version with changes, and seamlessly deploying it without disrupting the application's availability.", 'Changes in the new application version The new version includes changes related to dynamic database connection, initialization script, and a fix for compatibility with older MySQL databases.', 'Seamless update process without disrupting application availability The deployment process ensures that the application remains accessible during the update, with the new code becoming live after the update is completed.']}, {'end': 1684.237, 'start': 1521.674, 'title': 'Troubleshooting deployment and successful application launch', 'summary': 'Highlights troubleshooting a failed deployment due to a hidden folder issue on mac, resolving it using terminal commands, successfully uploading and launching the application on elastic beanstalk, and the benefits of using this approach for hosting laravel applications, which can be done for free for the first year.', 'duration': 162.563, 'highlights': ['Successfully launching the application on Elastic Beanstalk with a dynamic connection to the database, overcoming deployment challenges and showcasing the benefits of this approach for hosting Laravel applications.', 'Resolving a failed deployment due to a hidden folder issue on Mac by executing terminal commands to remove the extra subfolder, ensuring successful application updates.', 'Emphasizing the free hosting for the first year when deploying Laravel applications on Elastic Beanstalk, providing a cost-effective option for hosting.', 'Highlighting the flexibility and automation offered by the Elastic Beanstalk CLI for deploying applications, showcasing the potential for streamlining the deployment process.']}], 'duration': 269.672, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ISVaMijczKc/pics/ISVaMijczKc1414565.jpg', 'highlights': ['Using Elastic Beanstalk CLI to automate deployment process The CLI provides a way to further automate the Elastic Beanstalk process, streamlining deployment.', "Creating and deploying a new application version The process involves compressing the application, uploading the new version with changes, and seamlessly deploying it without disrupting the application's availability.", 'Changes in the new application version The new version includes changes related to dynamic database connection, initialization script, and a fix for compatibility with older MySQL databases.', 'Seamless update process without disrupting application availability The deployment process ensures that the application remains accessible during the update, with the new code becoming live after the update is completed.', 'Successfully launching the application on Elastic Beanstalk with a dynamic connection to the database, overcoming deployment challenges and showcasing the benefits of this approach for hosting Laravel applications.', 'Resolving a failed deployment due to a hidden folder issue on Mac by executing terminal commands to remove the extra subfolder, ensuring successful application updates.', 'Emphasizing the free hosting for the first year when deploying Laravel applications on Elastic Beanstalk, providing a cost-effective option for hosting.', 'Highlighting the flexibility and automation offered by the Elastic Beanstalk CLI for deploying applications, showcasing the potential for streamlining the deployment process.']}], 'highlights': ['Elastic Beanstalk simplifies deployment by automating server setup, configuration, and code deployment, allowing for easy management of different versions and environments.', 'The application allows signing up and creating blog posts, providing an overview of all blog posts created, and is available for access on GitHub.', "The process of generating an API key using the artisan command is detailed, requiring PHP installation and execution of 'php artisan key:generate' command to store the application key in the .env file.", 'The configuration options available in Elastic Beanstalk, including choosing the type of preset, environment settings, and managing different environments, are mentioned.', 'Configuring document root to public folder resolves the forbidden error', 'RDS allows for the creation of a fully managed database instance with a free tier option', 'Running migrations in Laravel is crucial for deploying an app, preventing errors, and ensuring proper functionality.', 'Using .ebExtensions allows for automatic execution of commands upon deploying a new version, demonstrated by creating and configuring a .ebExtensions folder and a .config file.', 'Using Elastic Beanstalk CLI to automate deployment process The CLI provides a way to further automate the Elastic Beanstalk process, streamlining deployment.', "Creating and deploying a new application version The process involves compressing the application, uploading the new version with changes, and seamlessly deploying it without disrupting the application's availability."]}