Kritim Yantra
Jul 08, 2025
“How do I get this project live... without using complicated CI/CD pipelines?”
If you’re a beginner or don’t have access to tools like GitHub Actions, Jenkins, or Forge—don’t worry. You can still deploy Laravel manually, and this guide will show you how.
By the end of this guide, you’ll know how to:
Let’s jump in!
Whether you're using a VPS (like DigitalOcean), shared hosting, or a control panel like CWP or cPanel, your server should have:
Make sure SSH access is enabled, and you can log in to the server using a terminal.
You can upload your Laravel project using one of these methods:
If your code is in GitHub or GitLab:
ssh user@your-server-ip
cd /var/www/html
git clone https://github.com/yourusername/your-laravel-project.git
/home/your_user/public_html/
or /var/www/html
).Laravel needs an .env
file for configuration.
Rename the example env file:
cp .env.example .env
Update Database and App Info:
APP_NAME="MyLaravelApp"
APP_URL=http://yourdomain.com
DB_DATABASE=your_database
DB_USERNAME=your_username
DB_PASSWORD=your_password
Laravel uses Composer for managing PHP packages.
Run this on your server inside the project folder:
composer install --no-dev --optimize-autoloader
If you get a “composer not found” error, install Composer:
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
Laravel needs write permissions for certain folders:
chmod -R 775 storage
chmod -R 775 bootstrap/cache
You might also run:
chown -R www-data:www-data .
🔒 Tip: Never give full 777
permission in production.
Now that everything’s in place, run:
php artisan key:generate
php artisan config:cache
php artisan migrate
php artisan storage:link
These commands:
Make sure your web server points to the **public/**
directory.
<VirtualHost *:80>
ServerName yourdomain.com
DocumentRoot /var/www/html/your-project/public
<Directory /var/www/html/your-project/public>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Then restart Apache:
sudo service apache2 restart
Use this block inside your server config:
root /var/www/html/your-project/public;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
Restart Nginx:
sudo service nginx restart
To update your app later:
Pull latest changes from Git (or upload manually)
Run:
composer install --no-dev
php artisan migrate
php artisan config:cache
Done! 🎉
✅ Code uploaded
✅ .env
configured
✅ Composer dependencies installed
✅ Permissions set
✅ Artisan commands run
✅ Web server pointing to public/
✅ App online!
Let’s say you’re freelancing for a small business that needs their Laravel app online today. You don’t have time to set up GitHub Actions or Forge.
With just SSH, Composer, and this guide—you can deploy manually in under 30 minutes.
🚫 Don’t upload the .env
file to public Git repos
🔒 Keep storage/
and .env
outside public access
🐘 Always back up your database before running migrate
🎯 Use php artisan down
during major updates to prevent user errors
CI/CD pipelines are powerful—but not required.
Whether you’re freelancing, working solo, or managing a tight budget, manual Laravel deployment is 100% possible and effective if done right.
You now have the step-by-step foundation to go live confidently. 💪
Yes, but make sure it supports PHP 8+, Composer, and has SSH access. Some shared hosts require a bit more setup.
Yes—as long as you follow best practices: proper permissions, secure .env
, backups, and safe database updates.
You might introduce errors or downtime if you're not careful. Manual deployment requires discipline and testing before pushing changes.
Have you manually deployed a Laravel project before?
What worked well—or what went wrong?
👉 Share your experience or ask a question in the comments below!
No comments yet. Be the first to comment!
Please log in to post a comment:
Sign in with Google