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.
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)
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@…
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
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
Als dat is gedaan moet je deze gebruiker koppelen aan je aangemaakte database.
.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 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.