How to Host a Laravel App on AWS EC2 – Step-by-Step Guide
This guide walks you through launching a Laravel app on AWS EC2 from scratch.
1. Launch EC2 Instance
- Open EC2 Dashboard > Launch Instance
- Choose Amazon Linux 2023 AMI (or Ubuntu)
- Instance Type:
t2.micro
(Free Tier) - Create/Use Key Pair
- Security Group: Allow ports
22
,80
,443
2. Connect via SSH
ssh -i your-key.pem ec2-user@YOUR_PUBLIC_IP
3. Install Apache, PHP, Git, Composer
sudo yum update -y
sudo yum install -y httpd php php-cli php-mysqlnd php-mbstring php-xml php-bcmath unzip git
sudo systemctl start httpd
sudo systemctl enable httpd
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php
sudo mv composer.phar /usr/local/bin/composer
4. Install Laravel App
cd /var/www/html
sudo git clone https://github.com/your-repo/laravel-app.git
cd laravel-app
sudo composer install
sudo cp .env.example .env
sudo php artisan key:generate
5. Set Permissions
sudo chown -R apache:apache /var/www/html/laravel-app
sudo chmod -R 775 storage bootstrap/cache
6. Configure Apache Virtual Host (Optional)
sudo nano /etc/httpd/conf.d/laravel.conf
Example config:
<VirtualHost *:80>
DocumentRoot "/var/www/html/laravel-app/public"
<Directory "/var/www/html/laravel-app/public">
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
sudo systemctl restart httpd
7. Install MariaDB
sudo yum install -y mariadb105-server
sudo systemctl start mariadb
sudo systemctl enable mariadb
sudo mysql_secure_installation
8. Create Database
sudo mysql -u root -p
CREATE DATABASE laravel_db;
CREATE USER 'laravel_user'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON laravel_db.* TO 'laravel_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
9. Update Laravel .env
DB_DATABASE=laravel_db
DB_USERNAME=laravel_user
DB_PASSWORD=password
10. Run Migrations (If Any)
php artisan migrate
🎉 Done!
Visit http://YOUR_EC2_PUBLIC_IP
to see your Laravel app in action.