Configuring GoDaddy’s shared hosting for Laravel 5 and Git
This post shows how to configure a GoDaddy shared hosting service (hosting Linux with cPanel) for a Laravel 5 application using Git for deploying the code.
Take a look to this other post for general methods about deploy Laravel on shared hosting services: Deploy Laravel Application On Shared Hosting.
1. Configuring SSH and Git
Enable SSH: from cPanel go on Security > SSH Access > Enable SSH, then import your public key.
Check the SSH connection:
# From your local pc
$ ssh [godaddy-user]@[domain-name.com]
where [godaddy-user]
is the username configured for your GoDaddy’s cPanel and [domain-name.com]
is the site domain name.
Check that Git is correctly installed on GoDaddy:
$ # From the GoDaddy host
$ git --version
Create the bin directory on the user’s home:
$ # Always from the GoDaddy host
$ mkdir ~/bin
2. Check the PHP version
Open an SSH connection with GoDaddy, then:
$ php --version
Should print something like:
PHP 5.5.24 (cgi-fcgi) (built: Apr 20 2015 06:24:55)
Check that the php version is correct (for Laravel 5.1 must be greater than 5.5.9).
Troubleshooting: wrong php version
Can happen that you have setted the newest PHP version from cPanel but via SSH you still have an old version.
If the PHP version is wrong, for example is 5.4.43 instead of 5.5.24, make sure you have changed it in cPanel (in Software > Select PHP Version) then try with:
$ /opt/alt/php55/usr/bin/php --version
If the path /opt/alt/php55/usr/bin/php
print out the correct version then set it as your php default command:
$ cd
$ vim .bash_profile
In the file .bash_profile change the row
PATH=$PATH:$HOME/bin
with
PATH=$HOME/bin:$PATH
That is: prepend your local bin directory to assign it the first priority.
Create a link to the right php version:
$ cd bin
$ ln -s /opt/alt/php55/usr/bin/php
Close and reopen the ssh connection and check now the php version.
3. Create the application folder
From GoDaddy host, create the [app]
folder in your home, where [app]
is the name of your Laravel application:
$ cd ~
$ mkdir [app]
This folder will contains your application.
Depending if you want to install the application in the main domain, e.g. http://example.com
, or in a subdomain, e.g. http://[app].example.com
, do one of the following.
Main domain
Replace the public_html
folder with a symbolic link to [app]/public
(be sure public_html
is empty before delete it):
$ rm -r public_html
$ ln -s [app]/public public_html
Subdomains
Create a sub domain in GoDaddy
http://[sub-domain].[domain-name.com]
access the cPanel at the url http://[domain-name.com]/cpanel
then go on Domains > Subdomains > Create Subdomain and insert:
- Subdomain:
[sub-domain]
(e.g.app
) - Document root:
/[app]/public
4. Get Composer
From GoDaddy host:
$ # Install composer
$ cd bin
$ curl -sS https://getcomposer.org/installer | php
$ ln -s ./composer.phar composer
5. Configuring Git for automatic deploy
Create the Git bare repository on the GoDaddy’s host:
$ # Create the git directory where the repository will be mantained
$ cd ~
$ mkdir git
$ # Create the repository
$ cd git
$ git init --bare --shared [app].git
$ # Create the post-receive hook file
$ cd [app].git/hooks
$ touch post-receive
$ # Make the hook executable
$ chmod +x post-receive
$ # Configure the hook
$ vim post-receive
Write in the file post-receive all the operations that will be performed after the push is done:
#!/bin/sh
# Set up our PATH variable and export it
PATH="/home/[godaddy-user]/bin":$PATH
export PATH
# App directories
APP_WEB_DIR="/home/[godaddy-user]/[app]"
APP_GIT_DIR="/home/[godaddy-user]/git/[app].git"
# Checkout the last commit inside the web app directory
git --work-tree=${APP_WEB_DIR} --git-dir=${APP_GIT_DIR} checkout -f
# Clean the app directory
# Use -e "[pattern]" to exclude some file or directory to be cleaned,
# as they are in the .gitignore file
# git --work-tree=${APP_WEB_DIR} clean -fd
# Run composer
cd ${APP_WEB_DIR}
composer install
# Ensure that storage's folder have write permission for the group
chmod -R g+w storage
# Optimizations
echo "Running optimizations"
php artisan config:cache
php artisan route:cache
# Do other things here, for example load database changes automatically
# php artisan migrate
# ...
6. Add the ‘production’ remote in your repository
From your PC:
$ # Go in the project's folder
$ cd /path/to/your/project
# Add the 'production' server's URL
$ git remote add production ssh://[godaddy-user]@[domain-name.com]/~/git/[app].git
Now you can deploy the project on GoDaddy (pushing it on the production remote) with:
$ git push production master
You should now be able to see your code on the folder ~/[app]
on the GoDaddy’s host.
After configured the database in the host and configured your application (for example you have to create the .env
file in the host and set here the db connection parameters) you will be able to access your application from your domain.
References
https://www.godaddy.com/help/accessing-git-on-your-cpanel-shared-hosting-account-12141
https://www.godaddy.com/help/how-to-install-git-on-linux-web-hosting-12391
https://laravel.com/docs/master/configuration
-
Shane
-
Andrea
-
Shane
-
Andrea
-
Shane
-
-
-
-
-
Pratyush Barik
-
Mohit Panjwani
-
J. Fernando Galvez
-
Andrea
-
J. Fernando Galvez
-
J. Fernando Galvez
-
Andrea
-
-
-
-
J. Fernando Galvez
-
Andrea
-
J. Fernando Galvez
-
Andrea
-
J. Fernando Galvez
-
-
-
-
-
claide
-
claide
-
Andrea
-
claide
-
Andrea
-
-
-
-
-
claide
-
Andrea
-
claide
-
Andrea
-
claide
-
-
-
-
-
claide
-
Andrea
-
-
Francis Claide Magallen
-
Francis Claide Magallen
-
Andrea
-
-
-
Ahmad
-
Ahmad
-