GNU/Linux >> Linux Esercitazione >  >> Rocky Linux

Come installare NEOS CMS con Nginx e Lets Encrypt SSL su Rocky Linux 8

Neos è un sistema di gestione dei contenuti (CMS) gratuito e open source che consente di creare facilmente siti Web complessi senza bisogno di codificare. Puoi creare un blog, un sito Web di notizie, una pagina del portfolio o un sito Web aziendale utilizzandolo. Offre un ricco set di funzionalità come la modifica in linea, supporta più siti Web in un'unica installazione, strumenti SEO integrati, URL leggibili dall'uomo, gestore plug-in, anteprima del dispositivo e supporta più modelli. Supporta le tecnologie moderne come API REST, JSON, GraphQL e oEmbed.

In questo tutorial imparerai come installare Neos CMS su un server che esegue Rocky Linux 8 OS.

Prerequisiti

  • Un server che esegue Rocky Linux 8.

  • Un utente sudo non root.

  • Assicurati che tutto sia aggiornato.

    $ sudo dnf update
    
  • Installa i pacchetti di utilità di base. Alcuni di essi potrebbero essere già installati.

    $ sudo dnf install wget curl nano unzip yum-utils -y
    

Passaggio 1:configurazione del firewall

Il primo passo è configurare il firewall. Rocky Linux utilizza Firewalld Firewall. Controlla lo stato del firewall.

$ sudo firewall-cmd --state
running

Il firewall funziona con diverse zone e la zona pubblica è quella predefinita che useremo. Elenca tutti i servizi e le porte attive sul firewall.

$ sudo firewall-cmd --permanent --list-services

Dovrebbe mostrare il seguente output.

cockpit dhcpv6-client ssh

Consenti porte HTTP e HTTPS.

$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https

Ricontrolla lo stato del firewall.

$ sudo firewall-cmd --permanent --list-services

Dovresti vedere un output simile.

cockpit dhcpv6-client http https ssh

Ricarica il firewall per abilitare le modifiche.

$ sudo firewall-cmd --reload

Passaggio 2:installa Nginx

Rocky Linux viene fornito con una versione precedente di Nginx. Devi scaricare il repository Nginx ufficiale per installare l'ultima versione.

Crea e apri il /etc/yum.repos.d/nginx.repo file per la creazione del repository Nginx ufficiale.

$ sudo nano /etc/yum.repos.d/nginx.repo

Incolla il seguente codice al suo interno.

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

Salva il file premendo Ctrl + X e inserendo Y quando richiesto.

Installa Nginx.

$ sudo dnf install nginx

Verifica l'installazione.

$ nginx -v
nginx version: nginx/1.20.2

Abilita e avvia il servizio Nginx.

$ sudo systemctl enable nginx --now

Fase 3 - Installa PHP ed estensioni

Per il nostro tutorial, dobbiamo installare l'ultima versione di PHP utilizzando il repository di Remi. Il primo passo è prendere il repository Epel.

$ sudo dnf install epel-release

Quindi, installa il repository Remi.

$ sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm

Verifica la disponibilità di stream PHP.

$ dnf module list php -y
Last metadata expiration check: 0:00:12 ago on Fri 03 Dec 2021 09:39:32 AM UTC.
Rocky Linux 8 - AppStream
Name                Stream                 Profiles                                 Summary
php                 7.2 [d]                common [d], devel, minimal               PHP scripting language
php                 7.3                    common [d], devel, minimal               PHP scripting language
php                 7.4                    common [d], devel, minimal               PHP scripting language

Remi's Modular repository for Enterprise Linux 8 - x86_64
Name                Stream                 Profiles                                 Summary
php                 remi-7.2               common [d], devel, minimal               PHP scripting language
php                 remi-7.3               common [d], devel, minimal               PHP scripting language
php                 remi-7.4               common [d], devel, minimal               PHP scripting language
php                 remi-8.0               common [d], devel, minimal               PHP scripting language
php                 remi-8.1               common [d], devel, minimal               PHP scripting language

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

La versione predefinita è 7.2. Abilita il repository PHP 8.0 di Remi.

$ sudo dnf module reset php
$ sudo dnf module enable php:remi-8.0

Quindi, installa PHP e le sue estensioni richieste da Neos insieme a ImageMagick.

$ sudo dnf install php-fpm php-mbstring php-xml php-curl php-mysqlnd php-zip php-cli php-imagick ImageMagick php-intl

Verifica l'installazione.

$ php --version
PHP 8.0.14 (cli) (built: Dec 16 2021 03:01:07) ( NTS gcc x86_64 )
Copyright (c) The PHP Group
Zend Engine v4.0.14, Copyright (c) Zend Technologies

Passaggio 4:installazione e configurazione di MySQL Server

Useremo il database MySQL per memorizzare i dati. Il repository Appstream di Rocky Linux viene fornito con l'ultima versione di MySQL.

Installa MySQL.

$ sudo dnf install mysql-server

Abilita e avvia il servizio MySQL.

$ sudo systemctl enable mysqld --now

Installazione sicura di MySQL.

$ sudo mysql_secure_installation

Per il primo passaggio, ti verrà chiesto se desideri impostare il plug-in Validate Password, che puoi utilizzare per testare la forza della tua password MySQL. Scegli Y procedere. Ti verrà chiesto di scegliere il livello di convalida della password nel passaggio successivo. Scegli 2 che è il livello più forte e richiederà che la tua password contenga almeno otto caratteri e includa una combinazione di caratteri maiuscoli, minuscoli, numerici e speciali.

Securing the MySQL server deployment.

Connecting to MySQL using a blank password.

VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?

Press y|Y for Yes, any other key for No: Y

There are three levels of password validation policy:

LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary                  file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2

Ti verrà chiesto di scegliere una password di root nel passaggio successivo. Scegli una password complessa che soddisfi i requisiti del plug-in di convalida della password. Nel passaggio successivo ti verrà chiesto se continuare con la password scelta. Premi y per continuare.

Please set the password for root here.

New password:

Re-enter new password:

Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y

Premi Y e poi ENTER chiave per tutte le seguenti richieste per rimuovere gli utenti anonimi e il database di test, disabilitare gli accessi di root e caricare le regole appena impostate.

...
Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
Success.
...
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
Success.
...
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
 - Dropping test database...
Success.
 - Removing privileges on test database...
Success.
Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.
...
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
Success.
All done!

Entra nella shell MySQL. Inserisci la tua password di root per continuare.

$ mysql -u root -p

Crea neos utente. Assicurati che la password soddisfi i requisiti impostati in precedenza.

mysql> CREATE USER 'neos'@'localhost' IDENTIFIED BY 'Your_password2';

Crea neosdb banca dati.

mysql> CREATE DATABASE neosdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Concedi all'utente i privilegi su neosdb banca dati.

mysql> GRANT ALL PRIVILEGES ON neosdb.* TO 'neos'@'localhost';

Esci dalla shell.

mysql> exit

Passaggio 5 - Installa Composer

Composer è uno strumento di gestione delle dipendenze per PHP ed è richiesto da Neos CMS per funzionare.

Scarica lo script di installazione di Composer.

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

Esegui i seguenti comandi per verificare il programma di installazione.

$ HASH=`curl -sS https://composer.github.io/installer.sig`
$ echo $HASH
$ php -r "if (hash_file('SHA384', 'composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"

I comandi precedenti prendono il valore hash del programma di installazione e lo abbinano allo script scaricato. Dovresti vedere il seguente output se il programma di installazione è sicuro da eseguire.

Installer verified

Installa il compositore.

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

Verifica l'installazione controllandone la versione.

$ composer --version
Composer version 2.2.3 2021-12-31 12:18:53

Passaggio 6:installazione di Neos CMS

Crea una directory principale per l'installazione di Neos.

$ sudo mkdir -p /var/www/neos

Modifica la proprietà della directory principale con l'utente attualmente connesso.

$ sudo chown -R $USER:$USER /var/www/neos

Passa alla directory principale.

$ cd /var/www/neos

Usa Composer per installare Neos e le sue dipendenze.

$ composer create-project --no-dev neos/neos-base-distribution .

Non dimenticare il punto alla fine del comando che dice a Composer di installarlo nella directory corrente. È possibile che durante l'installazione vengano visualizzati i seguenti avvisi. Inserisci y procedere. L'installazione non sarà ostacolata a causa di ciò.

 - Installing neos/composer-plugin (2.1.3): Extracting archive
neos/composer-plugin contains a Composer plugin which is currently not in your allow-plugins config. See https://getcomposer.org/allow-plugins
Do you trust "neos/composer-plugin" to execute code and wish to enable it now? (writes "allow-plugins" to composer.json) [y,n,d,?] y

  - Installing composer/package-versions-deprecated (1.11.99.4): Extracting archive
composer/package-versions-deprecated contains a Composer plugin which is currently not in your allow-plugins config. See https://getcomposer.org/allow-plugins
Do you trust "composer/package-versions-deprecated" to execute code and wish to enable it now? (writes "allow-plugins" to composer.json) [y,n,d,?] y

Cambia la proprietà della directory principale in nginx .

$ sudo ./flow core:setfilepermissions $USER nginx nginx

Aggiungi l'utente attualmente connesso a nginx gruppo.

$ sudo usermod -a -G nginx $USER

Per ora è tutto. Eseguiremo le restanti configurazioni in seguito.

Passaggio 7 - Configura le autorizzazioni SELinux

Usa chcon di SELinux comando per modificare il contesto di sicurezza del file per il contenuto Web servito da /var/www/neos directory.

$ sudo chcon -t httpd_sys_content_t /var/www/neos -R
$ sudo chcon -t httpd_sys_rw_content_t /var/www/neos -R

Configura SELinux per consentire le connessioni di rete per Neos CMS.

$ sudo setsebool -P httpd_can_network_connect on

Passaggio 8 - Installa e configura SSL

Per installare un certificato SSL utilizzando Let's Encrypt, è necessario scaricare lo strumento Certbot. Abbiamo bisogno del repository Epel per installare Certbot, ma possiamo saltare questo passaggio poiché l'abbiamo installato in precedenza nel tutorial.

Installa Certbot.

$ sudo dnf install certbot

Arresta il server Nginx poiché interferisce con lo strumento Certbot.

$ sudo systemctl stop nginx

Genera un certificato SSL.

$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d neos.example.com

Il comando precedente scaricherà un certificato in /etc/letsencrypt/live/neos.example.com directory sul tuo server.

Genera un gruppo Diffie-Hellman certificato.

$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Crea una directory radice web di sfida per il rinnovo automatico di Let's Encrypt.

$ sudo mkdir -p /var/lib/letsencrypt

Crea un Cron Job per rinnovare l'SSL. Verrà eseguito ogni giorno per controllare il certificato e rinnovarlo se necessario. Per questo, prima crea il file /etc/cron.daily/certbot-renew e aprilo per la modifica.

$ sudo nano /etc/cron.daily/certbot-renew

Incolla il seguente codice.

#!/bin/sh
certbot renew --cert-name neos.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"

Salva il file premendo Ctrl + X e inserendo Y quando richiesto.

Modifica le autorizzazioni sul file dell'attività per renderlo eseguibile.

$ sudo chmod +x /etc/cron.daily/certbot-renew

Fase 9 - Configura Nginx e PHP

Configura PHP-FPM

Apri il file /etc/php-fpm.d/www.conf .

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

Dobbiamo impostare l'utente/gruppo di processi PHP Unix su nginx . Trova il user=www-data e group=www-data righe nel file e cambiale in nginx .

...
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
; RPM: apache user chosen to provide access to the same directories as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx
...

Salva il file premendo Ctrl + X e inserendo Y quando richiesto.

Avvia il servizio PHP.

$ sudo systemctl start php-fpm

Configura Nginx

Crea e apri il file /etc/nginx/conf.d/neos.conf per la modifica.

$ sudo nano /etc/nginx/conf.d/neos.conf

Incolla il seguente codice al suo interno.

server {
    listen       443 ssl http2;
    listen       [::]:443 ssl http2;
    server_name  neos.example.com;

    access_log  /var/log/nginx/neos.access.log;
    error_log   /var/log/nginx/neos.error.log;
    
    # SSL
    ssl_certificate      /etc/letsencrypt/live/neos.example.com/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/neos.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/neos.example.com/chain.pem;
    ssl_session_timeout  5m;
    ssl_session_cache shared:MozSSL:10m;
    ssl_session_tickets off;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;
    resolver 8.8.8.8;

    root /var/www/neos/Web/;
    index index.php;
    
    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    # Pass PHP Scripts To FastCGI Server
    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(.*)$;
        fastcgi_pass unix:/run/php-fpm/www.sock; # Depends On The PHP Version
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param FLOW_REWRITEURLS  1;
	fastcgi_param FLOW_CONTEXT  Production;
    	fastcgi_param X-Forwarded-For $proxy_add_x_forwarded_for;
	fastcgi_param X-Forwarded-Port $proxy_port;
    	fastcgi_param REMOTE_ADDR $remote_addr;
	fastcgi_param REMOTE_PORT $remote_port;
    	fastcgi_param SERVER_ADDR $server_addr;
	fastcgi_param SERVER_NAME $http_host;
        fastcgi_read_timeout 300;
	fastcgi_buffer_size  128k;
    	fastcgi_buffers  256 16k;
	fastcgi_busy_buffers_size 256k;
    	fastcgi_temp_file_write_size 256k;
        include fastcgi_params;
        try_files $uri =404;
    }

    location ~ /_Resources/ {
   	access_log off;
	log_not_found off;
	expires max;

    	if (!-f $request_filename) {
    		rewrite "/_Resources/Persistent/([a-z0-9]{40})/.+\.(.+)" /_Resources/Persistent/$1.$2 break;
     		rewrite "/_Resources/Persistent(?>/[a-z0-9]{5}){8}/([a-f0-9]{40})/.+\.(.+)" /_Resources/Persistent/$1.$2 break;
    	}
    }
}

# enforce HTTPS
server {
    listen       80;
    listen       [::]:80;
    server_name  neos.example.com;
    return 301   https://$host$request_uri;
}

Si noti che la directory principale da utilizzare nella configurazione di Nginx è /var/www/neos/Web/ e non /var/www/neos/ .

Salva il file premendo Ctrl + X e inserendo Y quando richiesto una volta terminato.

Apri il file /etc/nginx/nginx.conf per la modifica.

$ sudo nano /etc/nginx/nginx.conf

Aggiungi la riga seguente prima della riga include /etc/nginx/conf.d/*.conf; .

server_names_hash_bucket_size  64;

Salva il file premendo Ctrl + X e inserendo Y quando richiesto.

Verifica la sintassi del file di configurazione Nginx.

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Riavvia il servizio Nginx per abilitare la nuova configurazione.

$ sudo systemctl restart nginx

Fase 10 - Completa l'installazione di Neos

Avvia l'URL https://neos.example.com nel tuo browser e otterrai la seguente schermata di configurazione.

Fai clic su Vai alla configurazione pulsante per procedere. Verrai reindirizzato alla schermata di accesso.

Esegui il seguente comando nel terminale per ottenere la tua password.

$ cat /var/www/neos/Data/SetupPassword.txt
The setup password is:

SCPUYmmQ

After you successfully logged in, this file is automatically deleted for security reasons.
Make sure to save the setup password for later use.

Inserisci la password e fai clic su Accedi procedere. Neos verificherà la presenza di librerie di immagini PHP.

Fai clic su Avanti per procedere. Ti verrà chiesto di inserire le credenziali del tuo database. Inserisci le credenziali create nel passaggio 4. Una volta verificate le credenziali, otterrai una Connessione stabilita messaggio sullo schermo.

Fai clic su Avanti per procedere . Ti verrà chiesto di configurare un account amministratore. Inserisci i tuoi dati.

Fai clic su Avanti procedere. Successivamente, ti verrà chiesto di selezionare se desideri importare un sito demo o crearne uno da zero. Se vuoi creare un nuovo sito da zero, devi compilare entrambe le caselle. Ad esempio, se stai creando un sito di notizie, compila le caselle come indicato. Ricorda, se inizi da zero, non ci saranno CSS sul sito e dovrai farlo da solo.

Package Name: Neos.HowtoForgeNews
Site Name: HowtoForgeNews

Per il nostro tutorial, ci atterremo al sito Demo. Per importare un sito demo, lascia tutti i campi vuoti.

Fai clic su Avanti procedere. Verrà visualizzata la schermata di completamento della configurazione.

Fai clic su Vai al back-end per aprire la schermata di accesso al pannello di controllo. Inserisci il tuo nome utente e password e fai clic su Accedi per aprire il pannello di amministrazione.

Dal momento che abbiamo importato il sito demo, il primo passaggio consiste nell'eliminare Provami pagina, consentendo a chiunque di configurare account back-end con diritti di modifica del sito Web.

Passa a Provami pagina dalla barra laterale sinistra e fai clic su Elimina pulsante evidenziato nello screenshot qui sotto.

Fai clic sulla freccia arancione a destra di Pubblicato - Dal vivo per aprire il menu a discesa e fare clic su Pubblica tutto per salvare le modifiche.

L'installazione di Neos CMS è pronta per l'uso.

Conclusione

In questo tutorial, hai installato e configurato Neos CMS utilizzando uno stack LEMP su un server basato su Rocky Linux 8. Se hai domande, pubblicale nei commenti qui sotto.


Rocky Linux
  1. Come installare Let's Encrypt SSL per NGINX su Rocky Linux 8

  2. Come installare Nextcloud con Nginx e Lets Encrypt SSL su Ubuntu 20.04 LTS

  3. Come installare Shopware con NGINX e Lets Encrypt su CentOS 7

  4. Come installare Shopware con NGINX e Lets Encrypt su Fedora 30

  5. Come installare WordPress con LEMP (Nginx, MariaDB e PHP) su Rocky Linux 8?

Come installare Drupal 9 con Nginx e Lets Encrypt SSL su Debian 10

Come installare WordPress con LAMP e Lets Encrypt SSL gratuito su Rocky Linux

Come installare Joomla con Nginx su Rocky Linux

Come installare Moodle con Nginx e Lets Encrypt SSL su Ubuntu 20.04

Come installare Shopware con NGINX e Lets crittografare su Debian 9

Come installare MyBB Forum con Nginx e Lets Encrypt su Debian 10