Instalarea ERP — ghid istoric pentru .NET 5

Instalarea ERP

Note privind versiunea

Acest ghid istoric se referă la versiunea .NET 5 a sistemului ERP.

După actualizarea .NET, pot fi utilizabile versiuni mai noi ale sistemului de operare.

Configurația descrisă a fost testată pe Linux Ubuntu 20.04. Alte distribuții sau versiuni nu au fost validate în acest ghid.

În funcție de configurație, baza de date poate necesita un calculator separat. Pașii de instalare a sistemului de operare rămân aceiași.

Exemplele folosesc utilizatorul demonstrativ pos. Alegeți o parolă proprie, unică.

1       Instalarea în Oracle VM Box

Pentru rularea ERP într-o mașină virtuală Oracle VM Box, configurați opțiunile următoare.

Creați o mașină virtuală de tip Linux.

Pentru o adresă statică, modul de rețea prezentat în ghid este Bridged Adapter, în locul valorii implicite NAT. După instalarea sistemului de operare, configurați IP-ul static.

Verificați accesibilitatea prin ping:

> ping 192.168.1.10

1.1     Copiere și lipire între gazdă și mașina virtuală

1.1.1     Instalarea Guest Additions

Guest Additions oferă clipboard comun, drag and drop și suport video îmbunătățit. Porniți mașina virtuală și accesați meniul VirtualBox:

Devices → Insert Guest Additions CD image…

Un CD virtual apare în mașina virtuală. Dacă nu pornește automat, deschideți terminalul sistemului invitat și montați și executați instalatorul:

>       sudo mkdir /mnt/cdrom

>       sudo mount /dev/cdrom /mnt/cdrom

>       sudo /mnt/cdrom/VBoxLinuxAdditions.run

După instalarea reușită, reporniți mașina virtuală. Verificați instalarea cu:

>       lsmod | grep vboxguest

Rezultatul trebuie să indice modulul instalat.

1.1.2     Rezolvarea dependențelor

Dacă instalarea Guest Additions raportează dependențe lipsă, instalați componentele necesare.

>       sudo apt update

>       sudo apt upgrade

>       sudo apt install make perl

Pentru dependențe nefuncționale, poate fi necesar Aptitude:

>       sudo apt install aptitude

>       sudo apt update

>       sudo aptitude install build-essential dkms linux-headers-$(uname -r)

>       reboot

1.1.3     Activarea clipboardului partajat

Pe calculatorul gazdă, înainte de pornire, selectați mașina virtuală în VirtualBox Manager.

Accesați Settings → General → Advanced și configurați:

  • Shared Clipboard: Bidirectional sau Host to Guest, după necesitate;
  • Opțional, Drag and Drop: Bidirectional.

Dacă drag and drop nu funcționează, utilizați o aplicație Remote Desktop sau un folder partajat.

1.2     Folder partajat când drag and drop nu funcționează

În VirtualBox Manager, selectați mașina → Settings → Shared Folders → Add (+):

  • Folder Path: folderul de pe gazdă;
  • Folder Name: numele vizibil în mașina virtuală;
  • Auto-mount și, opțional, Make Permanent.

Un folder numit SharedFolder este montat automat la /media/sf_SharedFolder.

Adăugați utilizatorul în grupul vboxsf pentru acces la folder:

>       sudo usermod -aG vboxsf $USER

2       Instalarea Linux pentru ERP și baza de date

2.1     Recomandări

Exemplele folosesc numele pos pentru utilizatorul sistemului și al bazei de date. Numele apare și în fișierele *.bat și *.sh. Adaptați consecvent configurațiile mediului și utilizați parole distincte, administrate în siguranță.

2.2     Pasul 1: mașina virtuală

Instalarea într-o mașină virtuală este opțională, dar facilitează copiile de siguranță și clonarea pentru medii Staging sau Test.

Configurația originală a utilizat PROXMOX, dar se poate folosi și altă platformă de virtualizare. Urmați documentația platformei pentru instalarea sistemului necesar.

2.3     Pasul 2: sistemul de operare

Instalați versiunea Linux indicată la începutul ghidului. Disponibilitatea .NET 5 diferă între distribuții, astfel încât instrucțiunile istorice nu trebuie presupuse compatibile cu versiunile actuale.

După instalare, componentele sistemului se actualizează cu:

>       sudo apt-get update

>       sudo apt-get upgrade

2.3.1     Configurația sudoers

Unele operații necesită SUDO. Configurația istorică de mai jos permitea executarea fără parolă. Este prezentată ca documentație a versiunii originale; pentru un sistem nou, limitați privilegiile la operațiile necesare:

>       sudo -i

~#>             cp /etc/sudoers /root/sudoers.bak

~#>             visudo

Comanda deschide editorul.

În exemplul original, regulile următoare permiteau toate comenzile fără parolă pentru utilizatorul și grupul pos:

pos ALL=(ALL) NOPASSWD: ALL

%pos ALL=(ALL) NOPASSWD: ALL

#ASPDOTNET

Defaults        env_keep += „ASPNETCORE_ENVIRONMENT”

Defaults        env_keep += „DOTNET_ENVIRONMENT”

Reporniți sistemul:

>       reboot

2.3.2     Adresa IP

Calculatorul ERP utilizează o adresă IP fixă, configurată și în fișierele appsettings.json ale mediului. Rezervați, dacă este necesar, încă două sau trei adrese pentru celelalte medii.

Adresa demonstrativă pentru instalarea independentă este 192.168.1.10. Configurați adresa potrivită rețelei din interfața sistemului de operare.

Reporniți sistemul:

>       reboot

2.4     Aplicație Remote Desktop — opțional

Pentru administrarea la distanță poate fi utilizată o aplicație precum RustDesk, AnyDesk sau TeamViewer.

Pe majoritatea distribuțiilor Linux, instalatorul se obține de la furnizor sau din managerul de aplicații.

Configurați accesul nesupravegheat numai dacă este necesar și protejați-l cu o parolă adecvată.

2.4.1     Monitor virtual — atenție

Instalarea poate afecta driverele video ale unei mașini virtuale. Creați o copie de siguranță înainte.

Mașinile virtuale includ de regulă un monitor virtual. Un calculator fizic fără monitor poate necesita o astfel de componentă pentru afișarea corectă prin Remote Desktop.

Pentru Ubuntu 20.04, exemplul utilizează monitorul virtual xserver:

>       sudo apt-get install xserver-xorg-video-dummy

>       cd /usr/share/X11/xorg.conf.d

>       sudo touch xorg.conf

>       sudo nano xorg.conf

Se creează și se deschide fișierul de configurare.

Exemplul definește un monitor virtual de 1600 × 1200 pixeli.

Section „Device”

Identifier  „Configured Video Device”

Driver      „dummy”

EndSection

 

Section „Monitor”

Identifier  „Configured Monitor”

HorizSync 31.5-48.5

VertRefresh 50-70

EndSection

 

Section „Screen”

Identifier  „Default Screen”

Monitor     „Configured Monitor”

Device      „Configured Video Device”

DefaultDepth 24

SubSection „Display”

Depth 24

Modes „1600×1200”

EndSubSection

EndSection

3       Instalarea .NET

Ghidul se referă la .NET 5 și Ubuntu 20.04. Comenzile trebuie adaptate și validate pentru alt sistem de operare sau altă versiune de framework.

3.1     Actualizarea surselor de pachete

Comenzile utilizate sunt:

>       sudo wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb

>       sudo dpkg -i packages-microsoft-prod.deb

>       sudo apt update

3.1.1     Suport HTTPS — opțional

Dacă este necesar, instalați componenta:

>       sudo apt install apt-transport-https

3.1.2     Instalarea libssl — opțional

Configurația descrisă pentru HTTPS utilizează libssl:

>   sudo wget http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1-1ubuntu2.1\~18.04.20_amd64.deb

>   sudo dpkg -i libssl1.1_1.1.1-1ubuntu2.1~18.04.20_amd64.deb

În cazul problemelor cu instalarea libssl, ghidul original prezintă următoarele comenzi:

> echo „deb http://security.ubuntu.com/ubuntu focal-security main” | sudo tee /etc/apt/sources.list.d/focal-security.list

> sudo apt-get update

> sudo apt-get install libssl1.1

3.2     Instalarea .NET 5

Comanda de instalare:

>       sudo apt-get install -y dotnet-sdk-5.0

Verificați SDK-urile instalate:

>       dotnet –list-sdks

Rezultatul așteptat în configurația originală:

5.0.408 [/usr/share/dotnet/sdk]

Verificați mediile de execuție:

>       dotnet –list-runtimes

Rezultatul așteptat:

Microsoft.AspNetCore.App 5.0.17 [/usr/share/dotnet/shared/Microsoft.AspNetCore.App]

Microsoft.NETCore.App 5.0.17 [/usr/share/dotnet/shared/Microsoft.NETCore.App]

4       Instalarea NGINX

Interfața este publicată prin NGINX. Comanda de instalare:

>       sudo apt install nginx

Reporniți sistemul.

>       reboot

5       Instalarea PostgreSQL

După instalarea și actualizarea Linux și configurarea IP-ului, instalați baza de date pe același calculator sau pe unul separat.

Referințe:

https://www.cherryservers.com/blog/how-to-install-and-setup-postgresql-server-on-ubuntu-20-04

https://www.digitalocean.com/community/tutorials/how-to-install-postgresql-on-ubuntu-20-04-quickstart

5.1     Instalarea PostgreSQL

Comanda de instalare:

>       sudo apt-get -y install postgresql

Managerul de pachete instalează versiunea disponibilă în sursele configurate. Versiunea validată în ghidul original este 12.22.

Verificați versiunea instalată:

>       pg_config –version

Rezultatul configurației originale:

PostgreSQL 12.22 (Ubuntu 12.22-0ubuntu0.20.04.4)

5.2     Crearea utilizatorului bazei de date

Exemplul utilizează același nume ca în Linux, fără ca aceasta să fie o cerință. Numele trebuie să corespundă celui din șirurile de conexiune ERP.

> sudo -u postgres createuser –interactive

Se deschide configurarea interactivă. Exemplul istoric utilizează rolul superuser; pentru o instalare nouă, stabiliți privilegiile necesare operațiilor efective.

 

5.3     Crearea bazei ERP

Comanda pentru o bază nouă:

> createdb erp

5.4     Conectarea la baza de date

După crearea utilizatorului și a bazei, conexiunea poate fi verificată prin PSQL:

> psql -d erp

Verificați detaliile conexiunii cu:

# \conninfo

Rezultatul așteptat:

You are connected to database „erp” as user „pos” via socket in „/var/run/postgresql” at port „5432”.

5.5     Parola utilizatorului

Configurați o parolă proprie pentru utilizatorul bazei de date. După conectare, utilizați comanda:

> psql -d erp

# \password pos

Se solicită introducerea parolei:

Introduceți parola.

Păstrați aceeași valoare în configurația autorizată a conexiunii din appsettings.json. Nu publicați parola și nu reutilizați parola sistemului de operare.

Introduceți exit pentru a ieși.

5.6     Accesul la bază prin rețea

Implicit, PostgreSQL nu permite conexiuni externe în configurația descrisă. Regulile de acces sunt definite în pg_hba.

> cd /etc/postgresql

> ls

Sunt afișate directoarele versiunilor instalate. Înlocuiți <version> cu versiunea utilizată.

> sudo nano <version>/main/pg_hba.conf

Regulile au structura [CONNECTION_TYPE] [DATABASE] [USER] [ADDRESS] [METHOD]. Exemplul istoric de mai jos permite orice adresă și nu trebuie păstrat într-o instalare expusă:

host erp pos 0.0.0.0/0 md5

Această regulă permite conexiuni de la orice IP.

Limitați accesul la adresa serverului ERP, în locul intervalului 0.0.0.0/0.

Exemplele istorice de intervale sunt:

#Internet access for ERP

host erp  pos 86.122.0.0/16       md5  # this is a range for the ISP

host erp  pos 192.168.1.10/32     md5  # this is the actual ERP server

host erp  pos 192.168.0.0/16      md5  # this is a range for the local network

Salvați și reporniți PostgreSQL:

>       sudo systemctl restart postgresql

5.6.1     Adresele de ascultare

În directorul versiunii, editați postgresql.conf:

>       cd <version>/main

>       sudo nano postgresql.conf

În secțiunea CONNECTIONS AND AUTHENTICATION, configurați listen_addresses:

#––––––––––––––––––––––––––

# CONNECTIONS AND AUTHENTICATION

#––––––––––––––––––––––––––

 

# – Connection Settings –

 

listen_addresses = ‘*’                  # what IP address(es) to listen on;

# comma-separated list of addresses;

# defaults to ‘localhost’; use ‘*’ for all

# (change requires restart)

Salvați și reporniți PostgreSQL:

>       sudo systemctl restart postgresql

Verificați portul pe care ascultă PostgreSQL:

>       ss -nlt | grep 5432

Exemplu de rezultat:

LISTEN 0      244          0.0.0.0:5432      0.0.0.0:*  this is the config we are looking for

LISTEN 0      244             [::]:5432         [::]:*

Verificați conexiunea din calculatorul autorizat.

5.6.2     Numărul conexiunilor

În sesiunea bazei de date, comanda este:

#       SHOW config_file;

Deschideți fișierul de configurare:

> sudo nano /etc/postgresql/12/main/postgresql.conf

În configurația originală, max_connections era ajustat la cel puțin 300:

…

max_connections=100 -> modificat la cel puțin 300 în exemplul original

…

Mai multe detalii despre limita conexiunilor:

https://stackoverflow.com/questions/2757549/org-postgresql-util-psqlexception-fatal-sorry-too-many-clients-already

În configurația descrisă, șase servicii utilizau 90 de conexiuni. Sesiunile de depanare pot crește rapid numărul.

Salvați și reporniți baza de date:

> sudo systemctl restart postgresql

6       Instalarea ERP

Fișierele sunt compilate pe calculatorul de dezvoltare și copiate pe calculatorul Linux.

Copiați conținutul ErpRelease, opțional arhivat ZIP pentru transfer. Faceți executabil fișierul install-silent-linux-x64.sh și lansați-l.

Alegeți mediul și urmați pașii instalatorului.

6.1.1     Depanarea serverului ERP

Dacă aplicațiile nu pornesc, lansați serviciul din directorul ErpApiService pentru a vedea mesajele:

> sudo dotnet ErpApiService.dll

7       Pornirea automată

7.1     Pornirea ERP

Adăugați în Startup Applications scriptul *.sh care pornește serviciile ERP.

Fișierul trebuie să fie executabil. Permisiunea poate fi configurată din managerul de fișiere sau cu următoarea comandă; instalatorul poate fi realizat deja acest pas:

>    chmod +x /home/pos/ErpRelease/linux-x64/startup-no-restart-no-build-standalone.sh

În exemplu, parametrul Command este:

/home/pos/ErpRelease/linux-x64/startup-no-restart-no-build-standalone.sh

7.2     Pornirea browserului

Pentru stații Linux, adăugați în Startup Applications câte o intrare pentru fiecare aplicație web care trebuie deschisă automat.

Exemple pentru parametrul Command:

Deschideți Brave în mod KIOSK, după 5 secunde, la ecranul principal ERP:

bash -c „sleep 5 && brave-browser -kiosk –url http://192.168.1.10:4200”

Deschideți Brave în mod KIOSK, după 15 secunde, la ecranul de pontaj:

bash -c „sleep 15 && brave-browser -kiosk –url http://192.168.1.10:4200/applications/human-resources/confirmation-screen”

Deschideți Firefox în mod KIOSK, după 15 secunde, la ecranul de pontaj:

bash -c „sleep 15 && firefox –kiosk –url http://192.168.1.10:4200/applications/human-resources/confirmation-screen”

8       Date inițiale

8.1     Aplicarea migrărilor

Aplicați migrările pentru aplicația principală și plug-in-urile care le conțin.

În Package Manager Console, selectați fiecare proiect cu migrări. Verificați mediul și șirul de conexiune din appsettings.Development.json, apoi utilizați update-database pentru baza corectă.

8.2     Inițializarea organizației și utilizatorilor

După migrări, rulați ErpDataSeederApplication. Alegeți crearea unui Tenant și completați numele. Procesul creează organizația, administratorul și utilizatorii și rolurile implicite.

După inițializare, conectați-vă cu organizația și contul de administrator configurat. Utilizați credențialele stabilite pentru acel mediu și schimbați orice parolă demonstrativă înainte de utilizarea reală.

La prima conectare, selectați autentificarea prin nume de utilizator și parolă.