Pico CMS installeren met Nginx en Let’s Encrypt op CentOS 7

Pico is een open-source eenvoudig en snel flat-file CMS geschreven in PHP. Dit betekent dat er geen administratieve backend en databank is om mee om te gaan. Je maakt eenvoudig .md bestanden aan in de inhoudsmap en dat wordt een pagina.Pico gebruikt de Twig templating engine, voor krachtige en flexibele thema’s.De broncode van Pico is beschikbaar op Github. In deze zelfstudie installeren we Pico CMS met Nginx op een CentOS 7 systeem.

Vereisten

Vereisten om Pico te draaien zijn:

  • Nginx
  • PHP versie 5.3.6 of hoger
  • Composer

Vereisten

  • Een CentOS 7 besturingssysteem.
  • Een niet-root gebruiker met sudo privileges.

Eerste stappen

Controleer je CentOS versie:

cat /etc/centos-release
# CentOS Linux release 7.6.1810 (Core)

Stel de tijdzone in:

timedatectl list-timezones
sudo timedatectl set-timezone 'Region/City'

Werk je pakketten (software) voor het besturingssysteem bij. Dit is een belangrijke eerste stap omdat je er zeker van bent dat je de laatste updates en beveiligingsfixes hebt voor de standaard softwarepakketten van je besturingssysteem:

sudo yum update -y

Installeer enkele essentiƫle pakketten die nodig zijn voor het basisbeheer van het CentOS besturingssysteem:

sudo yum install -y curl wget vim git unzip socat bash-completion epel-release

Stap 1 – Installeer PHP

Installeer de Webtatic YUM repo:

sudo rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

Installeer PHP, en ook de nodige PHP uitbreidingen:

sudo yum install -y php72w php72w-cli php72w-fpm php72w-common php72w-curl php72w-gd php72w-json php72w-zip php72w-xml php72w-mbstring

Om PHP gecompileerd in modules te tonen, kun je uitvoeren:

php -m

ctype
curl
exif
fileinfo
. . .
. . .

Controleer de PHP versie:

php --version
# PHP 7.2.19 (cli) (built: Jan 12 2019 12:47:33) ( NTS )
# Copyright (c) 1997-2018 The PHP Group
# Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
# with Zend OPcache v7.2.14, Copyright (c) 1999-2018, by Zend Technologies

Start en schakel de PHP-FPM dienst in:

sudo systemctl start php-fpm.service
sudo systemctl enable php-fpm.service

Stap 2 – Installeer acme.sh client en verkrijg Let’s Encrypt certificaat(optioneel)

Je forum met HTTPS beveiligen is niet noodzakelijk, maar het is een goed gebruik om het verkeer op je site te beveiligen. Om een TLS certificaat van Let’s Encrypt te verkrijgen gebruiken we het acme.sh programma. Acme.sh is een pure UNIX shell software om TLS certificaten te verkrijgen van Let’s Encrypt zonder afhankelijkheden.

Download en installeer acme.sh:

sudo su - root
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install --accountemail [email protected]
source ~/.bashrc
cd ~

Controleer de versie van acme.sh:

acme.sh --version
# v2.8.2

Verkrijg RSA en ECC/ECDSA certificaten voor je domein/hostname:

# RSA 2048
acme.sh --issue --standalone -d example.com --keylength 2048
# ECDSA
acme.sh --issue --standalone -d example.com --keylength ec-256

Als je nep certificaten wilt om te testen kun je de --stagingvlag aan de bovenstaande commando’s toevoegen.

Na het uitvoeren van de bovenstaande commando’s staan jecertificaten ensleutels in:

  • Voor RSA: /home/username/example.com map.
  • Voor ECC/ECDSA: /home/username/example.com_ecc map.

Om je uitgegeven certs op te sommen kun je uitvoeren:

acme.sh --list

Maak een directory om je certs in op te slaan. We zullen/etc/letsencrypt directory gebruiken.

mkdir -p /etc/letsecnrypt/example.com
sudo mkdir -p /etc/letsencrypt/example.com_ecc

Installeer/kopieer certificaten naar/etc/letsencryptmap.

# RSA
acme.sh --install-cert -d example.com --cert-file /etc/letsencrypt/example.com/cert.pem --key-file /etc/letsencrypt/example.com/private.key --fullchain-file /etc/letsencrypt/example.com/fullchain.pem --reloadcmd "sudo systemctl reload nginx.service"
# ECC/ECDSA
acme.sh --install-cert -d example.com --ecc --cert-file /etc/letsencrypt/example.com_ecc/cert.pem --key-file /etc/letsencrypt/example.com_ecc/private.key --fullchain-file /etc/letsencrypt/example.com_ecc/fullchain.pem --reloadcmd "sudo systemctl reload nginx.service"

Alle certificaten worden om de 60 dagen automatisch vernieuwd.

Verlaat na het verkrijgen van de certs de root gebruiker en ga terug naar de gewone sudo gebruiker:

exit

Stap 3 - Installeer en configureer NGINX

Download en installeer Nginx uit de CentOS repository:

sudo yum install -y nginx

Controleer de Nginx versie:

nginx -v
# nginx version: nginx/1.12.2

Start Nginx service en schakel die in:

sudo systemctl start nginx.service
sudo systemctl enable nginx.service

ConfigureerNGINX voor Pico CMS door te draaien:

sudo vim /etc/nginx/conf.d/pico.conf

En vul het bestand met de volgende configuratie:

server {
  
  listen 80;
  listen 443 ssl;
  server_name example.com;
  root /var/www/pico;
ssl_certificate /etc/letsencrypt/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/example.com/private.key;
ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/example.com_ecc/private.key;
index index.php; location ~ ^/((config|content|vendor|composer\.(json|lock|phar))(/|$)|(.+/)?\.(?!well-known(/|$))) { deny all; } location / { index index.php; try_files $uri $uri/ /index.php$is_args$args; } location ~ \.php$ { try_files $uri =404; fastcgi_index index.php; fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; fastcgi_param PICO_URL_REWRITING 1; } }

ControleerNGINX configuratie op syntaxisfouten:

sudo nginx -t

HerlaadNGINX dienst opnieuw:

sudo systemctl reload nginx.service

Stap 4 - Installeer Composer

Installeer Composer, de PHP dependency manager globaal:

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

php -r "if (hash_file('sha384', 'composer-setup.php') === 'a5c698ffe4b8e849a443b120cd5ba38043260d5c4023dbf93e1558871f1f07f58274fc6f4c93bcfd858c6bd0775cd8d1') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"

php composer-setup.php

php -r "unlink('composer-setup.php');"

sudo mv composer.phar /usr/local/bin/composer

Controleer de Composer versie:

composer --version
# Composer version 1.9.0 2019-08-02 20:55:32

OPMERKING: Composer installatiecommando's zullen in de toekomst veranderen, dus kijk op https://getcomposer.org/download/ voor de meest actuele commando's als de bovenstaande commando's niet werken.

Stap 5 - Installeer Pico CMS

Maak een document root directory voor Pico CMS:

sudo mkdir -p /var/www/pico

Veranderhet eigendom van de /var/www/pico directory in your_username die je eerder gemaakt moet hebben en je moet als deze gebruiker ingelogd zijn.

sudo chown -R your_username:your_username /var/www/pico

OPMERKING: Vergeet niet je_gebruikersnaam te vervangen door de naam die je gekozen hebt.

Navigeer naar de basismap van het document:

cd /var/www/pico

Download Pico met componist:

composer create-project picocms/pico-composer .

Zorg voor het juiste eigendom:

sudo chown -R nginx:nginx /var/www/pico

Voer sudo vim /etc/php-fpm.d/www.conf uit en stel de gebruiker en groep in op nginx. Aanvankelijk zullen ze ingesteld zijn op apache. Voer uit:

sudo vim /etc/php-fpm.d/www.conf

En stel gebruiker en groep in op nginx, zoals hieronder:

user = nginx
group = nginx

En herstart tenslotte de PHP-FPM dienst om deze veranderingen van kracht te laten worden:

sudo systemctl restart php-fpm.service

Je hebt met succes Pico CMS op CentOS 7 server geĆÆnstalleerd. Je kunt nu eenvoudig je eigen inhoudsmap maken in de hoofdmap van Pico, maak .md bestanden in de inhoudsmap en die bestanden worden je pagina's.

Links