Laravel op shared webhosting zetten met GIT via Cpanel en Bitbucket

In dit artikel zal ik uitleggen hoe je een Laravel applicatie kan zetten/releasen op een webserver met Cpanel.
Ik maak gebruik van (de standaard, shared) hosting van Neostrada. Mocht je een andere hosting provider hebben, dan weet ik niet of alle opties in dit artikel (bijvoorbeeld de terminal/comnmand line) aanstaan. Vraag dit dan aan je hosting provider als deze ontbreken.

Wat er niet in staat

Dit artikel laat ik alleen zien hoe je de code via Git op een Cpanel omgeving krijgt + opzetten van een Mysql database in Cpanel.
Het configureren van e-mail, caching, logging, SSL certificaten, koppelen domein aan je hosting / DNS zaken enz. staan hier niet in.

Document root aanpassen

Omdat de document root van Laravel moet verwijzen naar de ‘public’ folder moeten we dat eerst instellen. Ga in Cpanel naar ‘domains’
Klik daar op ‘Manage’ achter het domein waar je Laravel op wilt releasen. Is dit het hoofddomein dan kan je dit (waarschijnlijk) niet aanpassen.
Neostrada kan dit wel. Stuur dan even een verzoekje voor dit (met eventueel link naar dit artikel) naar support@neostrada.nl vermeld in het mailtje ook je debiteur/klantnummer voor verificatie. Dit nummer kan je vinden als je ingelogd op je account bij Neostrada. Zij maken dan een fictief domein als hoofddomein zodat je de document root wel kan aanpassen.

Document root aanpassen in Cpanel

Zet achter je domeinnaam ‘/public’ en klik op update.

SSH key aanmaken

Om straks niet telkens te moeten inloggen voor een GIT pull update moeten wij SSH key’s aanmaken en deze toevoegen in de Bitbucket repository.
Je kan deze ook in Cpanel aanmaken maar daar moet je dan bij het aanmaken van de key een wachtwoord invullen.
Wil je automatisch releasen met bijvoorbeeld een webhook dan maak je SSH key’s zonder wachtwoord omdat de webhook het wachtwoord niet weet.
Ga je alle releases wel handmatig doen, dan kan het uiteraard wel met een wachtwoord omdat jij dan de pull doet en dan ook het wachtwoord/phrase kan opgeven.

Ga naar de terminal (Cpanel heeft deze ook, ‘Terminal’ onder ‘Advanced’) van je server waar je op wilt releasen en voer het volgende in

cd ~/.ssh
ssh-keygen -t rsa

Klik nu 3 keer op enter (vul geen wachtwoord in).

Kopieer je public key, door het volgende in te voeren en die string te kopiëren.

vi ~/.ssh/id_rsa.pub

SSH key toevoegen aan je Bitbucket repository

Ga naar je Bitbucket repository op bitbucket.org, naar de settings (1), onder ‘general’ naar ‘Access keys’ (2) en klik dan op de button ‘Add key’ (3)

Bitbucket SSH key toevoegen

Vul daar je gekopieerde SSH key in en bij het label een referentie zodat je weer waar deze key van is, bijvoorbeeld productie server.

Ga weer terug naar je terminal en sluit de public key door op ‘ESC’ te klikken en

!q

( = stoppen en niet opslaan)

Git repository opzetten in Cpanel terminal

Als je in de terminal bent, typ dan in

cd je_domeinnaam

. Je bent nu in de omgeving waar je de Laravel code wilt zetten.
Voor nu de volgende commando’s uit:

git init

Om te zeggen dat we hier Git willen gebruiken. Kopieer nu vanaf bitbucket het SSH adres van de Git reposity zonder ‘git clone’ maar alleen wat begint met git@…

Bitbucket adres ophalen

We zeggen nu tegen Git op Cpanel dat we de code van dit adres moeten halen.

git remote add origin git@je_repository_url

Je kan nu een pull doen om de code binnen te halen.

git pull origin master

Hier halen we de master branch op maar is dit je staging omgeving en je hebt een staging repository dan zal je command

git pull origin staging

zijn.

Je krijgt nu een melding of je door wil gaan met de volgende fingerprint

Fingerprint verifictaie

Typ in,

yes

Database

Als je de code via Git hebt binnengehaald en gebruik je een Mysql database dan moeten wij deze in Cpanel aanmaken.
Ga in het hoofdscherm van Cpanel naar ‘MySQL® Databases’ onder ‘Databases’.

Maak op het volgende scherm:

  • Een Mysql database
  • Een Mysql user / gebruiker

Maak een Mysql gebruiker aan in Cpanel

Als dat is gedaan moet je deze gebruiker koppelen aan je aangemaakte database.

Koppel de gebruiker aan de database in Cpanel

.env

Nu we de database hebben aangemaakt moeten we het .env / configuratie bestand aanmaken. Ga weer naar de terminal in Cpanel.
Ga eerst weer naar je domeinnaam

cd domeinnaam

Maak daar het .env bestand aan door het volgende te typen in de terminal

touch .env

Open het bestandje om te bewerken

vi .env

Kopier nu de inhoud van je lokale .env bestand, ga naar de terminal en klik op de ‘i’ toets.
Klik op de rechtermuisknop en kies voor ‘plakken’. Pas nu de variabelen aan voor je nieuwe omgeving.
Let op als dit een productie omgeving is pas dan ‘APP_ENV’ en ‘APP_DEBUG’ aan ter beveiliging.

Heb je alle wijzigingen gedaan klik dan op de ‘ESC’ toets en typ in

:wq

( = wijzigen en stoppen).

Packages

In de Git repository zitten (als het goed is) nog niet de PHP packages. Deze moeten we downloaden via composer.
Typ in de terminal,

composer install

Krijg je de melding dat je een te lage PHP versie hebt, wijzig deze dan in Cpanel. Dit kan je doen bij ‘Select PHP Version’ onder sectie ‘Software’.

Selecteer een andere PHP versie in Cpanel
Selecteer een andere versie en vergeet niet op om ‘Set as current version’ te klikken om de wijziging op te slaan.

Database migratie

Importeer de database tabellen, typ in de terminal

php artisan migrate

of als je ook default content/seeds hebt,

php artisan migrate --seed

API Key

Maak of ververs de API key voor deze omgeving, typ in de terminal

php artisan key:generate

Als het goed is moet je website nu te zien zijn op de nieuwe omgeving.