Connect to Hostgator's terminal using Putty or
some other SSH tool. Once logged in, type 'pwd'. You should see
something like this:
-jailshell$ pwd
/home2/CpanelUsername
This is where we want to install Laravel. But in order to do so, we
must install Composer. However, Composer requires PHP 5.3.2+ to run. To
check the PHP version, type 'php -v' (remember, the terminal PHP can be
different from the PHP configuration for your website). Hopefully you'll
see someting like this:
-jailshell$ php -v
PHP 5.5.6 (cli) (built: Dec 4 2013 13:50:26)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2013 Zend Technologies
PHP 5.5.6! You probably won't. In fact, you'll probably get PHP 5.2,
just shy of the requirements to install composer and Laravel. In order
to remedy this, create a new file called '.bashrc'. Kind of like
.htaccess, the dot makes the file hidden. In the .bashrc file, put in
the code:
alias php='/opt/php55/bin/php'
alias composer='/home2/CpanelUsername/composer.phar'
export PATH="/opt/php55/bin:$PATH"
Also, create a file called '.bash_profile'. In it, put:
[[ -s ~/.bashrc ]] && source ~/.bashrc
We've created several aliases. The php alias allows us to simply type
'php' instead of the lengthy '/opt/php55/bin/php' in order to access
PHP 5.5. The composer alias allows us to type 'composer' instead of
'composer.phar' before every command. Also, since, we've created a
direct path to it, composer.phar can be accessed anywhere, even if the
file is not in the Laravel directory. The export PATH line allows
Laravel to correctly path to the right PHP during its installation.
Aliases do not apply during the installation process. Lastly, the
bash_profile file makes it so that the .bashrc file fires up every time
you start the linux console.
Upload both of them in your CpanelUsername directory, so it looks something like this:
CpanelUsername/
access-logs/
etc/
perl5/
public_html/
tmp/
www/
.bash_history
.bashrc <-- here
.bash_profile <--here
Your directory may have more files and folders, and I've purposefully
ommited the hidden ones. Now, you must activate the bash files. In your
console, type: 'source ~/.bashrc' and then check your php version by
typing 'php -v'.
-jailshell$ source ~/.bashrc
-jailshell$ php -v
PHP 5.5.6 (cli) (built: Dec 4 2013 13:50:26)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2013 Zend Technologies
Awesome! We're good to go. Oh, while we're on the topic of PHP 5.5,
we want to make an '.htaccess' file in our public_html folder. Create a
file called '.htaccess' and write:
AddHandler application/x-httpd-php55 .php
This will enable PHP 5.5.6 on the website. Eventually, after we
integrate Laravel's .htaccess, it should look something like this:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
AddHandler application/x-httpd-php55 .php
Time to install Composer. In your terminal, type:
-jailshell$ curl -sS https://getcomposer.org/installer | php
The above process will download the necessary composer files in the
current location. After that, install Laravel by running the following
command:
-jailshell$ composer create-project laravel/laravel --prefer-dist
Now your directory should look something like this:
CpanelUsername/
.composer/
access-logs/
etc/
laravel/
perl5/
public_html/
tmp/
www/
.bash_history
.bashrc
.bash_profile
composer.phar
If you open the laravel folder, you'll see a folder structure like this:
CpanelUsername/
.composer/
access-logs/
etc/
laravel/
app/
bootstrap/
public/
...
perl5/
public_html/
tmp/
www/
.bash_history
.bashrc
.bash_profile
composer.phar
You want to take the contents from the public folder and move them to
the public_html folder. You can delete the public folder. It should
look like this:
CpanelUsername/
.composer/
access-logs/
etc/
laravel/
perl5/
public_html/
packages/
.htaccess
favicon.ico
index.php
robots.txt
tmp/
www/
.bash_history
.bashrc
.bash_profile
composer.phar
At this point, this starts to look a lot like Dries Vint's excellent guide. We are doing the first option. Anyway, open the 'laravel/bootstrap/paths.php' file and correct the bootstrap path like this:
28
29 'public' => __DIR__.'/../../public_html',
30
Do the same in 'public_html/index.php' and change the following lines:
20
21 require __DIR__.'/../laravel/bootstrap/autoload.php';
22
//
34
35 $app = require_once __DIR__.'/../laravel/bootstrap/start.php';
36
And that is it! Fire up your website and enjoy the lovely 'hello' screen :).
-jailshell$ pwd
/home2/CpanelUsername
-jailshell$ php -v
PHP 5.5.6 (cli) (built: Dec 4 2013 13:50:26)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2013 Zend Technologies
alias php='/opt/php55/bin/php'
alias composer='/home2/CpanelUsername/composer.phar'
export PATH="/opt/php55/bin:$PATH"
[[ -s ~/.bashrc ]] && source ~/.bashrc
CpanelUsername/
access-logs/
etc/
perl5/
public_html/
tmp/
www/
.bash_history
.bashrc <-- here
.bash_profile <--here
-jailshell$ source ~/.bashrc
-jailshell$ php -v
PHP 5.5.6 (cli) (built: Dec 4 2013 13:50:26)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2013 Zend Technologies
AddHandler application/x-httpd-php55 .php
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
AddHandler application/x-httpd-php55 .php
-jailshell$ curl -sS https://getcomposer.org/installer | php
-jailshell$ composer create-project laravel/laravel --prefer-dist
CpanelUsername/
.composer/
access-logs/
etc/
laravel/
perl5/
public_html/
tmp/
www/
.bash_history
.bashrc
.bash_profile
composer.phar
CpanelUsername/
.composer/
access-logs/
etc/
laravel/
app/
bootstrap/
public/
...
perl5/
public_html/
tmp/
www/
.bash_history
.bashrc
.bash_profile
composer.phar
CpanelUsername/
.composer/
access-logs/
etc/
laravel/
perl5/
public_html/
packages/
.htaccess
favicon.ico
index.php
robots.txt
tmp/
www/
.bash_history
.bashrc
.bash_profile
composer.phar
28
29 'public' => __DIR__.'/../../public_html',
30
20
21 require __DIR__.'/../laravel/bootstrap/autoload.php';
22
//
34
35 $app = require_once __DIR__.'/../laravel/bootstrap/start.php';
36
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Uploading your base files
Laravel has been designed so that you can keep your app files out of the public_html folder which adds extra security for your app. So what I suggest is that you create a folder in your root home directory, name it something like ‘app_base’, and put everything in there, assuming you have downloaded Laravel as a zip file from github. We will work on that folder for the next steps.Your next option is to use git command via ssh. Hostgator has git installed for you.
login via ssh using the command bellow:
ssh -p 2222 username@server-ip-addressOnce logged in, and you are in your root home folder, type git just to make sure you have it installed.
Next, clone the Laravel repository in the app_base folder using this code:
git clone https://github.com/laravel/laravel.git app_basegit will start downloading the framework for you.
Once finished, we are ready to install composer’s phar file. getComposer.org has a command line that you can use to download composer.phar into your app_base folder.
curl -sS https://getcomposer.org/installer | phpObviously this won’t work, composer will tell you that it needs php 5.3.x to work.
PHP 5.3 is not used by default
Hostgator has php 5.3.7 installed on every shared hosting account. but to use it you need to do 2 small changes. The first is to add some code to your .htaccess file, and the second change is to use another command in your terminal to reference php 5.3.Create an .htaccess file in your app_base folder
Yes you are right, there is no .htaccess in your app_base folder, but we will need to create one and add some code to it.once created (And don’t forget the dot in front of htaccess), put this code in:
# Use PHP 5.3 AddType application/x-httpd-php53 .php
Using php 5.3
Now your app will be using php 5.3 instead of 5.2. but this is not everything, now when trying to use php in your terminal (or putty or whatever you are using) via SSH, you need to use/opt/php53/bin/php and it will work. Now let’s get back to install composer.here is a little trick if you want to use php instead of/opt/php53/bin/php, add an alias:
alias php="/opt/php53/bin/php"
Installing Composer
Using ssh, cd into your app_base folder, and install composer using this code:curl -sS https://getcomposer.org/installer | phpor
curl -sS https://getcomposer.org/installer | /opt/php53/bin/phpComposer will be installed without a problem if you followed all the steps from the beginning.
do a little ls just to verify that the composer.phar file is there.
Install the framework dependencies using composer
This is the fun part, all you have to do is shoot a composer install on your terminal, and every single package used by laravel will be downloaded and installed for you./opt/php53/bin/php composer.phar installOr
php composer.phar installIf you notice that the last artisan command fails, don’t worry, you can run it yourself after composer is done installing.
The command is simply php artisan optimize
Now you have everything installed. Nothing will be accessible yet from the web. because we still need to move the public folder’s content to the public_html folder, so that you can point to that folder from the web.
Where to put things
Create a folder inside your public_html folder, name it say DEMO. And move the content of your laravel’s public folder into the demo folder.If you point to the demo folder from the web, it won’t work. this is because you still need to update your paths.php file to include the correct paths to different parts of the application.
Update your public/index.php && paths.php files to include the correct paths
In order for the application to know where your App is, open the index.php file inside DEMO folder you created and change all the paths you find there. You need to provide valid paths to your bootstrap files.change this:
require __DIR__.'/../bootstrap/autoload.php';to
require __DIR__.'/../app_base/bootstrap/autoload.php';And so on.
Now open your bootstrap folder inside your laravel app, and change the public path inside paths.php
Change this
'public' => __DIR__.'/../public'to
'public' => __DIR__.'/../../public_html/demo'If you got here, everything should work now, point your browser to your demo folder and see if your laravel app boots up with a default view saying YOU HAVE ARRIVED!
I hope this was helpful for you. let me know if you get stuck.
............................................