- Prerequisites
- Step 1: Prepare Your Laravel Application
- Step 2: Create a Deployment Key in GitHub
- Step 3: Upload the SSH Key to cPanel
- Step 4: Clone Your Repository in cPanel
- Step 5: Configure the Public Folder
- Step 6: Set Up Environment and Permissions
- Step 7: Automate Deployment with Git Pull
- Conclusion
Deploying a Laravel application on cPanel using Git streamlines the process and makes updates more manageable. This tutorial will guide you through deploying a Laravel app on cPanel via Git, ensuring your app is ready for production.
Prerequisites
Before you begin, ensure you have the following:
- A cPanel hosting account
- A Laravel application hosted on GitHub
- Basic knowledge of using cPanel and command-line interface
- A database (MySQL) created in cPanel
Step 1: Prepare Your Laravel Application
Before deploying your Laravel app, ensure it's ready for production:
-
Set Environment Variables: Update your
.env
file with production database credentials and other environment-specific settings.APP_NAME=YourAppName APP_ENV=production APP_KEY=base64:your-app-key APP_DEBUG=false APP_URL=https://yourdomain.com DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=your_database_name DB_USERNAME=your_database_username DB_PASSWORD=your_database_password
-
Optimize Your Application: Run the following commands to optimize your Laravel application:
php artisan config:cache php artisan route:cache php artisan view:cache
Step 2: Create a Deployment Key in GitHub
-
Generate an SSH Key: On your local machine, generate an SSH key pair if you don't already have one.
ssh-keygen -t rsa -b 4096 -C "[email protected]"
Follow the prompts to save the key pair in the default location (
~/.ssh/id_rsa
). This command generates a public and a private key. -
Copy the Public Key: Copy the contents of your public key to your clipboard.
cat ~/.ssh/id_rsa.pub
-
Add the SSH Key to GitHub:
- Go to your GitHub repository.
- Navigate to Settings > Deploy keys.
- Click Add deploy key, give it a title, and paste your public key into the Key field.
- Ensure you check Allow write access if you need to push to the repository from cPanel.
- Click Add key.
Step 3: Upload the SSH Key to cPanel
-
Log in to cPanel: Access your cPanel dashboard using your hosting account credentials.
-
Access SSH Access: In the Security section, click on SSH Access.
-
Manage SSH Keys:
- Click Manage SSH Keys.
- Click Import Key.
- Give the key a name (e.g.,
GitHubDeployKey
). - Paste your private key (from
~/.ssh/id_rsa
) into the Private Key field. - Click Import.
-
Authorize the SSH Key: After importing, make sure to Manage Authorization for the key and click Authorize.
Step 4: Clone Your Repository in cPanel
-
Open Terminal in cPanel: In the Advanced section, click on Terminal.
-
Navigate to Your Desired Directory: Navigate to the directory where you want to deploy your Laravel app. This is usually
~/
or a subdirectory within it.cd ~/your_directory
-
Clone Your Repository: Use Git to clone your repository.
git clone [email protected]:your_username/your_repository.git
Step 5: Configure the Public Folder
-
Navigate to Your Laravel Directory: Go to the directory where you cloned your repository.
cd your_repository
-
Create a Symlink for the
public
Folder:-
Delete the existing
public_html
folder in cPanel.rm -rf ~/public_html
-
Create a symlink from your Laravel
public
folder topublic_html
.ln -s ~/your_directory/your_repository/public ~/public_html
-
Step 6: Set Up Environment and Permissions
-
Copy Environment File:
cp .env.example .env
-
Set Application Key:
php artisan key:generate
-
Install Dependencies: If not already installed, install Composer and run:
composer install --optimize-autoloader --no-dev
-
Set Permissions:
chmod -R 775 storage chmod -R 775 bootstrap/cache
Step 7: Automate Deployment with Git Pull
-
Create a Deploy Script: Create a script to pull the latest changes and run necessary commands.
nano deploy.sh
Add the following content to
deploy.sh
:#!/bin/bash git pull origin main composer install --optimize-autoloader --no-dev php artisan migrate --force php artisan config:cache php artisan route:cache php artisan view:cache
Save and exit the editor.
-
Make the Script Executable:
chmod +x deploy.sh
-
Run the Deploy Script:
./deploy.sh
Conclusion
Deploying a Laravel application on cPanel using Git is a streamlined process that makes updates easier and more efficient. By following this tutorial, you've set up a robust deployment pipeline that leverages Git for version control and simplifies the deployment process.
For further reading, check out these resources:
Interested in proving your knowledge of this topic? Take the PHP Fundamentals certification.
PHP Fundamentals
Covering the required knowledge to create and build web applications in PHP.
$99
Related articles
Tutorials WordPress Database Design Tooling
How to store and output currency values in WordPress
Effectively manage currency values in WordPress, from storage best practices to displaying currency amounts on your website. This guide covers everything to ensure accurate and user-friendly currency handling in WordPress.