Ricerca nel sito web

Come installare FossBilling con Nginx su Rocky Linux 9


FOSSBilling è una fatturazione gratuita e open source progettata per essere semplice per clienti e venditori. FOSSBilling è un fork di BoxBilling. Fornisce un'esperienza eccellente per i clienti con un'interfaccia intuitiva e supporta più gateway di pagamento. FOSSBilling è adatto a molteplici aziende, dalle piccole alle medie o anche alle grandi imprese. FOSSBilling può aiutarti ad automatizzare la fatturazione, i pagamenti in entrata, la gestione e la comunicazione con i clienti.

Installerò FOSSBilling su un server Rocky Linux 9 in questa guida. Questa procedura dettagliata include l'installazione del server Web Nginx, del server database MariaDB, di PHP-FPM 8.2 e dello strumento Certbot per generare certificati SSL/TSL. Alla fine, avrai una soluzione di fatturazione e gestione dei clienti che può essere utilizzata per la tua attività quotidiana.

Prerequisiti

Per completare questa guida, avrai bisogno dei seguenti requisiti:

  • Un server con Rocky Linux 9 installato: questo esempio utilizza un Rocky Linux con nome host 'fossbilling-rocky'.
  • Un utente non root con privilegi di amministratore sudo/root.
  • SELinux in esecuzione con modalità permissiva.
  • Un nome di dominio puntato all'indirizzo IP del tuo server: questo esempio utilizza un sottodominio "fossbilling.hwdomain.io".

Se questi requisiti sono pronti, puoi completare l'installazione di FOSSBilling.

Installazione del server Web Nginx

FOSSBilling può essere eseguito con i server web Nginx e Lighttpd. Questa guida utilizzerà Nginx come server web. In questo passaggio installerai Nginx dal repository ufficiale Rocky Linux AppStream.

Per iniziare, assicurati che il repository EPEL sia aggiunto al tuo sistema. Oppure puoi installarlo tramite il comando dnf di seguito.

sudo dnf install epel-release

Successivamente, installa il server web Nginx utilizzando il comando dnf riportato di seguito. Quando richiesto, inserire y per confermare e premere INVIO per procedere.

sudo dnf install nginx

Produzione :

Una volta installato Nginx, esegui il comando systemctl seguente per avviare e abilitare il servizio Nginx. Ciò avvierà ed eseguirà Nginx sulla porta HTTP predefinita 80 e consentirà l'esecuzione automatica di Nginx all'avvio del sistema.

sudo systemctl start nginx
sudo systemctl enable nginx

Ora verifica lo stato del servizio Nginx utilizzando l'utilità di comando systemctl riportata di seguito. Dovresti ricevere un output che indica che il servizio Nginx è in esecuzione ed è abilitato.

sudo systemctl status nginx

Produzione :

Il servizio Nginx è ora in esecuzione, dovrai aprire sia il protocollo HTTP che HTTPS su firewalld. Per raggiungere questo obiettivo, è possibile eseguire il comando firewall-cmd riportato di seguito.

sudo firewall-cmd --add-service={http,https} --permanent

Una volta aggiunti i protocolli HTTP e HTTPS a firewalld, esegui il comando seguente per ricaricare firewalld e applicare le modifiche. Quindi, verifica l'elenco dei servizi abilitati su firewalld.

Dovresti vedere che i protocolli HTTP e HTTPS sono stati aggiunti al firewalld.

sudo firewall-cmd --reload
sudo firewall-cmd --list-all

Produzione :

Con questo, hai installato il server web Nginx e configurato firewalld per aprire i protocolli HTTP e HTTPS. Nel passaggio successivo, avvierai l'installazione del server database MariaDB.

Installazione di MariaDB Server

FOSSBilling viene utilizzato MySQL/MariaDB per archiviare i dati degli utenti. Richiedeva almeno il server MySQL 8 o MariaDB 10.x. In questo passaggio installerai il server MariaDB dal repository ufficiale Rocky Linux, che è MariaDB 10.5 ed è compatibile con l'ultima versione di FOSSBilling.

Installa il server database MariaDB sul tuo sistema Rocky Linux tramite il comando dnf riportato di seguito. Immettere y quando richiesto e premere INVIO per procedere.

sudo install mariadb-server

Produzione :

Una volta installato MariaDB, esegui l'utilità di comando systemctl riportata di seguito per avviare e abilitare il servizio MariaDB.

sudo systemctl start mariadb
sudo systemctl enable mariadb

Successivamente, esegui il comando systemctl seguente per verificare il servizio MariaDB e assicurarti che il servizio sia in esecuzione. L'output 'attivo (in esecuzione)' conferma che il server MariaDB è in esecuzione. E l'output 'loaded (../mariadb.service; abilitato;)' conferma che il servizio MariaDB è abilitato e verrà eseguito automaticamente all'avvio del sistema.

sudo systemctl status mariadb

Produzione :

Con il server MariaDB in esecuzione, ora proteggerai MariaDB tramite il comando 'mariadb-secure-installation'. Ciò include l'impostazione di una password root per MariaDB, la disabilitazione dell'accesso remoto per l'utente root MariaDB, ecc.

Esegui il comando "mariadb-secure-installation" riportato di seguito per proteggere la distribuzione di MariaDB.

sudo mariadb-secure-installation

Ti verranno chieste informazioni su alcune configurazioni di MariaDB di seguito:

  • Passare l'autenticazione locale a unix_socket? Immettere n per n.
  • Configurare la password root di MariaDB? Inserisci y, quindi digita la nuova password root di MariaDB e ripeti.
  • Rimuovere l'utente anonimo predefinito? Immettere y per confermare.
  • Disabilitare l'accesso remoto per l'utente root? Immettere y per confermare.
  • Rimuovere il test del database predefinito? Immettere y per confermare.
  • Ricaricare i privilegi della tabella e applicare le modifiche? Immettere y per confermare.

Con il server MariaDB installato e in esecuzione, creerai successivamente un nuovo database e utente MariaDB che verranno utilizzati per l'installazione di FOSSBilling.

Creazione del database e dell'utente

In questo passaggio creerai un nuovo database e un nuovo utente MariaDB che verranno utilizzati per l'installazione di FOSSBilling.

Esegui il comando "mariadb" riportato di seguito per accedere a MariaDB tramite l'utente root. Quando ti viene richiesta una password, inserisci la password root di MariaDB e premi INVIO.

sudo mariadb -u root -p

Dopo aver effettuato l'accesso alla shell MariaDB, esegui le seguenti query per creare un nuovo database e utente MariaDB. In questo esempio, creerai un nuovo database fossbillingdb con l'utente 'fossbilling'. Inoltre, assicurati di modificare la password predefinita nella query seguente.

CREATE DATABASE fossbillingdb;
CREATE USER fossbilling@localhost IDENTIFIED BY 'password';
GRANT ALL ON fossbillingdb.* TO fossbilling@localhost WITH GRANT OPTION;
FLUSH PRIVILEGES;

Produzione :

Infine, esegui la query seguente per verificare l'utente MariaDB fossbilling@localhost per assicurarti che l'utente disponga dei privilegi per accedere al database 'fossbiilingdb'.

L'output 'GRANT ALL PRIVILEGES ON fossbillingdb.* to fossbilling@localhost' conferma che l'utente fossbilling@localhost dispone dei privilegi per accedere al database 'fossbillingdb '.

Digitare quit per disconnettersi dalla shell MariaDB.

SHOW GRANTS FOR fossbilling@localhost;
quit

Produzione :

Ora che hai creato il database MariaDB e l'utente per FOSSBilling. Nel passaggio successivo installerai PHP e PHP-FPM sul tuo server Rocky Linux.

Installazione di PHP-FPM 8.2

L'ultima versione di FOSSBilling è supportata con PHP 8.x. In questo passaggio installerai PHP e PHP-FPM 8.2 tramite il repository Remi. Quindi, per prima cosa configurerai il repository Remi, installerai i pacchetti PHP e PHP-FPM, quindi configurerai PHP-FPM con il server web Nginx.

Aggiungi il repository PHP Remi tramite il comando dnf riportato di seguito. Questo comando installerà il repository Remi sul tuo sistema Rocky Linux. Il file RPM 'remi-release-9.rpm' conferma che può essere utilizzato per la distribuzione RHEL 9. Inoltre, inserire y quando richiesto e premere INVIO per procedere.

sudo dnf install dnf-utils http://rpms.remirepo.net/enterprise/remi-release-9.rpm

Produzione :

Successivamente, esegui il comando dnf riportato di seguito per reimpostare il modulo repository per PHP. Quindi, verifica l'elenco dei moduli del repository PHP disponibili sul tuo sistema.

sudo dnf module reset php
sudo dnf module list php

Quando viene richiesto di impostare la chiave GPG per il repository Remi, inserire y per confermare e premere INVIO.

Dopo aver eseguito il comando 'dnf module list php', vedrai più versioni PHP fornite dal repository ufficiale Rocky Linux AppStream e dal repository Remi.

Esegui il comando seguente per abilitare il repository PHP per 'remi-8.2'. Con questo, ogni volta che installi pacchetti PHP, installerai pacchetti PHP 8.2 dal repository Remi.

Immettere y quando richiesto e premere INVIO per abilitarlo.

sudo dnf module enable php:remi-8.2

Produzione :

Con il repository PHP Remi configurato, puoi installare i pacchetti PHP.

Esegui il comando dnf riportato di seguito per installare i pacchetti PHP e PHP-FPM sul tuo server Rocky Linux. Immettere y quando richiesto e premere INVIO per procedere.

sudo dnf install php php-fpm php-mysql php-curl php-cli php-zip php-common php-mbstring php-xml

Produzione :

Ti verrà inoltre richiesto di confermare la chiave GPG per il repository Remi. Immettere y per confermare e premere ENTER.

Dopo aver installato PHP, apri il file di configurazione PHP '/etc/php.ini' utilizzando il comando dell'editor nano riportato di seguito.

sudo nano /etc/php.ini

Modifica la configurazione PHP predefinita con le seguenti righe.

upload_max_filesize = 16M 
post_max_size = 32M 
memory_limit = 256M 
max_execution_time = 600 
max_input_vars = 3000 
max_input_time = 1000

Una volta terminato, salvare ed uscire dal file '/etc/php.ini'.

Per eseguire PHP-FPM con Nginx su distribuzioni basate su RHEL, devi assicurarti che PHP-FPM sia in esecuzione con l'utente e il gruppo predefiniti "nginx".

Su RHEL, il server Web Nginx è in esecuzione per impostazione predefinita con l'utente "nginx". Nelle distribuzioni basate su Debian, sia i server web Nginx che Apache2 sono in esecuzione sullo stesso utente e gruppo "www-data".

Apri la configurazione del pool PHP-FPM '/etc/php-fpm.d/www.conf' utilizzando il comando dell'editor nano riportato di seguito.

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

Modifica i parametri predefiniti "utente" e "gruppo" in "nginx".

user = nginx
group = nginx

Salva e chiudi il file quando hai finito.

Successivamente, esegui l'utilità di comando systemctl riportata di seguito per avviare e abilitare il servizio PHP-FPM. Questo avvierà il servizio PHP-FPM con il file sock predefinito '/run/php-fpm/www.sock' e abiliterà l'avvio automatico di PHP-FPM all'avvio del sistema.

L'output 'Created symlink ...' conferma che il servizio PHP-FPM è abilitato.

sudo systemctl start php-fpm
sudo systemctl enable php-fpm

Produzione :

Ora esegui il comando systemctl seguente per verificare lo stato del servizio PHP-FPM. Dovresti ottenere un output che indica che PHP-FPM è 'attivo (in esecuzione)', che conferma che PHP-FPM è in esecuzione. E l'output 'Loaded .../.../; abilitato;' conferma che il servizio PHP-FPM è abilitato.

sudo systemctl status php-fpm

Produzione :

Infine, esegui il comando php seguente per verificare la versione PHP installata sul tuo sistema. Quindi, verifica l'elenco delle estensioni abilitate sul tuo sistema.

Riceverai un PHP 8.2 in uscita e l'elenco delle estensioni PHP abilitate e assicurati che queste estensioni 'curl', 'openssl', 'pdo_mysql' e 'zlib' siano abilitate.

php --version
php -m

Produzione :

Con questo, hai installato PHP e PHP-FPM 8.2 sul sistema Rocky Linux. Hai anche configurato PHP-FPM per essere eseguito con il server web Nginx. Nel passaggio successivo, avvierai l'installazione di FOSSBilling scaricando il codice sorgente.

Download del codice sorgente FOSSBilling

In questo passaggio, scaricherai il codice sorgente di FOSSBilling e imposterai la directory di installazione di FOSSBilling su '/var/www/fossbilling'.

Prima di iniziare, esegui il comando dnf riportato di seguito per installare il pacchetto di decompressione sul tuo sistema.

sudo dnf install unzip -y

Ora crea una nuova directory '/var/www/fossbilling' e sposta la tua directory di lavoro al suo interno. Quindi, puoi scaricare l'ultima versione stabile di FOSSBilling tramite il comando curl come di seguito.

mkdir -p /var/www/fossbilling; cd /var/www/fossbilling
curl https://fossbilling.org/downloads/stable -L --output FOSSBilling.zip

Produzione :

Una volta scaricato il codice sorgente di FOSSBilling, vedrai il file FOSSBilling.zip nella tua directory di lavoro. Esegui il comando di decompressione riportato di seguito per estrarre il file 'FOSSBilling.zip'. Quindi, modifica la proprietà della directory di installazione di FOSSBilling '/var/www/fossbilling' in utente e gruppo 'nginx'.

unzip FOSSBilling.zip
sudo chown -R nginx:nginx /var/www/fossbilling

Dopo aver scaricato il codice sorgente di FOSSBilling e configurato la directory di installazione, configurerai successivamente il blocco del server Nginx che verrà utilizzato per eseguire l'applicazione web FOSSBilling.

Configurazione del blocco server Nginx

In questo passaggio, imposterai una nuova configurazione di blocco del server Nginx che verrà utilizzata per eseguire l'applicazione web FOSSBilling. Prima di iniziare, assicurati che il tuo nome di dominio punti all'indirizzo IP del server.

Crea un nuovo file di configurazione del blocco del server Nginx '/etc/nginx/conf.d/fossbilling.conf' utilizzando il comando dell'editor nano riportato di seguito.

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

Aggiungi le seguenti righe al file. Assicurati di modificare il nome del dominio di installazione di destinazione "fossbilling.hwdomain.io".

server {
    listen 80;
    set $root_path '/var/www/fossbilling';
    server_name fossbilling.hwdomain.io;
    index index.html index.htm index.php;
    root $root_path;
    try_files $uri $uri/ @rewrite;
    sendfile off;
     
    include /etc/nginx/mime.types;
    # Block access to sensitive files and return 404 to make it indistinguishable from a missing file
    location ~* .(ini|sh|inc|bak|twig|sql)$ {
        return 404;
    }
    # Block access to hidden files except for .well-known
    location ~ /\.(?!well-known\/) {
        return 404;
    }
    # Disable PHP execution in /uploads
    location ~* /uploads/.*\.php$ {
        return 404;
    }
        
    # Deny access to /data
    location ~* /data/ {
        return 404;
    }
    location @rewrite {
        rewrite ^/page/(.*)$ /index.php?_url=/custompages/$1;
        rewrite ^/(.*)$ /index.php?_url=/$1;
    }
    location ~ \.php {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        # fastcgi_pass need to be changed according your server setup:
        # phpx.x is your server setup
        # examples: /var/run/phpx.x-fpm.sock, /var/run/php/phpx.x-fpm.sock or /run/php/phpx.x-fpm.sock are all valid options 
        # Or even localhost:port (Default 9000 will work fine) 
        # Please check your server setup
        fastcgi_pass unix:/run/php-fpm/www.sock;
        fastcgi_param PATH_INFO       $fastcgi_path_info;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_intercept_errors on;
        include fastcgi_params;
    }
    location ~* ^/(css|img|js|flv|swf|download)/(.+)$ {
        root $root_path;
        expires off;
    }
}

Salvare ed uscire dal file una volta terminato.

Successivamente, esegui il comando seguente per verificare la configurazione di Nginx. Quindi riavvia il servizio Nginx per applicare le modifiche. Se il test della configurazione di Nginx ha esito positivo, dovresti ottenere un output come "test riuscito - sintassi ok".

sudo nginx -t
sudo systemctl restart nginx

Produzione :

A questo punto, hai FOSSBilling in esecuzione con il server web Nginx. Ma è ancora nella connessione HTTP non sicura. Nel passaggio successivo, proteggerai FOSSBiling con certificati SSL/TLS tramite Certbot e Letsencrypt.

Protezione di FOSSBilling con SSL/TLS Letsencrypt

Una volta creata la configurazione del blocco del server Nginx, proteggerai successivamente l'installazione di FOSSBilling con certificati SSL/TLS e potrai raggiungere questo obiettivo utilizzando lo strumento Certbot e i certificati SSL gratuiti di Letsencrypt.

Prima di iniziare, assicurati che il tuo nome di dominio punti all'indirizzo IP del server e assicurati di avere un indirizzo email che verrà utilizzato per registrarti su Letsencrypt.

Ora esegui il comando dnf seguente per installare Certbot e il plugin Certbot Nginx. Immettere y quando richiesto e premere INVIO per procedere.

sudo dnf install certbot python3-certbot-nginx

Produzione :

Dopo aver installato Certbot, esegui il comando seguente per generare certificati SSL/TLS per il tuo nome di dominio. Inoltre, assicurati di modificare il nome di dominio e l'indirizzo e-mail nel comando seguente.

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email  -d fossbilling.hwdomain.io

Con questo comando verranno generati i nuovi certificati SSL/TLS per il tuo nome di dominio. Inoltre, questo imposterà automaticamente HTTPS sul blocco del tuo server Nginx e imposterà il reindirizzamento automatico da HTTP a HTTPS. I tuoi certificati SSL/TLS vengono generati nella directory '/etc/elstencrypt/live/fossbilling.hwdomain.io/'.

Avvia l'installazione di FOSSBilling

Apri il tuo browser web e visita il nome del dominio della tua installazione FosssBilling (ad esempio: https://fossbilling.hwdomain.io/).

Il programma di installazione di FOSSBilling ora dovrebbe controllare e verificare i dettagli del tuo sistema. Assicurati che i requisiti ricevano lo stato "Ok" con il colore verde. Fai clic su Avanti per continuare.

Ora inserisci i dettagli del database MariaDB e dell'utente che hai creato e fai nuovamente clic su Avanti.

Successivamente, inserisci i dettagli del nuovo amministratore per FOSSBilling. Inserisci il tuo nome utente, indirizzo email, password e valuta predefinita. Quindi, fai clic su Avanti per continuare.

Una volta completata l'installazione di FOSSBilling, dovresti ricevere il messaggio 'Congratulazioni! FOSSBilling è stato installato con successo.'.

Vedrai anche alcune istruzioni per completare l'installazione di FOSSBilling.

Torna al terminale del tuo server Rocky Linux ed esegui i seguenti comandi per completare l'installazione di FOSSBilling.

Rimuovere la directory "installa" di FOSSBilling.

sudo rm -rf /var/www/fossbilling/install

Cambia i permessi del file di configurazione di FOssBilling 'config.php' in 0644. Ciò rimuoverà l'autorizzazione di "scrittura" per altri e gruppi.

sudo chmod 0644 /var/www/fossbilling/config.php

Crea un nuovo cron per FOSSBilling tramite il comando seguente.

crontab -u nginx -e

Seleziona l'editor di codice che desideri utilizzare. Quindi inserisci le seguenti righe nel file.

*/5 * * * * php /var/www/fossbilling/cron.php

Salvare il file e uscire dall'editor una volta terminato.

Ora torna al browser web e fai clic su Fine.

Ora otterrai la pagina seguente.

Se fai clic sul pulsante "Area clienti", verrai reindirizzato alla home page di FOSSBilling.

Se fai clic sul pulsante "Area amministrazione", verrai reindirizzato alla pagina di accesso dell'amministratore.

Accedi con il tuo indirizzo email e la tua password, quindi fai clic su "Accedi".

In caso di successo, dovresti vedere il dashboard di amministrazione di FOSSBilling.

Con questo, hai completato l'installazione di FOSSBilling e ti sei assicurato con i certificati SSL/TLS tramite Certbot e Letsencrypt.

Conclusione

In questa guida, hai installato FOSSBilling open source per la fatturazione e la gestione degli utenti su un server Rocky Linux 9. Hai anche configurato lo stack LEMP (server web Nginx, database MariaDB e PHP-FPM) su un sistema Rocky Linux. Oltre a ciò, hai protetto l'installazione di FOSSBilling con certificati SSL/TLS generati tramite Certbot e Letsencrypt.

Da qui, ora puoi utilizzare FOSSBilling per la tua attività. Puoi aggiungere più utenti, configurare un server SMTP e molto altro.

Articoli correlati: