'How can I deploy my Laravel project to root folder in Hostinger with git?

I'm trying deploy my project to Hostinger with git, but I can't deploy direct to root folder (/home/uXXXXXXXX). The path in cPanel is directly to /home/uXXXXXXX/public_html.

Is there anyway to deploy to root folder? My project is in Laravel. What is the best way to deploy to shared host? Because part of the folders need to be in the root and others in /public_html. Will I have always move folders manualy in my hosting?

I'm a little confused in this part. I'll appreciate any help



Solution 1:[1]

The other answers might work but there's no way am complicating something so basic. What if you have the website working locally in a public folder rather than public_html and then you have to make changes to your local branch and re-deploy to git? You'll face errors when your local branch is not in sync with your remote branch.

The best way to do is:

  1. create a new .htaccess file inside public_html directory
  2. Add these codes
  RewriteCond %{HTTP_HOST} ^your-domain.com$ [NC,OR]
  RewriteCond %{HTTP_HOST} ^www.your-domain.com$
  RewriteCond %{REQUEST_URI} !your-laravel-folder/public/
  RewriteRule (.*) /your-laravel-folder/public/$1 [L]

In the above lines you should replace the following: your-domain.com – Type your own domain name and also replace your-laravel-folder with your folder name.

Solution 2:[2]

you can actually clone it using ssh access.

open ur ssh for a particular domain. go to the root folder. u can clone it there.

you can keep your project files there. even though u have top copy the contents of puclic folder inside your laravel project to public_html folder, and also edit the index.php so that all resources must be pointed to the project folder outside public_html

Inorder to update your project you will have to clone it from ssh again

Solution 3:[3]

Step 1: configuration

  • Install Laravel locally.
  • Rename public folder to public_html
  • add Schema::defaultStringLength(191); to boot function in App/Providers/AppServiceProvider.php.
  • Initialize git and commit.

Step 2: push to GitHub

  • create a repo in github

  • push local repo just created moments ago to GitHub.

step 3: server management

  • Login with SSH from your local terminal

  • change directory to correct domain (if you have many domains)

  • run ls command it should return public_html (only if there are no other files in root directory, if any backup and delete them)

  • backup and delete public_html directory. rm -rf public_html

    basically all your data is located in public_html/ directory

  • run git clone YOUR-REPO@git ./

useful links:

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Skykid Felix
Solution 2 Shagal Sajid
Solution 3