Flarum Forum installeren met Nginx en LE SSL op CentOS 8

Flarum is gratis, open-source en next-generation forum software die het je gemakkelijker maakt om een succesvolle online gemeenschap te beginnen en te laten groeien. Het is eenvoudige, lichtgewicht, snelle en mobiel-vriendelijke software gebaseerd op PHP. Het komt met een rijke reeks functies waaronder, Elegante gebruikersinterface, Interface met twee vensters, Oneindig scrollen, Zwevende componist, Volledig responsief en nog veel meer.

In deze handleiding leggen we uit hoe je het Flarum forum op CentOS 8 server kunt installeren.

Vereisten

  • Een server die CentOS 8 draait.
  • Een geldige domeinnaam gericht met het IP van je server
  • Een root wachtwoord is op de server ingesteld.

Aan de slag

Voor je begint, moet je EPEL en Remi repository in je systeem installeren. Installeer eerst de EPEL repository met het volgende commando:

dnf install epel-release -y

Download en installeer vervolgens de Remi repository met het volgende commando:

wget http://rpms.remirepo.net/enterprise/remi-release-8.rpm
rpm -Uvh remi-release-8.rpm

Installeer Nginx, MariaDB en PHP

Installeer eerst de Nginx webserver en de MariaDB server met het volgende commando:

dnf install nginx mariadb-server -y

Als beide pakketten geïnstalleerd zijn, moet je de php:remi-7.3 module inschakelen om PHP 7.3 te installeren. Je kunt het inschakelen met het volgende commando:

dnf module enable php:remi-7.3

Installeer vervolgens PHP met andere vereiste afhankelijkheden met het volgende commando:

dnf install php php-fpm php-common php-opcache php-pecl-apcu php-cli php-pear php-pdo php-mysqlnd php-pgsql php-pecl-mongodb php-pecl-redis php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml -y

Als alle pakketten geïnstalleerd zijn, start je de Nginx, MariaDB en PHP-FPM dienst en schakel je ze in om te starten na herstart van het systeem met het volgende commando:

systemctl start nginx
systemctl start mariadb
systemctl start php-fpm
systemctl enable nginx
systemctl enable mariadb
systemctl enable php-fpm

Als je klaar bent, kun je verder gaan met de volgende stap.

Configureer de MariaDB Database

MariaDB is standaard niet beveiligd. Je kunt het beveiligen met het volgende script:

mysql_secure_installation

Beantwoord alle vragen zoals hieronder aangegeven:

Enter current password for root (enter for none):
Set root password? [Y/n] Y
New password:
Re-enter new password:
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

Als je klaar bent, log je in op MariaDB shell met het volgende commando:

mysql -u root -p

Geef je root wachtwoord als daarom wordt gevraagd en maak dan een database en gebruiker voor Flarum met het volgende commando:

MariaDB [(none)]> CREATE DATABASE flarumdb;
MariaDB [(none)]> GRANT ALL PRIVILEGES on flarumdb.* to 'flarum'@'localhost' identified by 'password';

Spoel vervolgens de privileges door en verlaat de MariaDB shell met het volgende commando:

MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;

Als je klaar bent, kun je verder gaan met de volgende stap.

Configureer PHP-FPM voor Nginx

Vervolgens moet je PHP-FPM instellen om met Nginx te werken. Je kunt dat doen door het bestand www.conf te bewerken:

nano /etc/php-fpm.d/www.conf

Verander de gebruikers- en groepsnaam van apache in nginx, zoals hieronder:

user = nginx
group = nginx
listen.owner = nginx
listen.group = nginx

Zoek vervolgens de volgende regel:

;listen = /run/php-fpm/www.sock

En vervang het door de volgende regel:

listen = 127.0.0.1:9000

Sla het bestand op en sluit het als je klaar bent. Herstart dan de PHP-FPM dienst om de veranderingen toe te passen:

systemctl restart php-fpm

Installeer Flarum

Voor je Flarum installeert, moet je Composer in je systeem installeren.

Je kunt het installeren met het volgende commando:

curl -sS https://getcomposer.org/installer | php

Eenmaal geïnstalleerd zou je de volgende uitvoer moeten krijgen:

All settings correct for using Composer
Downloading...

Composer (version 1.9.2) successfully installed to: /root/composer.phar
Use it: php composer.phar

Verplaats vervolgens het binaire bestand Composer naar de map /usr/local/bin en geef de juiste toestemming:

mv composer.phar /usr/local/bin/composer
chmod 755 /usr/local/bin/composer

Verander vervolgens de directory in de Nginx document root en maak een Flarum project met het volgende commando:

cd /var/www/html
composer create-project flarum/flarum . --stability=beta

Geef vervolgens de juiste permissies op de Nginx web root directory met het volgende commando:

chown -R nginx:nginx /var/www/html
chmod -R 755 /var/www/html
chown -R nginx:nginx /var/lib/php

Als je klaar bent, kun je verder gaan met de volgende stap.

Configureer Nginx voor Flarum

Vervolgens moet je een Nginx virtual host configuratiebestand voor Nginx maken. Je kunt het aanmaken met het volgende commando:

nano /etc/nginx/conf.d/flarum.conf

Voeg de volgende regels toe:

server {
    listen   80;
    server_name  flarum.example.com;

# note that these lines are originally from the "location /" block
root   /var/www/html/public;
index index.php index.html index.htm;

location / { try_files $uri $uri/ /index.php?$query_string; }
location /api { try_files $uri $uri/ /api.php?$query_string; }
location /admin { try_files $uri $uri/ /admin.php?$query_string; }

location /flarum {
    deny all;
    return 404;
}

location ~ \.php$ {
    try_files $uri =404;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}

location ~* \.html$ {
    expires -1;
}

location ~* \.(css|js|gif|jpe?g|png)$ {
    expires 1M;
    add_header Pragma public;
    add_header Cache-Control "public, must-revalidate, proxy-revalidate";
}
gzip on;
gzip_http_version 1.1;
gzip_vary on;
gzip_comp_level 6;
gzip_proxied any;
gzip_types application/atom+xml
           application/javascript
           application/json
           application/vnd.ms-fontobject
           application/x-font-ttf
           application/x-web-app-manifest+json
           application/xhtml+xml
           application/xml
           font/opentype
           image/svg+xml
           image/x-icon
           text/css
           #text/html -- text/html is gzipped by default by nginx
           text/plain
           text/xml;
gzip_buffers 16 8k;
gzip_disable "MSIE [1-6]\.(?!.*SV1)";
   }

Sla het bestand op en sluit het als je klaar bent. Vervolgens moet je de hash_bucket grootte vergroten in het bestand nginx.conf.

Je kunt dat doen door het bestand /etc/nginx/nginx.conf te bewerken:

nano /etc/nginx/nginx.conf

Voeg de volgende regel exact boven de laatste regel toe:

server_names_hash_bucket_size 64;

Sla het bestand op en sluit het. Controleer Nginx dan op een syntaxisfout met het volgende commando:

nginx -t

Je zou de volgende uitvoer moeten zien:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Herstart tenslotte de Nginx en PHP-FPM dienst om de veranderingen toe te passen:

systemctl restart php-fpm
systemctl restart nginx

Configureer SELinux en Firewall

Eerst moet je een firewall regel maken om HTTP en HTTPS diensten uit externe netwerken toe te laten. Je kunt dit toestaan met het volgende commando:

firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload

Standaard is SELinux ingeschakeld in CentOS 8. Je zult dus SELinux moeten configureren om Flarum correct te laten werken. Je kunt SELinux instellen met het volgende commando:

setsebool httpd_can_network_connect on -P

Als je klaar bent, kun je verder gaan met de volgende stap.

Toegang tot Flarum Web UI

Open nu je web browser en typ de URL http://flarum.example.com. Je wordt doorgestuurd naar de volgende pagina:

Flarum Forum installateur

Geef je forumnaam, database gegevens, admin gebruikersnaam, wachtwoord op en klik op de knop Installeer Flarum. Als de installatie met succes voltooid is, zou je op de volgende pagina het Flarum dashboard moeten zien:

Flarum Forum

Beveilig Flarum met Let’s Encrypt SSL

Flarum is nu geïnstalleerd en geconfigureerd. Het is tijd om het te beveiligen met Let’s Encrypt gratis SSL.

Om dat te doen moet je de certbot client op je server downloaden. Je kunt de juiste toestemming downloaden en instellen door het volgende commando uit te voeren:

wget https://dl.eff.org/certbot-auto
mv certbot-auto /usr/local/bin/certbot-auto
chown root /usr/local/bin/certbot-auto
chmod 0755 /usr/local/bin/certbot-auto

Voer nu het volgende commando uit om een SSL certificaat voor je flarum website te verkrijgen en te installeren.

certbot-auto --nginx -d flarum.example.com

Het bovenstaande commando installeert eerst alle vereiste afhankelijkheden op je server. Eenmaal geïnstalleerd wordt je gevraagd een e-mailadres op te geven en de servicevoorwaarden te accepteren, zoals hieronder:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator apache, Installer apache
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): [email protected]

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y 


Obtaining a new certificate
Performing the following challenges:
http-01 challenge for flarum.example.com
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/conf.d/flarum.conf

Vervolgens moet je kiezen of je HTTP verkeer al dan niet naar HTTPS wilt omleiden, zoals hieronder:

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2

Typ 2 en druk op Enter om verder te gaan. Als de installatie voltooid is, zou je de volgende uitvoer moeten zien:

Redirecting all traffic on port 80 to ssl in /etc/nginx/conf.d/flarum.conf

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://flarum.example.com

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=flarum.example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/flarum.example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/flarum.example.com/privkey.pem
   Your cert will expire on 2020-03-23. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot-auto
   again with the "certonly" option. To non-interactively renew *all*
   of your certificates, run "certbot-auto renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Dat is het! Je kunt nu je Flarum website bezoeken met de beveiligde URL https://flarum.example.com.