Ricerca nel sito web

Come installare ERPNext 14 su Debian 11


ERPNext è un sistema ERP (Enterprise Resource Planning) open source che può essere implementato nella tua azienda. ERPNext può essere implementato in molteplici settori, tra cui produzione, distribuzione, vendita al dettaglio, commercio, servizi, istruzione, organizzazioni no-profit e sanità. Inoltre, fornisce moduli come contabilità, CRM, vendite, acquisti, sito Web, e-commerce, punto vendita, produzione, magazzino, gestione dei progetti, inventario e servizi.

ERPNext è una piattaforma ERP aziendale concessa in licenza con GNU General Public License v3. È scritto principalmente in Python e JavaScript, sviluppato da Frappe Technologies Pvt. ERPNext è un'applicazione scritta sotto il framework Frappe, un framework web open source in Python e Javascript.

ERPNext è un'alternativa a servizi come NetSuite di Oracle, QAD, Tython, OpenBrave e Odoo. Per funzionalità, ERPNext è simile a Odoo (precedentemente OpenERP).

In questo tutorial installerai ERPNext su un server Debian 11 e quindi proteggerai ERPNext con certificati SSL/TLS tramite Certbot e Letsencrypt. Imparerai anche come installare le dipendenze per ERPNext, come Python 3.10, Redis, Nginx, Supervisor, Fail2ban, MariaDB Server, Node.js e Yarn e Frappe Web Framework.

Prerequisiti

Per completare questo tutorial avrai bisogno dei seguenti requisiti:

  • Un server Debian 11: questo esempio utilizza un server Debian con il nome host "erpnext-server".
  • Un utente non root con privilegi di amministratore sudo/root. Eseguirai tutti i comandi in questa guida come utente non root.
  • Un nome di dominio puntava all'indirizzo IP del server.

Ora passiamo all'installazione.

Imposta nuovo utente

Il primo passaggio di questo tutorial consiste nel creare un nuovo utente che verrà utilizzato per eseguire l'applicazione ERPNext. Inoltre, aggiungerai il nuovo utente al gruppo "sudo" e consentirai a questo utente di eseguire comandi con privilegi di root.

Esegui il comando seguente per creare un nuovo utente e impostare la password per il nuovo utente. In questo esempio creerai un nuovo utente "frappe" che verrà utilizzato per eseguire ERPNext.

sudo useradd -m -s /bin/bash frappe
sudo passwd frappe

Ora aggiungi l'utente "frappe" al gruppo "sudo" tramite il comando seguente.

sudo usermod -aG sudo frappe

Infine, verifica il nuovo utente eseguendo il comando seguente. Accederai come utente "frappe" e otterrai i privilegi di root tramite il comando "sudo su".

su - frappe
sudo su

Il prompt del terminale dovrebbe essere modificato in 'root@nomehost:/home/frappe..'. Ora digita "exit" per disconnetterti dalla shell root.

In questo modo hai creato un nuovo utente per ERPNext. Nei passaggi successivi installerai Python 3.10 manualmente compilandolo dal sorgente.

Installazione di Python 3.10

ERPNext è un'applicazione web creata con un frappeframework, basato su Python. Al momento in cui scrivo, l'ultima versione di frappeframework e ERPNext richiedeva almeno Python 3.10.

In questo passaggio installerai Python 3.10 manualmente dal sorgente. Perché l'attuale repository Debian 11 non fornisce ancora i pacchetti Python 3.10.

Prima di iniziare, assicurati di aver effettuato l'accesso al tuo server Debian come nuovo utente 'frappe'.

su - frappe

Per iniziare, esegui il comando seguente per aggiornare l'indice del tuo pacchetto Debian.

sudo apt update

Ora esegui il comando apt seguente per installare le dipendenze per la compilazione di Python.

sudo apt install wget build-essential libncursesw5-dev libssl-dev \
     libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev libffi-dev zlib1g-dev

Immettere y quando richiesto e premere INVIO per procedere.

Successivamente, scarica il codice sorgente Python 3.10 dalla pagina di download di Python tramite il comando wget riportato di seguito. In questo esempio scaricherai e installerai Python 3.10.9.

wget https://www.python.org/ftp/python/3.10.9/Python-3.10.9.tgz

Dopo aver scaricato il codice sorgente Python, estrai il codice sorgente Python tramite il comando tar e sposta al suo interno la directory di lavoro.

tar xzf Python-3.10.9.tgz
cd Python-*/

Ora esegui il comando seguente per compilare Python 3.10 e installarlo.

./configure --enable-optimizations
nproc
sudo make -j2
sudo make altinstall

Una volta completata l'installazione di Python, dovresti ottenere il tuo binario Python nella directory '/usr/local/bin/'. Esegui il comando seguente per verificare l'installazione di Python 3.10.

ls /usr/local/bin

Dovresti vedere il file binario dei pacchetti Python 3.10 come 'python3.10' e 'pip3.10 '.

Successivamente, per assicurarti di poter eseguire la nuova versione dei comandi Python, dovresti aggiungere la directory '/usr/local/bin' al PATH del sistema e al visudo secure_path .

Crea un nuovo file '/etc/profile.d/custom-path.sh' utilizzando il comando dell'editor nano riportato di seguito.

sudo nano /etc/profile.d/custom-path.sh

Aggiungi la seguente riga al file.

export PATH=$PATH:/usr/local/bin/

Salvare il file ed uscire dall'editor.

Ora esegui il comando seguente per caricare il nuovo file '/etc/profile.d/custom-path.sh' e verifica il PATH del sistema.

source /etc/profile.d/custom-path.sh
echo $PATH

Dovresti vedere che la directory '/usr/local/bin' è stata aggiunta alla variabile di ambiente PATH di sistema.

Successivamente, esegui il comando seguente per modificare la configurazione di sudoers.

sudo visudo

Nella riga 'Defaults secure_path=', aggiungi il nuovo binario secure_path '/usr/local/bin'.

Defaults secure_path=....:/usr/local/bin

Salva e esci dall'editor una volta terminato.

Con questo, ora puoi eseguire il nuovo Python 3.10 tramite il comando sudo. Esegui il comando seguente per verificare Python3.10 e Pip3.10.

sudo python3.10 --version
sudo pip3.10 --version

Di seguito è riportato l'output simile che riceverai sul tuo terminale.

Ora che hai installato Python 3.10, passa alla successiva installazione delle dipendenze ERPNext, ovvero il server Web Nginx e Supervisor.

Installazione di Nginx e Supervisor

Per installare ERPNext è necessario installare Nginx che verrà utilizzato come web server predefinito, e Supervisor come gestore del processo. Entrambi i pacchetti Nginx e Supervisor sono disponibili nel repository Debian e puoi installarli facilmente tramite APT.

Eseguire il comando apt seguente per installare i pacchetti Nginx e Supervisor.

sudo apt install git nginx supervisor

Immettere y quando richiesto e premere INVIO per procedere.

Successivamente, esegui l'utilità di comando systemctl seguente per verificare entrambi i servizi Nginx e Supervisor. Ciò garantirà che entrambi i servizi Nginx e Supervisor siano in esecuzione e abilitati, il che significa che entrambi i servizi dovrebbero essere eseguiti automaticamente all'avvio.

Controlla il servizio Nginx.

sudo systemctl is-enabled nginx
sudo systemctl status nginx

Produzione :

Controllare il servizio Supervisore.

sudo systemctl is-enabled supervisor
sudo systemctl status supervisor

Produzione :

Con Nginx e Supervisor installati e in esecuzione, passare all'installazione successiva Redis Server e Fail2ban.

Installazione di Redis e Fail2ban

Redis è un database chiave-valore che può essere utilizzato per archiviare dati temporanei come le sessioni. Fail2ban è uno strumento di sicurezza per bloccare gli attacchi di forza bruta contro le tue applicazioni ERPNext.

ERPNext richiedeva Redis che verrà utilizzato come gestore della sessione e Fail2ban per bloccare gli attacchi di forza bruta sulla pagina di accesso dell'utente ERPNext.

Esegui il comando apt seguente per installare Redis e Fail2ban sul tuo server Debian.

sudo apt install redis-server fail2ban

Immettere y quando viene richiesta la conferma, quindi premere ENTER per procedere.

Dopo aver installato Redis e Fail2ban, esegui il comando systemctl seguente per verificare entrambi i servizi.

sudo systemctl is-enabled redis-server
sudo systemctl status redis-server
sudo systemctl is-enabled fail2ban
sudo systemctl status fail2ban

Per il servizio Redis, dovresti vedere un output simile a questo: il servizio Redis è abilitato e verrà eseguito automaticamente all'avvio. E lo stato attuale di Redis è in esecuzione.

Per il servizio Fail2ban, dovresti vedere un output simile a questo: il servizio Fail2ban è abilitato e verrà eseguito automaticamente all'avvio. E lo stato attuale di Fail2ban è in esecuzione.

Ora hai il server Redis e Fail2ban installati e funzionanti. Nei passaggi successivi installerai e configurerai il server database MariaDB.

Installazione e configurazione del server MariaDB

Nell'installazione predefinita, ERPNext utilizzerà MySQL/MariaDB come server database. ERPNext richiedeva una versione specifica di MySQL/MariaDB per l'installazione.

In questo passaggio installerai MariaDB Server 10.6 dal repository MariaDB ufficiale. Quindi, aggiungerai le configurazioni al tuo MariaDB Server e proteggerai la distribuzione del MariaDB Server.

Esegui il comando seguente per aggiungere il repository MariaDB Server v10.6.

sudo curl -LsS https://r.mariadb.com/downloads/mariadb_repo_setup | sudo bash -s -- --mariadb-server-version="mariadb-10.6"

Riceverai un output simile a questo.

Ora esegui il comando apt seguente per installare i pacchetti MariaDB.

sudo apt install mariadb-server mariadb-client default-libmysqlclient-dev

Immettere y quando richiesto per l'installazione e premere INVIO per procedere.

Dopo aver installato il server MariaDB, esegui il comando systemctl seguente per verificare il servizio MariaDB e assicurarti che il servizio sia abilitato e in esecuzione.

sudo systemctl is-enabled mariadb
sudo systemctl status mariadb

Ora dovresti ottenere un output come il seguente: il servizio MariaDB è abilitato e verrà eseguito automaticamente all'avvio. E lo stato attuale del servizio MariaDB è in esecuzione.

Successivamente, apri il file di configurazione del server MariaDB '/etc/alternatives/my.cnf' utilizzando il comando dell'editor nano riportato di seguito.

sudo nano /etc/alternatives/my.cnf

Aggiungi le seguenti righe al file. La configurazione seguente abiliterà il formato 'barruca' sul tuo server MariaDB e inoltre imposterai il set di caratteri predefinito sia per il server che per il client su 'utf8mb4'.

[mysqld]
innodb-file-format=barracuda
innodb-file-per-table=1
innodb-large-prefix=1
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
[mysql]
default-character-set = utf8mb4

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

Ora esegui l'utilità di comando systemctl seguente per riavviare il servizio MariaDB e applicare le modifiche.

sudo systemctl restart mariadb

Successivamente, proteggerai la tua distribuzione MariaDB.

Esegui il comando seguente "mariadb-secure-installation" per proteggere la tua distribuzione MariaDB. Ti verrà quindi chiesto di configurare la password root di MariaDB, quindi assicurati di inserire e ripetere la nuova password. Per le restanti configurazioni, inserire Y per confermare e premere ENTER.

sudo mariadb-secure-installation

Con questo, hai terminato l'installazione e la configurazione del server MariaDB. Nel passaggio successivo installerai il pacchetto wkhtmltopdf che ERPNext utilizzerà per generare report PDF.

Installazione del pacchetto Wkhtmltopdf

In questo passaggio installerai il pacchetto Wkhtmltopdf che ERPNext utilizzerà per generare report PDF. Il Wkhtmltopdf può essere scaricato e installato manualmente tramite il file.deb o il file .rpm. Ma per Debian, puoi installarlo dal repository Debian ufficiale tramite APT.

Esegui il comando seguente per installare il pacchetto wkhtmltopdf. Immettere Y quando richiesto e premere INVIO per procedere.

sudo apt install xvfb libfontconfig wkhtmltopdf

Dopo aver installato Wkhtmltopdf, esegui il comando seguente per verificarlo. Il comando wkhtmltopdf viene utilizzato per convertire la pagina HTML in PDF, mentre wkhtmltoimage converte la pagina HTML in vari formati di immagine.

which wkhtmltopdf
wkhtmltopdf --version
which wkhtmltoimage
wkhtmltoimage --version

Riceverai un output simile a questo: Wkhtmltopdf v0.12 è installato sul tuo sistema Debian.

Nei passaggi successivi installerai il gestore pacchetti Node.js e Yarn che verrà utilizzato per generare file statici per ERPNext.

Installazione di Nodejs 16 e Yarn

L'ultima versione di ERPNext è la v14, che richiede almeno Node.js 16 e il gestore pacchetti Yarn. In questo passaggio installerai Node.js 16 tramite il repository Nodesource. Quindi, installa il gestore pacchetti Yarn.

Per iniziare, esegui il comando seguente per aggiungere il repository Nodesource per Node.js 16.

curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash

Riceverai quindi un output simile a questo.

Successivamente, esegui il comando seguente per aggiungere il repository Yarn per la distribuzione Debian-Linux.

sudo curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | sudo tee /usr/share/keyrings/yarnkey.gpg >/dev/null
echo "deb [signed-by=/usr/share/keyrings/yarnkey.gpg] https://dl.yarnpkg.com/debian stable main" | sudo tee /etc/apt/sources.list.d/yarn.list

Successivamente, aggiorna e aggiorna l'indice del tuo pacchetto Debian tramite il comando 'apt update'. Quindi, installa Node.js e il gestore pacchetti Yarn tramite il comando "apt install".

sudo apt update
sudo apt install nodejs yarn

Ora dovrebbe iniziare l'installazione del gestore pacchetti Node.js e Yarn.

Una volta installati Node.js e Yarn, hai completato l'installazione delle dipendenze del pacchetto per Frappe Web Framework e l'applicazione ERPNext.

Installazione della struttura Frappe e della panca Frappe

ERPNext è un software ERP open source creato con frappeframework, scritto in Python e JavaScript. Per installare ERPNext, è necessario installare frappeframework sul proprio sistema e può essere installato tramite 'frappe-bench' o 'bench'.

Quindi per prima cosa devi installare la panca. Quindi, installare la struttura del frappe tramite la panca. Infine, installerai l'applicazione ERPNext all'interno del framework frappe.

Per installare la panca, esegui il comando pip3.10 riportato di seguito.

sudo pip3.10 install frappe-bench

Riceverai un output simile a questo durante l'installazione del banco.

Dopo aver installato la panchina, esegui il comando seguente per verificarla. Riceverai il comando del percorso binario 'bench' e la versione corrente del bench che hai installato.

which bench
bench --version

Una volta installata la panca, installerai quindi la struttura delle frappe. Esegui il comando "bench" riportato di seguito per installare frappeframework nella directory di lavoro corrente. Inoltre, specificherai la versione di Python che verrà utilizzata per Python 3.10, la versione di frappeframework per v14. e la directory di installazione di destinazione è '<panca per frappe'.

bench init --python python3.10 --frappe-branch version-14 frappe-bench

Riceverai un output simile a questo durante l'installazione di frappeframework.

Dopo aver installato il frappeframework, al termine dell'installazione dovresti ricevere il seguente output.

Infine, esegui il comando seguente per consentire ad altri utenti di leggere ed eseguire la directory di installazione di frappeframwprk. Ciò è necessario affinché il server Web Nginx possa leggere ed eseguire il framework frapp.

sudo chmod -R o+rx /home/frappe/frappe-bench
or
sudo chmod -R o+rx /home/frappe

Una volta installato frappeframework, sarai pronto per installare e configurare ERPNext.

Imposta un nuovo sito/progetto in Frappeframework

Prima di installare ERPNext è necessario creare un nuovo sito/progetto sul framework frappe. In questo passaggio creerai un nuovo sito/progetto e trasferirai l'ambiente nel nuovo progetto tramite la panchina.

Innanzitutto, sposta la directory di lavoro su "frappe-bench" tramite il comando cd.

cd ~/frappe-bench

Esegui il comando bench riportato di seguito per creare un nuovo sito/progetto per ERPNext. In questo esempio, creerai un nuovo sito "erp.hwdomain.io", che è il nome di dominio di destinazione dell'installazione ERPNext. Inoltre, durante il processo di installazione, ti verrà chiesto di configurare la password dell'amministratore per il tuo progetto frappe, quindi inserisci la tua password e ripeti. Questa password verrà utilizzata per accedere alla tua applicazione ERPNext.

bench new-site erp.hwdomain.io

Infine, esegui il comando seguente per passare al nuovo sito/progetto 'erp.hwdomain.io'.

bench use erp.hwdomain.io

Di seguito è riportato l'output durante la creazione del sito/progetto e dopo il passaggio al nuovo sito/progetto.

Installazione di ERPNext tramite frappe-bench

Dopo aver creato il nuovo sito/progetto su frappeframework, esegui il comando seguente per scaricare l'app "pagamenti" e "erpnext '. In questo esempio scaricherai il file ERPNexxt v14.

bench get-app payments
bench get-app --branch version-14 erpnext

Di seguito è riportato un output simile che riceverai durante il processo di download di "pagamenti".

Di seguito è riportato il processo di download dell'applicazione ERPNext.

Successivamente, esegui il comando seguente per installare l'applicazione ERPNext sul sito/progetto 'erp.hwdomain.io'.

bench --site erp.hwdomain.io install-app erpnext

Riceverai un output simile a questo: inoltre dovresti vedere che l'applicazione "pagamenti" viene installata automaticamente come dipendenza per l'applicazione ERPNext.

Infine, esegui il comando bench riportato di seguito per abilitare lo scheduler e disabilitare la modalità di manutenzione sul sito/progetto "erp.hwdomain.io".

bench --site erp.hwdomain.io enable-scheduler
bench --site erp.hwdomain.io set-maintenance-mode off

A questo punto l'installazione di ERPNext è terminata. Ma, se esegui ERPNext in produzione, dovresti successivamente impostare e configurare il server web e il supervisore Nginx, che possono essere configurati tramite comando bench.

Distribuzione di ERPNext per la produzione

Innanzitutto, esegui il comando seguente per avviare la configurazione di frappeframeowrk e ERPNext per l'ambiente di produzione. Ciò installerà Ansible e configurerà automaticamente la distribuzione ERPNext tramite Ansible.

sudo bench setup production frappe

Di seguito è riportato l'output durante l'installazione di Ansible.

Di seguito è riportato l'output al termine della configurazione.

Successivamente, esegui il comando bench riportato di seguito per configurare Nginx e Supervisor per ERPNext. Quando viene richiesto di sovrascrivere le impostazioni correnti, inserire y per confermare e premere ENTER.

sudo bench setup supervisor
sudo bench setup nginx

Successivamente, esegui nuovamente il comando bench riportato di seguito per assicurarti che la configurazione Supervisor e Nginx sia installata.

sudo bench setup production frappe

Immettere y per sovrascrivere le impostazioni correnti e premere ENTR per procedere.

Infine, esegui il comando "supervisorctl" riportato di seguito con privilegi sudo. Ciò verificherà tutti i processi e i servizi utilizzati da frappeframework e ERPNext.

sudo supervisorctl status

Se l'installazione di ERPNext ha esito positivo, dovresti ricevere un output simile al seguente: Tutti i servizi per frappeframework ed ERPNext sono in esecuzione.

A questo punto, l'installazione di ERPNext è terminata ed è in esecuzione con Nginx come server web e supervisore per il gestore del processo. Ora puoi accedere alla tua installazione ERPNext tramite il tuo nome di dominio e il browser web.

Configurazione dell'installazione di ERPNext

Apri il tuo browser web e visita il nome di dominio della tua installazione ERPNext (ad esempio: http://erp.hwdomain.io/). Vedrai quindi la pagina di accesso di frappeframework.

Inserisci l'utente predefinito "Amministratore" e inserisci la password che hai utilizzato durante il processo di creazione del sito/progetto.

Ora seleziona la lingua, il fuso orario e la valuta predefiniti. Quindi fai clic su Avanti.

Inserisci il nuovo utente amministratore per l'installazione di ERPNext. Inserisci il tuo nome completo, indirizzo email e password, quindi fai clic su Avanti.

Inserisci il nome dell'azienda e carica il logo della tua azienda, quindi fai clic su Avanti.

Inserisci i dettagli sulla tua organizzazione e fai clic su Completa configurazione.

Ora dovresti vedere il dashboard di amministrazione della tua installazione ERPNext.

Protezione con certificati SSL/TLS tramite Certbot e Letsencrypt

In questa fase, proteggerai la distribuzione di ERPNext con certificati SSL/TLS che possono essere generati utilizzando lo strumento Certbot di Letsencrypt. Prima di iniziare, assicurati che il tuo nome di dominio punti all'indirizzo IP del tuo server e assicurati di avere un indirizzo email che verrà utilizzato per registrarti su Letsencrypt.

Esegui il comando apt seguente per installare lo strumento certbot e il plug-in certbot per il server web Nginx. Quando richiesto, inserire y per confermare e premere INVIO per procedere.

sudo apt install certbot python3-certbot-nginx

Dopo aver installato certbot, esegui il comando certbot riportato di seguito per generare certificati SSL per il tuo nome di dominio ERPNext. Assicurati di modificare il nome di dominio e l'indirizzo email nel comando seguente.

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

In questo modo l'installazione di ERPNext è ora protetta con certificati SSL/TLS tramite Certbot e Letsencrypt. Hai anche configurato il reindirizzamento automatico da HTTP a HTTPS sul tuo nome di dominio ERPNext, che Certbot gestisce automaticamente.

Conclusione

In questo tutorial hai imparato come installare ERPNext, un software ERP open source, su un server Debian 11. Hai anche imparato come installare alcune dipendenze, come Python 3.10, che viene installato manualmente compilando e installando il codice sorgente. Hai installato altre dipendenze sul tuo server Debian, come MariaDB, Nginx, Supervisor, Redis e Fail2ban.

Hai anche imparato come installare il framework Frappe e costruire ERPNext su di esso. Successivamente hai imparato la configurazione base di ERPNext come software ERP.

Infine, imposti ERPNext per la produzione configurando Nginx come server web e Supervisor come gestore dei processi. Hai anche assicurato l'uso di ERPNext con Certbot e Letsencrypt.

Articoli correlati: