Craft CMS met Nginx installeren op Ubuntu 20.04

Craft CMS is een gratis, open-source inhoud-beheersysteem voor websites. Ondersteund door een grote en groeiende gemeenschap van ontwikkelaars en ontwerpers, biedt het een reeks vernieuwende functies met een elegant ontwerp dat het gemakkelijk te gebruiken maakt. Je kunt er ook elk aspect van de ontwikkeling van je site mee sturen.

Het is een goed alternatief voor WordPress en Drupal, die twee van de populairste inhoudsbeheersystemen zijn die tegenwoordig in gebruik zijn.

Een Content Management Systeem (CMS) is software die gebruikt wordt om het beheer van webinhoud gemakkelijker te maken, zoals het bewerken van inhoud of het toevoegen van nieuwe pagina’s en afbeeldingen. Een website beheren kan moeilijk zijn als je elke pagina afzonderlijk in code moet maken met HTML of andere opmaaktalen; dit kan problemen opleveren als je meerdere mensen tegelijk aan je site laat werken omdat er misschien geen overeenstemming is over hoe bepaalde elementen er uit moeten zien of zich moeten gedragen.

Met een CMS kun je de algemene structuur van elke pagina instellen, maar ook specifieke elementen, zoals een blogpost of productbeschrijving; als iemand anders die informatie dan moet bewerken hoeft hij alleen maar het CMS te gebruiken.

Deze gids laat zien hoe je Craft CMS kunt installeren op Ubuntu 20.04 LTS (Focal Fossa). Het laat je zien hoe je Craft CMS op je Ubuntu server installeert. Als je de MySQL/MariaDB databank wilt gebruiken, dan helpt deze gids je ook dat te installeren.

Het proces om Craft CMS op Ubuntu te installeren is gelijk, ongeacht welke distributie en versie je gebruikt, dus je zou deze gids moeten kunnen volgen ook al is je systeem iets anders. Deze handleiding werd gemaakt met een verse installatie van Ubuntu in gedachten; sommige stappen kunnen echter licht verschillen, afhankelijk van je huidige server opstelling.

Vereisten

Om deze gids te volgen heb je een paar dingen nodig:

  • Een server waarop Ubuntu 20.04 LTS draait.
  • Een niet-root gebruiker met sudo privileges ingesteld op je Ubuntu server.

Aan de slag

Je systeem bijwerken

Log eerst in op je server als je niet-root gebruiker door het onderstaande commando uit te voeren:

ssh root@your_instance_ip

De gebruikersnaam is root, je verbindt je met server ‘instance_ip’ met behulp van het SSH protocol

je_instance_ip is het privé IP adres van je server waar Craft CMS geïnstalleerd zal worden.

Werk je besturingssysteem bij door het onderstaande commando uit te voeren:

sudo apt update && sudo apt upgrade -y

sudo apt update wordt uitgevoerd om er zeker van te zijn dat je Ubuntu systeem up-to-date is. Dit commando zorgt ervoor dat Ubuntu nieuwe Ubuntu pakketten uit de Ubuntu repositories downloadt en ze op je Ubuntu besturingssysteem installeert. Ubuntu gebruikt een repository (of preciezer: “repositories”) die software distributiecentra zijn waar Ubuntu al zijn toepassingen vandaan haalt.

sudo apt upgrade is een Ubuntu commando om Ubuntu Software bij te werken en te upgraden. Hiermee upgrade je Ubuntu software, wat inhoudt dat je Ubuntu kern, geïnstalleerde pakketten en elke nieuwe versie van Ubuntu software bijwerkt.

-y is in verkorte vorm van –yes. Het Ubuntu commando ‘apt upgrade -y’ betekent dat Ubuntu automatisch ja zal zeggen tegen elk verzoek om Ubuntu software bij te werken.

Als je fouten krijgt bij het uitvoeren van dit commando, moet je die misschien herstellen met het Ubuntu Software Center of via een terminal. Je kunt dit doen door sudo apt-get -f install te typen en de instructies in het Ubuntu Software Center te volgen om alle problemen te verhelpen, of je kunt het Terminal commando “sudo dpkg –configure -a” gebruiken om fouten te verhelpen en dan het bovenstaande commando opnieuw uitvoeren.

sudo apt-get -f install
sudo dpkg --configure -a

Voorbeelduitvoer:

Forceer installatie van pakketten

Afhankelijkheden installeren

Installeer afhankelijkheden door het onderstaande commando uit te voeren:

sudo apt install -y curl wget vim git unzip socat 

curl is voor Ubuntu om updates uit Ubuntu repositories te downloaden. wget is een gratis programma dat in Ubuntu en andere Linux besturingssystemen ondersteund wordt om bestanden te krijgen met behulp van de HTTP, HTTPS, en FTP protocollen.

vim is een populaire op Unix gebaseerde teksteditor die zowel op bijna alle Unix systemen als op Microsoft Windows werkt.

Ubuntu gebruikt unzip om bestanden uit een ZIP bestand te halen.

Ubuntu gebruikt socat, een op de commandoregel gebaseerd hulpprogramma om verbindingen tussen twee verschillende toepassingen te openen terwijl de standaard in- en uitvoerstromen of -bestanden gebruikt worden.

Voorbeeld uitvoer:

Installeer afhankelijkheden

Installeer LEMP Server

Craft CMS is geschreven in PHP en gebruikt MySQL/MariaDB als de database motor. We zullen Ubuntu configureren om het samen te gebruiken met behulp van “een LEMP stack”. Een LEMP stack is een acroniem voor Linux, Nginx webserver, MySQL/MariaDB databank motor en PHP programmeertaal.

Installeer eerst de Nginx en MariaDB server door het volgende commando in je terminal uit te voeren:

sudo apt-get install nginx mariadb-server -y

Voorbeeld uitvoer:

Installeer Nginx

Zodra beide geïnstalleerd zijn, kun je PHP installeren door het volgende commando in je terminal te draaien:

sudo apt-get install php php-cli php-fpm php-common php-curl php-gd php-imagick php-json php-mbstring php-mysql php-pgsql php-zip php-intl php-xml -y

php-cli is de opdrachtregel interface voor PHP, en de standaard pakketnaam was in het verleden “php5”. Nu is het hernoemd tot “php”.

php-fpm is de -wacht-versie van php-cgi. Het kan goed omgaan met gelijktijdige verzoeken en is handig om achter een proxy server te gebruiken.

php-common is voor gemeenschappelijke bibliotheken die nodig zijn voor andere modules, bv. php-json wordt automatisch geïnstalleerd als we “php” installeren.

php-curl is een module om URL’s te benaderen via cURL (command line tool die HTTP verzoeken verstuurt).

Opmerking: Ubuntu gebruikt Ubuntu Software Center om Ubuntu software te installeren. Het Ubuntu Software Center kan echter geen software van derden downloaden of installeren, zoals sommige Python pakketten (virtualenv enz.) die Craft CMS nodig heeft. In Ubuntu Software Center moet je de hier gevonden commando’s handmatig kopiëren & plakken in een Terminal venster en de instructies volgen.

Nadat je alle pakketten geïnstalleerd hebt, bewerk je het php.ini bestand in Ubuntu’s directory etc/php/7.4/fpm:

sudo nano /etc/php/7.4/fpm/php.ini

Verander de volgende configuraties in het bestand:

memory_limit = 512M
post_max_size = 32M
upload_max_filesize = 32M
date.timezone = Asia/Kolkata

memory_limit = 512M is nodig voor Craft CMS, in Ubuntu 20.04 LTS kan PHP de memory_limit niet zelf veranderen, dus moeten we het handmatig in het php.ini bestand veranderen.

post_max_size = 32M en upload_max_filesize = 32M zijn nodig om beeldbestanden te uploaden via het CMS, Ubuntu 20.04 LTS heeft de post_max_size en upload_max_filesize waarden standaard op 16M gezet in Ubuntu’s php.ini bestand, Craft CMS heeft 32M nodig.

Craft CMS vereist ook date.timezone = Asia/Kolkata om de tijd correct weer te geven in Ubuntu 20.04 LTS. Ubuntu 20.04 LTS gebruikt standaard UTC-5 als tijdzone, Craft CMS vereist een tijdzone in UTC+05:30 (India Standard Time).

Nadat je het php.ini bestand bewerkt hebt, sla je het op en sluit je het, waarna je Ubuntu’s PHP-FPM dienst opnieuw start:

sudo systemctl restart php7.4-fpm

Om de status van Ubuntu’s PHP-FPM dienst te controleren, voer je het onderstaande commando in:

sudo systemctl status php7.4-fpm

Voorbeelduitvoer:

Controleer de PHP status

Nu je de LEMP server klaar hebt, gaan we naar de volgende stap.

Database maken

Nu gaan we een databank voor Craft CMS maken. Open Ubuntu’s MySQL console:

sudo mysql -u root -p

-p betekent wachtwoord. Als je met de root gebruiker wilt verbinden, schrijf dan -u root en druk op Enter zonder andere specifieke informatie in te typen.

Voer het wachtwoord in dat je tijdens de installatie van Ubuntu hebt ingesteld. Voer dan de onderstaande commando’s uit om een databank met de naam ‘craftdb’ te maken:

CREATE DATABASE craftdb;
GRANT ALL ON craftdb.* TO 'craftuser' IDENTIFIED BY 'mypassword';
FLUSH PRIVILEGES;
EXIT;

Om deze database te gebruiken, moeten we er verbinding mee maken. Dus maken we een gebruiker aan met de naam ‘craftuser’. We gebruiken IDENTIFIED BY in plaats van VALUES omdat we MySQL vertellen dat ze alleen de database mag gebruiken en geen andere gegevens. Vervang het woord mypassword door een veilig wachtwoord naar keuze.

FLUSH PRIVILEGES is om alle niet-gecommitteerde transacties in deze sessie weg te gooien.

Installeren van Craft CMS

Om Craft CMS te installeren, moeten we eerst de nieuwste versie van Composer installeren. Omdat Ubuntu het gebruik van gem in zijn systeem niet ondersteunt. We kunnen Craft CMS alleen installeren door Composer te gebruiken. Voer het onderstaande commando uit om Composer te installeren:

sudo curl -sS https://getcomposer.org/installer -o composer-setup.php

-s schakelt de stille modus in. Standaard laat curl geen uitvoer zien als het langs de -s gaat, je kunt een url doorgeven die geparseerd moet worden. In dit geval vertellen we curl om de URL https://getcomposre te krijgen de -s, we voegen de vlag toe om een bestand te downloaden (dat is https://getcomposer.org/installer) en de URL op te slaan, de -o vlag vertelt curl om het gedownloade bestand naar composer-setup.php te schrijven.

Installeer vervolgens de Composer door het onderstaande commando uit te voeren:

sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer

Het php commando is nodig om de computer te vertellen dat je dit PHP script wilt uitvoeren sudo composer-setup.php –install-dir=/usr/local/bin –filename=composer

De install-dir is het bestemmingspad van de Composer. In dit geval is dat /usr/local/bin. Als je niet wilt dat het bestand voor alle gebruikers toegankelijk is, gebruik dan ./ of ./. Ook moet deze directory uitvoeringsmachtigingen hebben.

De vlag –filename is de naam van het bestand waarin Composer geïnstalleerd zal worden.

Als je niet weet waar je het moet plaatsen, kun je het bestand kopiëren naar een directory naar keuze of het opgeven na –filename

Zodra Composer geïnstalleerd is, controleer je de geïnstalleerde versie met het onderstaande commando:

composer --version

Voorbeeld uitvoer:

Controleer de componist versie

Maak vervolgens een directory voor je Craft CMS project. We maken een directory met de naam craft onder de directory /var/www/html/. We zullen deze directory gebruiken als onze web root. Dat wil zeggen dat alle bestanden die we maken of pagina’s die door Craft CMS geserveerd worden, vanuit de web root benaderd zullen worden.

mkdir /var/www/html/craft

Ga vervolgens naar de craft directory en installeer het Craft CMS met Composer:

cd /var/www/html/craft
composer create-project craftcms/craft

Opmerking: Als je een versie van Craft onder 0.97 gebruikt, vervang dan create-project door install.

Waring: Dit zal alle bestaande bestanden in de directory overschrijven.

Als je een andere directory voor je Craft CMS wilt, kun je de optie –prefer-dist opgeven.

Als je hosting provider niet toestaat dat je document root verandert in /var/www, dan is het sterk aan te bevelen Craft in een submap van de webroot te installeren, zoals: mkdir craft en voer composer create-project craftcms/craft craft uit.

Voorbeeld uitvoer:

Installeer craft cms met composer

Je wordt gevraagd om gegevens over de database, een gebruikersnaam en een wachtwoord voor beheer.

Je moet enkele gebruikersgegevens voor de MYSQL database opgeven, zodat Craft zijn interne beveiligingssleutels kan instellen! De hostnaam is ‘localhost’, de gebruikersnaam is ‘craftuser’ en het wachtwoord is dat wat je gekozen hebt bij het aanmaken van de MySQL database hierboven.

Nu zou Composer Craft moeten kunnen compileren en installeren in een directory met de naam craft binnen je webroot structuur /var/www. Standaard is die niet toegankelijk over het Internet, tenzij je HTTP toegang hebt ingeschakeld.

Stel vervolgens het juiste eigendom in voor de nieuw geïnstalleerde Craft directory:

chown -R www-data:www-data /var/www/html/craft

Nginx instellen

Nginx wordt gebruikt om verzoeken te dienen van de cliënten die er direct naar toe gaan. Het biedt enkele extra voordelen zoals het zeer goed serveren van statische bestanden, het cachen van pagina’s, en gzip compressie van deze pagina’s.

sudo nano /etc/nginx/conf.d/craft.conf

Vul het bestand met de volgende regels:

server {
listen 80;
server_name craft.example.com;
root /var/www/html/craft/web;
index index.php;
location / {
  try_files $uri/index.html $uri $uri/ /index.php?$query_string;
  }
location ~ [^/]\.php(/|$) {
 try_files $uri $uri/ /index.php?$query_string;
 fastcgi_split_path_info ^(.+\.php)(/.+)$;
 fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
 fastcgi_index index.php;
 include fastcgi_params;
 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 fastcgi_param PATH_INFO $fastcgi_path_info;
 fastcgi_param HTTP_PROXY "";
}
}

Servernaam: Dit is de domeinnaam of het IP adres van je server, cliënten zullen dit gebruiken om op te lossen van wie ze bestanden moeten opvragen (in ons geval is dat craft.example.com).

Documenten root: Dit is waar de kernactiva van Craft CMS staan, inclusief web- en kernmappen die onder /var/www/html/craft staan. Het pad dat je hier ziet kan anders zijn, afhankelijk van welke versie van craft je gebruikt of of de mappenstructuur veranderd is.

Try_files $uri $uri/$uri : Voor alle verzoeken aan een relatieve URI zoals http:// craft.example.com/index.php zal het het index.php bestand teruggeven, dat meestal in de document root van je craft installatie staat.

Locatie ~ [^/].php(/|$) : De regex naar PHP bestanden betekent in principe dat gezocht wordt naar elk verzoek dat eindigt op een .php of overeenkomt met alles behalve / en $ (er wordt recursief gezocht).

PHP-FPM socket plaats: Dit wordt gebruikt door Craft CMS core asset verzoeken, deze waarde moet overeenkomen met de naam van je php-fpm socket bestand in je hoofdconfiguratiebestand /etc/php/7.4{5,6}-fpm.conf

Bewaar en sluit het bestand en controleer dan of het werkt door te draaien:

sudo nginx -t

Voorbeelduitvoer:

Controleer de configuratie van nginx

Als er geen fouten zijn kun je Nginx opnieuw starten met het onderstaande commando:

sudo systemctl reload nginx

Toegang tot Craft CMS

Nu de bestanden geconfigureerd zijn, kunnen we onze Craft CMS installatie benaderen. Richt je browser op http://craft.example.com en je zou het welkomstscherm moeten zien:

Klik op ‘ga naar je controlepaneel’, vul de gegevens van je admin in en klik op “login”. Je zou het standaard dashboard moeten zien.

Als je een bericht bent tegengekomen met de tekst “503 Unavailable” zoals dit:

Zorg dat je de nieuwste Craft, Craft thema en Craft plugin updates hebt. Als dat niet helpt, probeer dan de volgende stappen: zorg dat de mapmachtigingen van Craft juist zijn, zoals beschreven in dit artikel. Deze bestanden moeten eigendom zijn van root en Craft mag geen schrijfrechten hebben op een van zijn mappen.

Conclusie

Gefeliciteerd! Nu heb je CraftCMS met succes geïnstalleerd op Ubuntu 20.04. Laten we wat websites maken! Zoals altijd, aarzel niet om hieronder commentaar of suggesties achter te laten.