Ricerca nel sito web

Come installare BoxBilling su Debian 11


Su questa pagina

  1. Prerequisiti
  2. Installazione e configurazione di PHP
  3. Installazione di Nginx e MariaDB
  4. Impostazione del database MariaDB
  5. Impostazione di un nuovo database e utente per BoxBilling
  6. Download del codice sorgente di BoxBilling
  7. Configurazione di Nginx per BoxBilling
  8. Installazione e configurazione di BoxBilling
  9. BoxBilling dopo l'installazione
  10. Accesso alla pagina di amministrazione di BoxBilling
  11. Conclusione

BoxBilling è un software di fatturazione basato sulla comunità scritto in PHP. È una fatturazione gratuita e open source progettata per essere facile da usare sia per i clienti che per i venditori. BoxBilling offre un'ottima esperienza per i clienti con un'interfaccia intuitiva e supporta anche più gateway di pagamento.

In questo tutorial, ti mostreremo come installare BoxBilling con Nginx, PHP-FPM e MariaDB su Debian 11 Bullseye.

Prerequisiti

  • Un server Debian 11 Bullseye.
  • Un utente con privilegi di root sudo.
  • Un nome di dominio o sottodominio puntato all'indirizzo IP del server. Soprattutto in un ambiente di produzione.

Installazione e configurazione PHP

Innanzitutto, installerai e configurerai PHP-FPM sul tuo sistema Debian. l'ultima versione di BoxBilling richiedeva PHP-FPM 7.4 o superiore, che è la versione predefinita di PHP nel repository Debian.

Prima di iniziare, aggiorna l'indice dei pacchetti Debian usando il comando apt di seguito.

sudo apt update

Dopo che il repository è aggiornato, esegui il seguente comando per installare PHP-FPM con tutte le estensioni aggiuntive per BoxBilling.

sudo apt install php-fpm php-cli php-common php-zip php-mysql php-gd php-intl php-curl php-imap php-mbstring php-xml php-json libpcre3 openssl git unzip -y

Al termine dell'installazione di PHP, modificare il file php.ini utilizzando nano editor.

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

Modifica l'opzione di memory_limit, max_execution_time e date.timezone con il tuo ambiente preferito. In questo esempio, stiamo utilizzando il server con 2 GB di memoria RAM, quindi assegneremo memory_limit per PHP a 512 MB. Per l'opzione data.timezone, cambiala con il tuo fuso orario.

memory_limit = 512M
max_execution_time = 360
date.timezone = Europe/Paris

Salva il file ed esci.

Ora riavvia il servizio PHP-FPM e applica la nuova configurazione eseguendo il comando systemctl di seguito.

sudo systemctl restart php7.4-fpm

Infine, verifica il servizio PHP-FPM utilizzando il comando seguente.

sudo systemctl status php7.4-fpm

Vedrai l'output mentre il servizio PHP-FPM è attivo in esecuzione.

Installazione di Nginx e MariaDB

In questo passaggio, installerai il server Web Nginx e il database MariaDB. L'applicazione BoxBilling richiede almeno MySQL v8, ma supporta anche un'altra implementazione MySQL come MariaDB.

Installa Nginx e MariaDB sul server Debian 11 usando il comando apt di seguito.

sudo apt install nginx-full mariadb-server -y

Al termine dell'installazione di Nginx e MariaDB, eseguire il comando seguente per verificare il servizio Nginx e il servizio MariaDB.

sudo systemctl status nginx
sudo systemctl status mariadb

Ora dovresti ottenere l'output poiché i servizi Nginx e MariaDB sono attivi e in esecuzione.

Configurazione del database MariaDB

Dopo l'installazione di MariaDB, si consiglia di impostare la password di root per MariaDB. Utilizzerai il comando mysql_secure_installation per impostare la password root di MariaDB e distribuire MariaDB con la sicurezza di base.

Esegui il comando mysql_secure_installation sul tuo terminal server.

mysql_secure_installation

Ora ti verrà chiesto di digitare la password di root per MariaDB. Premere INVIO per continuare perché l'installazione predefinita di MariaDB viene fornita senza password di root.

Enter current password for root (enter for none):
OK, successfully used password, moving on...

Ora digita Y per passare dall'autenticazione predefinita per l'utente root al metodo unix_socket_authentication. Ciò assicurerà che l'utente root sia sempre connesso a MariaDB dalla macchina locale.

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n] Y
Enabled successfully!
Reloading privilege tables..
 ... Success!

Digita Y per modificare la password di root per MariaDB, quindi inserisci la nuova password per MariaDB e ripeti.

You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n] Y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
 ... Success!

Digita Y per rimuovere l'utente anonimo predefinito su MariaDB.

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] Y
 ... Success!

Digitare Y per disabilitare l'accesso remoto per l'utente root.

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] Y
 ... Success!

Digitare Y per rimuovere il test del database predefinito e tutti i privilegi su di esso.

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] Y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Infine, ricarica i privilegi della tabella su MariaDB per applicare le nuove modifiche.

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] Y
 ... Success!

Cleaning up...

E hai configurato la password di root di MariaDB e il tuo server MariaDB è ora protetto.

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Impostazione nuovo database e utente per BoxBilling

In questo passaggio, creerai un nuovo database e un nuovo utente per l'installazione di BoxBilling. Tutti i dati relativi a BoxBilling verranno archiviati nel database MariaDB.

Ora accedi alla shell MariaDB usando il seguente comando.

mysql -u root -p

Esegui le seguenti query per creare un nuovo database e un nuovo boxbilling utente con la password dbpassBoxBilling, quindi concedi tutti i privilegi sul database boxbilling all'utente [email protetto]. Successivamente, ricarica tutti i privilegi della tabella per applicare le nuove modifiche su MariaDB.

CREATE DATABASE boxbilling;
CREATE USER WITH GRANT OPTION;
FLUSH PRIVILEGES;

Ora digita exit per uscire dalla shell MariaDB. E hai creato il nuovo database e utente MariaDB per l'installazione di BoxBilling.

Download del codice sorgente di BoxBilling

BoxBilling può essere installato in molti modi. Puoi installare l'ultima versione di BoxBilling dal codice sorgente e installare tutte le dipendenze PHP utilizzando Composer oppure scaricare la versione stabile di BoxBilling e spostarla nella directory web-root.

In questo passaggio, installeremo l'ultima versione stabile di BoxBilling. Al momento della stesura di questo documento, l'ultima versione stabile di BoxBilling è la v4.22.

Crea una nuova directory web root /var/www/boxbilling e spostaci la tua directory di lavoro.

mkdir -p /var/www/boxbilling/
cd /var/www/boxbilling

Scarica l'ultima versione stabile del codice sorgente di BoxBilling utilizzando il comando wget ed estrai il file BoxBilling.zip utilizzando il comando unzip.

wget https://github.com/boxbilling/boxbilling/releases/download/4.22.1.3/BoxBilling.zip
unzip Boxbilling.zip

Ora crea una nuova directory cache e carica su /var/www/boxbilling/.

mkdir -p /var/www/boxbilling/bb-data/{cache,uploads}

Successivamente, modifica la proprietà della directory /var/www/boxbilling in un altro utente e gruppo www-data utilizzando il comando seguente.

sudo chown -R www-data:www-data /var/www/boxbilling

Consenti all'utente www-data di scrivere nella directory cache e upload.

sudo chmod u+rw /var/www/boxbilling/bb-data/{cache,uploads}

E ora sei pronto per configurare il server web Nginx per il software BoxBilling.

Configurazione di Nginx per BoxBilling

In questo passaggio, aggiungerai nuovi blocchi server Nginx per BoxBilling. Prima di creare la configurazione del blocco del server, assicurati di avere il nome di dominio indirizzato al server. Inoltre, assicurati di avere i certificati SSL generati per il tuo dominio, puoi utilizzare i certificati SSL gratuiti di Letsencrypt.

Sposta la tua directory di lavoro in /etc/nginx/sites-available e crea una nuova configurazione dei blocchi del server boxbilling.conf utilizzando l'editor nano.

cd /var/www/sites-available/
nano boxbilling.conf

Copia e incolla la seguente configurazione. E assicurati di cambiare il nome di dominio e il percorso dei certificati SSL.

server {
    listen 80;
    server_name billing.example.io;
    return 302 https://$server_name$request_uri;
}

server {
  listen 443 ssl http2;

     set $root_path '/var/www/boxbilling';

     server_name  billing.example.io;

     index index.html index.htm index.php;
     root $root_path;
     try_files $uri $uri/ @rewrite;
     sendfile off;

  ssl_certificate /etc/letsencrypt/live/billing.example.io/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/billing.example.io/privkey.pem;

  ssl_protocols TLSv1.2;
  ssl_prefer_server_ciphers on;
  ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384;
  ssl_ecdh_curve secp384r1; # Requires nginx >= 1.1.0
  ssl_session_timeout  10m;
  ssl_session_cache shared:SSL:10m;
  ssl_session_tickets off; # Requires nginx >= 1.5.9
  # ssl_stapling on; # Requires nginx >= 1.3.7
  # ssl_stapling_verify on; # Requires nginx => 1.3.7
  resolver 8.8.8.8 8.8.4.4 valid=300s;
  resolver_timeout 5s;
  add_header X-Frame-Options DENY;
  add_header X-Content-Type-Options nosniff;
  add_header X-XSS-Protection "1; mode=block";

    access_log /var/log/nginx/example.com.access.log;
    error_log /var/log/nginx/example.com.error.log;

     location @rewrite {
         rewrite ^/(.*)$ /index.php?_url=/$1;
     }

    location ~ \.php$ {
         include snippets/fastcgi-php.conf;
         fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
         include fastcgi_params;
         fastcgi_intercept_errors on;
    }

     # Disable PHP execution in bb-uploads and bb-data
     location ^~ /bb-uploads/ { }
     location ^~ /bb-data/ {
       deny all;
     }

     location ~* ^/(css|img|js|flv|swf|download)/(.+)$ {
         root $root_path;
         expires off;
         proxy_no_cache 1;
         proxy_cache_bypass 1;
     }

     location ~ /\.ht {
         deny all;
     }
 }

Salva il file ed esci.

Successivamente, esegui il comando seguente per attivare la configurazione del blocco del server boxbilling.conf e verificare la configurazione di Nginx.

ln -s /etc/nginx/sites-available/boxbilling.conf /etc/nginx/sites-enabled/
sudo nginx -t

Se la tua configurazione Nginx è corretta, vedrai un messaggio di output come Syntax OK.

Lasty, riavvia il servizio Nginx per applicare la nuova configurazione.

sudo systemctl restart nginx

Installazione e configurazione di BoxBilling

A questo punto, hai configurato il server Web BoxBilling e Nginx. Ora inizierai a installare e configurare BoxBilling dal browser web.

Apri il tuo browser web e digita il nome di dominio BoxBilling nella barra degli indirizzi.

https://boxbilling.example.io/

Assicurati che tutti i requisiti abbiano il colore verde, il che significa che il tuo sistema è soddisfatto per l'installazione di BoxBilling.

Seleziona la casella Licenza Accetto e fai clic sul pulsante AVANTI.

Immettere il database e l'utente per BoxBilling e fare di nuovo clic sul pulsante AVANTI.

Ora digita il nuovo utente amministratore, e-mail e password per BoxBilling e fai clic su AVANTI.

E hai installato correttamente BoxBilling, ma avrai bisogno di configurazioni aggiuntive che devi applicare al server BoxBilling.

Fai clic sul pulsante FINISH e hai completato l'installazione di BoxBilling.

Puoi passare alla home page di BoxBilling e vedrai una pagina simile a quella sottostante.

BoxBilling Post installazione

Al termine dell'installazione di Boxbilling, sarà necessario rimuovere la directory di installazione e modificare l'autorizzazione del file bb-config.php, quindi creare un nuovo cronjob per l'applicazione BoxBilling.

Rimuovi la directory install di BoxBilling utilizzando il seguente comando.

rm -rf /var/www/boxbilling/install

Cambia il permesso di bb-config.php in 644. Ciò significa che solo i dati www dell'utente consentono di scrivere su questo file.

sudo chmod 644 /var/www/boxbilling/bb-config.php

Ora crea un nuovo cronjob per l'utente www-data. L'applicazione BoxBilling viene eseguita principalmente sul server Web Nginx con l'utente www-data.

export EDITOR=nano
sudo crontab -u www-data -e

Copia e incolla il seguente script.

*/5 * * * * php /var/www/boxbilling/bb-cron.php

Salva il cron ed esci.

Ora il tuo BoxBilling è pronto per i tuoi clienti e clienti.

Accesso alla pagina di amministrazione di BoxBilling

La pagina di amministrazione di BoxBilling si trova nel percorso URL /bb-admin. Inserisci il seguente URL nella barra degli indirizzi del tuo browser web.

https://boxbilling.example.io/bb-admin/

Nella pagina di accesso dell'amministratore di BoxBilling, inserisci il tuo nome utente e password, fai clic sul pulsante ACCEDI.

Ora vedrai la dashboard di amministrazione di Boxbilling come di seguito.

Conclusione

Congratulazioni! Ora hai installato BoxBilling con PHP-FPM, Nginx e MariaDB sull'ultimo Debian 11 bullseye. Ora puoi usarlo come gestione centrale gratuita degli acquisti con i tuoi clienti e clienti.