Cum se instalează PHP 5.6 și 7.0 – 8.4 cu PHP-FPM și modul FastCGI pentru ISPConfig 3.2 cu apt pe Ubuntu 22.04 – 24.04

În acest ghid, veți adăuga repozitoriul SURY suplimentar pentru a instala pachetele PHP cu apt. Deoarece și alte pachete, precum OpenSSL, sunt actualizate, pachetele instalate de pe sury.org nu pot fi eliminate pur și simplu după instalare. Așadar, nu eliminați SURY ca sursă de repozitoriu ulterior. Rețineți că PHP-FPM poate fi utilizat pe serverele Apache și Nginx, în timp ce FastCGI este disponibil doar pentru serverele Apache.

Add the repository:

add-apt-repository -y ppa:ondrej/php

Now update the package list:

apt-get update

To upgrade already installed packages from the new repository use this command:

apt-get upgrade

3. Instalați versiuni suplimentare de PHP

Nu trebuie să instalați toate versiunile listate aici, instalați-le pe cele de care aveți nevoie.

3.1 Install PHP 5.6

Pentru a instala PHP 5.6, utilizați această comandă:

apt-get install php5.6 php5.6-cli php5.6-cgi php5.6-fpm php5.6-gd php5.6-mysql php5.6-imap php5.6-curl php5.6-intl php5.6-pspell php5.6-recode php5.6-sqlite3 php5.6-tidy php5.6-xmlrpc php5.6-xsl php5.6-zip php5.6-mbstring php5.6-soap php5.6-opcache libicu65 php5.6-common php5.6-json php5.6-readline php5.6-xml

3.2 Install PHP 7.0

Pentru a instala PHP 7.0, utilizați această comandă:

apt-get install php7.0 php7.0-cli php7.0-cgi php7.0-fpm php7.0-gd php7.0-mysql php7.0-imap php7.0-curl php7.0-intl php7.0-pspell php7.0-recode php7.0-sqlite3 php7.0-tidy php7.0-xmlrpc php7.0-xsl php7.0-zip php7.0-mbstring php7.0-soap php7.0-opcache php7.0-common php7.0-json php7.0-readline php7.0-xml

3.3 Install PHP 7.1

Pentru a instala PHP 7.1, utilizați această comandă:

apt-get install php7.1 php7.1-cli php7.1-cgi php7.1-fpm php7.1-gd php7.1-mysql php7.1-imap php7.1-curl php7.1-intl php7.1-pspell php7.1-recode php7.1-sqlite3 php7.1-tidy php7.1-xmlrpc php7.1-xsl php7.1-zip php7.1-mbstring php7.1-soap php7.1-opcache php7.1-common php7.1-json php7.1-readline php7.1-xml

3.4 Install PHP 7.2

Pentru a instala PHP 7.2, utilizați această comandă:

apt-get install php7.2 php7.2-cli php7.2-cgi php7.2-fpm php7.2-gd php7.2-mysql php7.2-imap php7.2-curl php7.2-intl php7.2-pspell php7.2-recode php7.2-sqlite3 php7.2-tidy php7.2-xmlrpc php7.2-xsl php7.2-zip php7.2-mbstring php7.2-soap php7.2-opcache php7.2-common php7.2-json php7.2-readline php7.2-xml

3.5 Install PHP 7.3

Pentru a instala PHP 7.3, utilizați această comandă:

apt-get install php7.3 php7.3-cli php7.3-cgi php7.3-fpm php7.3-gd php7.3-mysql php7.3-imap php7.3-curl php7.3-intl php7.3-pspell php7.3-recode php7.3-sqlite3 php7.3-tidy php7.3-xmlrpc php7.3-xsl php7.3-zip php7.3-mbstring php7.3-soap php7.3-opcache php7.3-common php7.3-json php7.3-readline php7.3-xml

3.6 Install PHP 7.4

Pentru a instala PHP 87.4, utilizați această comandă:

apt-get install php7.4 php7.4-cli php7.4-cgi php7.4-fpm php7.4-gd php7.4-mysql php7.4-imap php7.4-curl php7.4-intl php7.4-pspell php7.4-sqlite3 php7.4-tidy php7.4-xmlrpc php7.4-xsl php7.4-zip php7.4-mbstring php7.4-soap php7.4-opcache libonig5 php7.4-common php7.4-json php7.4-readline php7.4-xml

3.7 Install PHP 8.0

Pentru a instala PHP 8.0, utilizați această comandă:

apt-get install php8.0 php8.0-cli php8.0-cgi php8.0-fpm php8.0-gd php8.0-mysql php8.0-imap php8.0-curl php8.0-intl php8.0-pspell php8.0-sqlite3 php8.0-tidy php8.0-xsl php8.0-zip php8.0-mbstring php8.0-soap php8.0-opcache libonig5 php8.0-common php8.0-readline php8.0-xml

3.8 Install PHP 8.1

Pentru a instala PHP 8.1, utilizați această comandă:

apt-get install php8.1 php8.1-cli php8.1-cgi php8.1-fpm php8.1-gd php8.1-mysql php8.1-imap php8.1-curl php8.1-intl php8.1-pspell php8.1-sqlite3 php8.1-tidy php8.1-xsl php8.1-zip php8.1-mbstring php8.1-soap php8.1-opcache libonig5 php8.1-common php8.1-readline php8.1-xml

3.9 Install PHP 8.2

Pentru a instala PHP 8.2, utilizați această comandă:

apt-get install php8.2 php8.2-cli php8.2-cgi php8.2-fpm php8.2-gd php8.2-mysql php8.2-imap php8.2-curl php8.2-intl php8.2-pspell php8.2-sqlite3 php8.2-tidy php8.2-xsl php8.2-zip php8.2-mbstring php8.2-soap php8.2-opcache libonig5 php8.2-common php8.2-readline php8.2-xml

3.10 Install PHP 8.3

Pentru a instala PHP 8.3, utilizați această comandă:

apt-get install php8.3 php8.3-cli php8.3-cgi php8.3-fpm php8.3-gd php8.3-mysql php8.3-imap php8.3-curl php8.3-intl php8.3-pspell php8.3-sqlite3 php8.3-tidy php8.3-xsl php8.3-zip php8.3-mbstring php8.3-soap php8.3-opcache php8.3-common php8.3-readline php8.3-xml

3.11 Install PHP 8.4

Pentru a instala PHP 8.4, utilizați această comandă:

apt-get install php8.4 php8.4-cli php8.4-cgi php8.4-fpm php8.4-gd php8.4-mysql php8.4-imap php8.4-curl php8.4-intl php8.4-pspell php8.4-sqlite3 php8.4-tidy php8.4-xsl php8.4-zip php8.4-mbstring php8.4-soap php8.4-opcache php8.4-common php8.4-readline php8.4-xml

4.    Resetați PHP-ul implicit al sistemului de operare la versiunea corectă

PHP-ul implicit al sistemului de operare trebuie să rămână la versiunea originală. Pentru a remedia acest lucru, executați aceste comenzi una câte una:

update-alternatives --config php
update-alternatives --config php-cgi
update-alternatives --config php-fpm.sock

Pe Ubuntu 20.04, alegeți 7.4; pe Ubuntu 22.04, alegeți 8.1 și pe Ubuntu 24.04, alegeți 8.3.

 5. Adăugați versiuni PHP în ISPConfig

În ISPConfig 3, puteți configura noile versiuni PHP în Sistem > Versiuni PHP suplimentare > Adăugați o nouă versiune PHP.

Adăugați versiunea PHP implicită a distribuției

Mai întâi, trebuie să adăugați o nouă versiune pentru versiunea PHP deja instalată. Versiunea implicită depinde de versiunea pe care o utilizați:

Ubuntu 20.04: PHP 7.4
Ubuntu 22.04: PHP 8.1
Ubuntu 24.04: PHP 8.3

Consultați mai jos configurația pentru versiunea dvs.

Configurarea pentru versiunile suplimentare de PHP

PHP 5.6

Fast-CGI settings:

Path to the PHP FastCGI binary: /usr/bin/php-cgi5.6
Path to the php.ini directory: /etc/php/5.6/cgi/

PHP-FPM settings:

Path to the PHP-FPM init script: php5.6-fpm
Path to the php.ini directory: /etc/php/5.6/fpm/
Path to the PHP-FPM pool directory: /etc/php/5.6/fpm/pool.d/

Versiunea CLI, de exemplu, pentru cron jobs, are numele php5.6

PHP 7.0

Fast-CGI settings:

Path to the PHP FastCGI binary: /usr/bin/php-cgi7.0
Path to the php.ini directory: /etc/php/7.0/cgi/

PHP-FPM settings:

Path to the PHP-FPM init script: php7.0-fpm
Path to the php.ini directory: /etc/php/7.0/fpm/
Path to the PHP-FPM pool directory: /etc/php/7.0/fpm/pool.d/

Versiunea CLI, de exemplu, pentru cron jobs, are numele php7.0

PHP 7.1

Fast-CGI settings:

Path to the PHP FastCGI binary: /usr/bin/php-cgi7.1
Path to the php.ini directory: /etc/php/7.1/cgi/

PHP-FPM settings:

Path to the PHP-FPM init script: php7.1-fpm
Path to the php.ini directory: /etc/php/7.1/fpm/
Path to the PHP-FPM pool directory: /etc/php/7.1/fpm/pool.d/

Versiunea CLI, de exemplu, pentru cron jobs, are numele php7.1

PHP 7.2

Fast-CGI settings:

Path to the PHP FastCGI binary: /usr/bin/php-cgi7.2
Path to the php.ini directory: /etc/php/7.2/cgi/

PHP-FPM settings:

Path to the PHP-FPM init script: php7.2-fpm
Path to the php.ini directory: /etc/php/7.2/fpm/
Path to the PHP-FPM pool directory: /etc/php/7.2/fpm/pool.d/

Versiunea CLI, de exemplu, pentru cron jobs, are numele php7.2

PHP 7.3

Fast-CGI settings:

Path to the PHP FastCGI binary: /usr/bin/php-cgi7.3
Path to the php.ini directory: /etc/php/7.3/cgi/

PHP-FPM settings:

Path to the PHP-FPM init script: php7.3-fpm
Path to the php.ini directory: /etc/php/7.3/fpm/
Path to the PHP-FPM pool directory: /etc/php/7.3/fpm/pool.d/

Versiunea CLI, de exemplu, pentru cron jobs, are numele php7.3

PHP 7.4

Fast-CGI settings:

Path to the PHP FastCGI binary: /usr/bin/php-cgi7.4
Path to the php.ini directory: /etc/php/7.4/cgi/

PHP-FPM settings:

Path to the PHP-FPM init script: php7.4-fpm
Path to the php.ini directory: /etc/php/7.4/fpm/
Path to the PHP-FPM pool directory: /etc/php/7.4/fpm/pool.d/

Versiunea CLI, de exemplu, pentru cron jobs, are numele php7.4

PHP 8.0

Fast-CGI settings:

Path to the PHP FastCGI binary: /usr/bin/php-cgi8.0
Path to the php.ini directory: /etc/php/8.0/cgi/

PHP-FPM settings:

Path to the PHP-FPM init script: php8.0-fpm
Path to the php.ini directory: /etc/php/8.0/fpm/
Path to the PHP-FPM pool directory: /etc/php/8.0/fpm/pool.d/

Versiunea CLI, de exemplu, pentru cron jobs, are numele php8.0

PHP 8.1

Fast-CGI settings:

Path to the PHP FastCGI binary: /usr/bin/php-cgi8.1
Path to the php.ini directory: /etc/php/8.1/cgi/

PHP-FPM settings:

Path to the PHP-FPM init script: php8.1-fpm
Path to the php.ini directory: /etc/php/8.1/fpm/
Path to the PHP-FPM pool directory: /etc/php/8.1/fpm/pool.d/

Versiunea CLI, de exemplu, pentru cron jobs, are numele php8.1

PHP 8.2

Fast-CGI settings:

Path to the PHP FastCGI binary: /usr/bin/php-cgi8.2
Path to the php.ini directory: /etc/php/8.2/cgi/

PHP-FPM settings:

Path to the PHP-FPM init script: php8.2-fpm
Path to the php.ini directory: /etc/php/8.2/fpm/
Path to the PHP-FPM pool directory: /etc/php/8.2/fpm/pool.d

Versiunea CLI, de exemplu, pentru cron jobs, are numele php8.2

PHP 8.3

Fast-CGI settings:

Path to the PHP FastCGI binary: /usr/bin/php-cgi8.3
Path to the php.ini directory: /etc/php/8.3/cgi/

PHP-FPM settings:

Path to the PHP-FPM init script: php8.3-fpm
Path to the php.ini directory: /etc/php/8.3/fpm/
Path to the PHP-FPM pool directory: /etc/php/8.3/fpm/pool.d

Versiunea CLI, de exemplu, pentru cron jobs, are numele php8.3

PHP 8.4

Fast-CGI settings:

Path to the PHP FastCGI binary: /usr/bin/php-cgi8.4
Path to the php.ini directory: /etc/php/8.4/cgi/

PHP-FPM settings:

Path to the PHP-FPM init script: php8.4-fpm
Path to the php.ini directory: /etc/php/8.4/fpm/
Path to the PHP-FPM pool directory: /etc/php/8.4/fpm/pool.d

Versiunea CLI, de exemplu, pentru cron jobs, are numele php8.4.

[mai mult...]

Cum se instalează CSF (Config Server Firewall) pe Debian 12

CSF sau Config Server Firewall este un firewall Stateful Packet Inspection (SPI) bazat pe IPtables și Perl. Acesta oferă un proces daemon care monitorizează serviciile dvs. pentru erori și autentificare și oferă, de asemenea, integrare cu interfața web pentru gestionarea serverelor bazate pe web, cum ar fi Webmin, cPanel și DirectAdmin.

În acest tutorial, vă vom ghida prin procesul de instalare a CSF (Config Server Firewall) pe serverul Debian 12. Veți învăța, de asemenea, configurația de bază a CSF, blocarea adreselor IP folosind două metode diferite și configurarea interfeței web CSF pentru o gestionare și monitorizare ușoară.

ACTUALIZARE: Firewall-ul CSF a fost închis în august 2025. Puteți utiliza în schimb fork-ul său, Sentinel Firewall:

Cerințe preliminare

Pentru a începe cu acest tutorial, asigură-te că ai următoarele:

  • Un server Debian 12.
  • Un utilizator non-root cu privilegii de administrator.

Pregătirea sistemului

Înainte de a instala CSF, trebuie să vă asigurați că dependențele sunt instalate. Acestea includ pachete precum Perl și iptables. De asemenea, atunci când rulează un alt firewall, cum ar fi UFW (Uncomplicated Firewall), trebuie să îl dezactivați.

Pentru a începe, executați următoarea comandă pentru a actualiza depozitul Debian.

sudo apt update


După ce repozitoriul este actualizat, instalați următoarele dependențe pentru CSF folosind comanda de mai jos.

sudo apt install libio-socket-inet6-perl libsocket6-perl sendmail dnsutils unzip libio-socket-ssl-perl libcrypt-ssleay-perl git perl iptables libnet-libidn-perl libwww-perl liblwp-protocol-https-perl libgd-graph-perl

Tastați Y și apăsați ENTER pentru a continua.


În cele din urmă, trebuie să dezactivați UFW dacă îl aveți pe serverul Debian. CSF folosește implicit iptables ca firewall și filtru de pachete.

sudo ufw disable

Descărcarea și instalarea CSF-ului

În secțiunea următoare, veți descărca și instala manual CSF (Config Server Firewall) din sursă. Așadar, haideți să începem.

Descărcați codul sursă CSF folosind comanda wget de mai jos. Veți vedea fișierul csf.tgz.

wget http://download.configserver.com/csf.tgz

Acum extrageți fișierul csf.tgz folosind comanda tar de mai jos. Codul sursă CSF va fi disponibil în directorul csf.

sudo tar -xvzf csf.tgz

Apoi, mutați-vă în directorul csf și executați scriptul install.sh pentru a porni instalarea.

cd csf; sh install.sh

Când pornește instalarea, ar trebui să obțineți următoarele:

Când procesul este finalizat, ar trebui să primiți mesajul „Instalare finalizată” .

Acum că CSF este instalat, verificați-l folosind comanda de mai jos.

perl /usr/local/csf/bin/csftest.pl

Asigurați-vă că rezultatul fiecărui test de caracteristici este OK 

În cele din urmă, executați următoarea comandă pentru a verifica locația și versiunea fișierului binar CSF.

which csf
csf -v

În următoarea ieșire, puteți vedea că CSF v14.20 este instalat în /usr/sbin/csf .

Configurarea CSF-ului

După ce ați instalat CSF, veți învăța câteva configurații de bază ale CSF (Config Server Firewall). Directorul principal de configurare pentru CSF este directorul /etc/csf , unde veți găsi fișierul principal de configurare CSF, csf.conf .

Folosește următoarea comandă din editorul nano pentru a deschide fișierul de configurare CSF /etc/csf/csf.conf .

sudo nano /etc/csf/csf.conf

Permiteți traficul prin CSF

Găsiți opțiunile TCP_* și UDP_* și adăugați porturile.

# Se permit porturile TCP de intrare 
TCP_IN = "20,21,22,25,53,853,80,110,143,443,465,587,993,995" 

# Se permit porturile TCP de ieșire 
TCP_OUT = "20,21,22,25,53,853,80,110,113,443,587,993,995" 

# Se permit porturile UDP de intrare 
UDP_IN = "20,21,53,853,80,443" 

# Se permit porturile UDP de ieșire 
# Pentru a permite traceroute-ul de ieșire, adăugați 33434:33523 la această listă 
UDP_OUT = "20,21,53,853,113,123"


Opțiuni detaliate:

  • TCP_IN : permite traficul de intrare către porturile TCP.
  • TCP_OUT : permite traficul de ieșire către anumite porturi TCP.
  • UDP_IN : permite traficul de intrare către porturile UDP.
  • UDP_OUT : permite traficul de ieșire către anumite porturi UDP.

Permite/Refuză cererile Ping sau ICMP

Dacă trebuie neapărat să dezactivați Ping sau ICMP „IN și OUT”, utilizați următoarele opțiuni. „ICMP_IN = 1” înseamnă că ping-ul va fi permis, iar „ICMP_OUT = 1” înseamnă că serverul poate face ping către o altă rețea.

# Se permite PING-ul primit. Dezactivarea PING-ului va întrerupe probabil timpul de funcționare extern 
# monitorizare 
ICMP_IN = "1" 
... 
# Se permite PING-ul trimis 
# 
# Dacă nu există un motiv anume, această opțiune NU ar trebui dezactivată, deoarece 
# ar putea întrerupe funcționalitatea sistemului de operare 
ICMP_OUT = "1"


Protecție Synflood

ACTIVAȚI această opțiune DOAR atunci când este necesar, de exemplu împotriva atacurilor DOS asupra serverului dumneavoastră.

############################################################################### 
# SECȚIUNE: Setări Port Flood 
################################################################################ 
# Activează protecția împotriva SYN Flood. Această opțiune configurează iptables pentru a oferi o anumită 
# protecție împotriva încercărilor DOS de trimitere a pachetelor tcp SYN. 
​​... 
SYNFLOOD = "0" 
SYNFLOOD_RATE = "100/s" 
SYNFLOOD_BURST = "150"


Limitarea conexiunilor simultane

Apoi, utilizați opțiunea „CONNLIMIT” pentru a limita conexiunile simultane pentru anumite porturi. Formatul este „ PORT;LIMIT ”, de exemplu, configurația „ 22;5 ” va limita portul SSH la doar 5 conexiuni simultane .

# Protecție la limita conexiunii. Această opțiune configurează iptables pentru a oferi 
o protecție sporită # împotriva atacurilor DOS împotriva anumitor porturi. Poate fi folosită și ca o 
# modalitate de a limita pur și simplu utilizarea resurselor în funcție de adresa IP pentru anumite servicii de server. 
# Notă: Rulați /etc/csf/csftest.pl pentru a verifica dacă această opțiune va funcționa pe 
# acest server 
CONNLIMIT = "22;5,21;10"

Dezactivați modul TESTARE și restricționați accesul la Syslog

Acum, dacă ați configurat totul și ați adăugat porturile, schimbați „ TESTING ” la „ 1 ” și restricționați accesul la socket-urile rsyslog cu „ RESTRICT_SYSLOG= “3” ”.

# lfd nu va porni cât timp această opțiune este activată 
TESTING = "0" 

... 
# 0 = Permite utilizarea și configurarea opțiunilor enumerate mai sus 
# 1 = Dezactivează toate opțiunile enumerate mai sus și împiedică utilizarea lor 
# 2 = Dezactivează doar alertele despre această funcție și nu face nimic altceva 
# 3 = Restricționează accesul syslog/rsyslog la RESTRICT_SYSLOG_GROUP ** RECOMANDAT ** 
RESTRICT_SYSLOG = "3"

Când totul este gata, salvați fișierul și ieșiți din editor.

Testarea și pornirea serviciului CSF

Acum executați comanda csf de mai jos pentru a verifica configurația. Dacă aveți configurația CSF corectă, veți vedea ieșirea CSF. În schimb, veți vedea eroarea detaliată atunci când configurația este incorectă.

csf -v

Apoi, executați comanda systemctl de mai jos pentru a porni serviciile csf și lfd.

sudo systemctl pornește csf lfd


Odată ce serviciul csf rulează, veți fi deconectat automat de la server. Vă puteți conecta din nou la server, apoi puteți verifica atât serviciul csf, cât și serviciul lfd folosind comanda de mai jos.

sudo systemctl status csf lfd

Puteți vedea că serviciul csf rulează.

De asemenea, puteți vedea că serviciul lfd rulează.

Blocare prin CSF

În acest moment, ați învățat configurația de bază pentru CSF (Config Server Firewall). Acum haideți să aruncăm o privire la blocarea adreselor IP prin CSF.

Blocarea adreselor IP prin intermediul listelor de blocare IP

Deschideți configurația implicită a listelor de blocuri IP /etc/csf/csf.blocklists folosind comanda editorului nano de mai jos.

sudo nano /etc/csf/csf.blocklists

Decomentați următoarele linii pentru a bloca adresele IP din baza de date Spamhaus .

# Lista Spamhaus Don't Route Or Peer List (DROP) 
# Detalii: http://www.spamhaus.org/drop/ 
SPAMDROP|86400|0|http://www.spamhaus.org/drop/drop.txt 

# Lista Spamhaus IPv6 Don't Route Or Peer List (DROPv6) 
# Detalii: http://www.spamhaus.org/drop/ 
SPAMDROPV6|86400|0|https://www.spamhaus.org/drop/dropv6.txt 

# Lista Spamhaus extinsă DROP (EDROP) 
# Detalii: http://www.spamhaus.org/drop/ 
SPAMEDROP|86400|0|http://www.spamhaus.org/drop/edrop.txt

Salvați fișierul și ieșiți din editor când ați terminat.

Mai jos sunt câteva opțiuni pentru detalii:

  • SPAMDROP : numele blocului care va fi folosit ca nume pentru canalul iptables. Folosiți doar LITERE MARI, cu maximum 25 de caractere.
  • 86400 : interval de reîmprospătare pentru descărcarea și reînnoirea adreselor IP ale listelor de blocare.
  • MAX : numărul maxim de adrese IP care vor fi utilizate din listă. O valoare de 0 înseamnă că toate adresele IP vor fi incluse.
  • URL : URL-ul de descărcare al adreselor IP din listele de blocare.

Blocarea adreselor IP prin GeoIP

O altă metodă de a bloca o adresă IP este prin GeoIP, care vă permite să blocați traficul primit dintr-o anumită țară.

Folosește următoarea comandă din editorul nano pentru a deschide configurația CSF „ /etc/csf/csf.conf ”.

sudo nano /etc/csf/csf.conf

Găsiți parametrii CC_DENY și CC_ALLOW pentru a configura blocarea pe țări prin GeoIP.

# Fiecare opțiune este o listă de CC-uri separate prin virgulă, de exemplu „US,GB,DE” 
CC_DENY = "RU,CN" 
CC_ALLOW = "US,GB,DE,NL,SG"

În mod implicit, CSF utilizează baza de date GeoIP din db-ip, ipdeny și iptoasn . Dar o puteți modifica și prin intermediul bazei de date GeoIP MaxMind . Pentru a utiliza baza de date MaxMind , schimbați „ CC_SRC ” la „ 1 ”, apoi introduceți cheia de licență MaxMind în opțiunea „ MM_LICENSE_KEY ”.

# Cheie de licență MaxMind: 
MM_LICENSE_KEY = "" 

... 

# Setați următoarele la sursa preferată: 
# 
# "1" - MaxMind 
# "2" - db-ip, ipdeny, iptoasn 
# 
# Implicit este "2" pentru instalările noi de csf sau setați la "1" pentru a utiliza 
# bazele de date MaxMind după obținerea unei chei de licență 
CC_SRC = "1"

Salvați fișierul și ieșiți din editor când ați terminat.

Acum, executați următoarea comandă pentru a verifica configurația CSF. Dacă nu există nicio eroare, ar trebui să obțineți versiunea CSF.

sudo csf -v

Apoi, reporniți ambele servicii, csf și lfd, folosind următoarea comandă.

sudo csf -ra

Ar trebui să vedeți o ieșire ca următoarea:

Pentru a vă asigura că atât csf, cât și lfs rulează, utilizați următoarea comandă pentru a verifica ambele servicii.

sudo systemctl status csf lfd

Activează interfața web CSF

În secțiunea următoare, veți învăța cum să activați interfața web CSF pentru monitorizare prin intermediul unui browser web.

Deschideți configurația CSF folosind următorul editor nano.

sudo nano /etc/csf/csf.conf

Schimbați opțiunea „ UI ” la „ 1 ” și activați interfața web CSF. Apoi, ajustați UI_PORT, UI_IP, UI_USER și UI_PASS cu datele dvs.

# 
# 1 pentru activare, 0 pentru dezactivare 
UI = "1" 

... 

# NU activați accesul la acest port în TCP_IN, ci permiteți accesul doar 
la IP-uri de încredere # utilizând Filtre avansate de permisiune (consultați readme.txt) 
UI_PORT = "1048" 

... 

# Dacă serverul este configurat pentru IPv6, dar adresa IP la care se face legătura este IPv4, atunci 
# adresa IP TREBUIE să utilizeze reprezentarea IPv6. De exemplu, 1.2.3.4 trebuie să utilizeze 
# ::ffff:1.2.3.4 
# 
# Lăsați necompletat pentru a vă conecta la toate adresele IP de pe server 
UI_IP = "127.0.0.1" 

... 

# Acesta ar trebui să fie un nume de utilizator securizat, greu de ghicit 
# 
# Acesta trebuie modificat față de valoarea implicită 
UI_USER = "alice" 
... 
# numere și caractere non-alfanumerice 
# 
# Acesta trebuie modificat față de valoarea implicită 
UI_PASS = "passw0rd"

Salvați fișierul și ieșiți din editor când ați terminat.

Acum găsiți adresa IP publică folosind comanda de mai jos.

curl https://ipinfo.io/

Adăugați adresa IP la configurațiile „ /etc/csf/csf.allow ” și „ /etc/csf/ui/ui.allow ”. Aceasta va include adresa IP publică pe lista albă și vă va permite accesul la interfața web CSF și la server.

# IP unic 
192.168.5.1 

# Subrețea 
192.168.5.0/24

După aceea, executați comanda de mai jos pentru a verifica configurația CSF și a reporni ambele servicii, csf și lfd.

sudo csf -v 
sudo csf -ra

Apoi, verificați lista adreselor IP de pe lista albă de pe CSF folosind comanda de mai jos. Găsiți lanțul iptables ALLOWIN și ALLOWOUT și ar trebui să vedeți adresele IP de pe lista albă.

sudo csf -l

Acum deschideți browserul web și accesați adresa IP a serverului, urmată de portul interfeței web CSF (de exemplu: https://192.168.5.15:1048). Dacă configurarea a avut succes, ar trebui să vedeți pagina de conectare CSF.

Introduceți numele de utilizator și parola de administrator, apoi faceți clic pe ENTER .

Ar trebui să vedeți tabloul de bord CSF astfel:

[mai mult...]

Configurare perfectă ISPConfig Multiserver pe Ubuntu 24.04 și Debian 12

Acest tutorial vă va ghida prin instalarea propriei configurații multiserver ISPConfig 3 cu servere dedicate pentru panel, web, DNS, mail și webmail. Serverul DNS va avea un server oglindă pentru redundanță. Puteți adăuga cu ușurință mai multe servere de un anumit tip ulterior.

Programul oficial de instalare automată al ISPConfig va fi utilizat pentru configurarea serverelor. Debian 12 va fi folosit ca sistem de operare. Ghidul a fost testat și cu Ubuntu 24.04.

Programul de instalare automată are diverse opțiuni din linia de comandă pentru reglarea fină a configurării.

Puteți vizualiza toate argumentele cu:

wget -O - https://get.ispconfig.org | sh -s -- --help

1. Notă preliminară

Acestea vor fi gazdele pe care le vom instala:

gazdă FQDN IP 
panel panel.example.com 10.0.64.12 
web01 web01.example.com 10.0.64.13 
mx1 mx1.example.com 10.0.64.14 
ns1 ns1.example.com 10.0.64.15 
ns2 ns2.example.com 10.0.64.16 
webmail webmail.example.com 10.0.64.17

Vom folosi exemple de nume de gazdă, adrese IP și intervale IP. Asigurați-vă că le modificați în mod corespunzător în comenzi/configurație.

Toate serverele se află în aceeași rețea privată, dar au propria adresă IP publică. Dacă serverele dvs. nu au o rețea locală partajată, utilizați adresele lor IPv4 publice.

Înainte de a începe instalarea unui server, configurați o înregistrare A și eventual o înregistrare AAAA care indică adresa IP publică a serverului dvs. De exemplu, dacă numele de gazdă este panel.example.com și adresa IP publică este 11.22.33.44, ar trebui să configurați o înregistrare A pentru panel.example.com care să indice 11.22.33.44. Fiecare server ar trebui să aibă propria adresă IP publică și propriul nume de gazdă.

2. Instalarea serverului principal

Conectați-vă ca root sau executați

su -

să devii utilizatorul root pe serverul tău înainte de a continua. IMPORTANT : Trebuie să folosești „su -” și nu doar „su”, altfel variabila PATH este setată greșit de Debian.

2.1 Configurați numele de gazdă și gazdele

Numele de gazdă al serverului dvs. ar trebui să fie un subdomeniu, cum ar fi „panel.example.com”. Nu utilizați un nume de domeniu fără o parte de subdomeniu, cum ar fi „example.com”, deoarece acest lucru va cauza probleme ulterioare cu configurarea mailului. Mai întâi, ar trebui să verificați numele de gazdă în  /etc/hosts  și să îl modificați atunci când este necesar. Linia ar trebui să fie: „IP Address – space – full hostname incl. domain – space – subdomain part”. Pentru numele nostru de gazdă panel.example.com, fișierul ar trebui să arate astfel (unele linii pot fi diferite, pot diferi în funcție de furnizorul de găzduire):

nano /etc/hosts
127.0.0.1 localhost.localdomain localhost 
# Această linie ar trebui modificată pe fiecare nod cu numele serverului corect: 
127.0.1.1 panel.example.com panel 
# Aceste linii sunt aceleași pe fiecare nod:
10.0.64.12 panel.exemplu.com panel 
10.0.64.13 web01.exemplu.com web01 
10.0.64.14 mx1.exemplu.com mx1 
10.0.64.15 ns1.exemplu.com ns1 
10.0.64.16 ns2.exemplu.com ns2 
10.0.64.17 webmail.exemplu.com webmail

# Următoarele linii sunt de dorit pentru gazdele compatibile cu IPv6
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

După cum puteți vedea, am adăugat și numele de gazdă ale celorlalte servere ale noastre, astfel încât acestea să poată comunica ulterior prin rețeaua internă.

Apoi editați fișierul /etc/hostname:

nano /etc/numegazdă

Va conține doar partea de subdomeniu, în cazul nostru:

panou

În final, reporniți serverul pentru a aplica modificarea:

repornire systemctl

Conectați-vă din nou și verificați dacă numele de gazdă este corect acum cu aceste comenzi:

nume de gazdă 
nume de gazdă -f

Rezultatul va fi astfel:

root@panel:~$ nume gazdă 
panel 
root@panel:~$ nume gazdă -f 
panel.example.com

Acum putem rula programul de instalare automată pentru a instala toate pachetele necesare și ISPConfig:

wget -O - https://get.ispconfig.org | sh -s -- --no-mail --no-dns --use-php=sistem

După un timp, veți vedea:

AVERTISMENT! Acest script va reconfigura întregul server! 
Ar trebui rulat pe un server proaspăt instalat și, cel mai probabil, toate configurațiile curente pe care le-ați făcut se vor pierde! 
Tastați „yes” dacă doriți cu adevărat să continuați:

Răspundeți cu „da” și apăsați Enter. Programul de instalare va porni acum.

Când programul de instalare este finalizat, vă va afișa parola de administrator ISPConfig și parola de root MySQL, astfel:

[INFO] Parola dvs. de administrator ISPConfig este: 5GvfSSSYsdfdYC 
[INFO] Parola dvs. de root MySQL este: kkAkft82d!kafMwqxdtYs

Asigură-te că notezi aceste informații, împreună cu serverul pentru care sunt, deoarece vei avea nevoie de ele mai târziu.

2.2 Configurarea utilizatorilor MySQL la distanță pentru serverele noastre slave

Ne vom conecta la MySQL pentru a permite celorlalte servere să se conecteze la baza de date ISPConfig de pe acest nod în timpul instalării, adăugând înregistrări de utilizator root MySQL în baza de date master pentru fiecare nume de gazdă și adresă IP a serverului slave.

Pe terminal, executați

mysql -u root -p

Introduceți parola MySQL și apoi executați următoarele comenzi:

CREATE USER 'root'@'10.0.64.13' IDENTIFIED BY 'myrootpassword';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'10.0.64.13' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
CREATE USER 'root'@'10.0.64.14' IDENTIFIED BY 'myrootpassword';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'10.0.64.14' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
CREATE USER 'root'@'10.0.64.15' IDENTIFIED BY 'myrootpassword';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'10.0.64.15' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
CREATE USER 'root'@'10.0.64.15' IDENTIFIED BY 'myrootpassword';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'10.0.64.15' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
CREATE USER 'root'@'10.0.64.16' IDENTIFIED BY 'myrootpassword';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'10.0.64.16' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
CREATE USER 'root'@'web01.example.com' IDENTIFIED BY 'myrootpassword';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'web01.example.com' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
CREATE USER 'root'@'mx1.example.com' IDENTIFIED BY 'myrootpassword';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'mx1.example.com' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
CREATE USER 'root'@'ns1.example.com' IDENTIFIED BY 'myrootpassword';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'ns1.example.com' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
CREATE USER 'root'@'ns2.example.com' IDENTIFIED BY 'myrootpassword';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'ns2.example.com' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
CREATE USER 'root'@'webmail.example.com' IDENTIFIED BY 'myrootpassword';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'webmail.example.com' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;

În comenzile SQL de mai sus, înlocuiți adresele IP ( 10.0.64.12 – 10.0.64.16 ) cu adresele IP ale serverelor dvs., web01.example.com , mx1.example.com , ns1.example.com , ns2.example.com și webmail.example.com cu numele de gazdă ale serverelor dvs. și myrootpassword cu parola de root dorită (este o practică bună să utilizați o parolă diferită pentru fiecare gazdă. Notați-le, deoarece veți avea nevoie de ele mai târziu, când instalați sau actualizați serverele slave).

După ce ați terminat, puteți ieși din MySQL cu:

EXIT;

Acum vă puteți conecta la ISPConfig pe https://panel.example.com:8080 cu numele de utilizator admin și parola pe care v-a indicat-o programul de instalare.

2.3 Configurarea firewall-ului

Ultimul lucru de făcut este să configurăm firewall-ul.

Conectați-vă la interfața ISPConfig și accesați Sistem -> Firewall. Apoi faceți clic pe „Adăugați o nouă înregistrare firewall”.

Pentru serverul de panouri, trebuie să deschidem următoarele porturi:

TCP:

22,80,443,8080,8081

Nu trebuie deschise porturi UDP prin interfața cu utilizatorul.

De asemenea, vom deschide portul 3306, care este folosit pentru MySQL, dar numai din rețeaua noastră locală din motive de securitate. Pentru a face acest lucru, executați următoarea comandă din CLI, după ce modificarea din panoul ISPConfig este propagată (când punctul roșu a dispărut):

ufw allow from 10.0.64.0/24 to any port 3306 proto tcp

Panoul dvs. este acum configurat și gata de utilizare.

În pasul următor, vom instala serverul web.

3 Instalarea serverului web

Conectați-vă ca root sau executați

su -

să devii utilizator root pe server înainte de a continua. IMPORTANT : Trebuie să folosești „su -” și nu doar „su”, altfel variabila PATH este setată greșit de Debian.

3.1 Configurați numele de gazdă

Numele de gazdă al serverului dvs. ar trebui să fie un subdomeniu, cum ar fi „web01.example.com”. Nu utilizați un nume de domeniu fără o parte de subdomeniu, cum ar fi „example.com”, deoarece acest lucru va cauza probleme ulterioare cu configurarea mailului. Mai întâi, ar trebui să verificați numele de gazdă în  /etc/hosts  și să îl modificați atunci când este necesar. Linia ar trebui să fie: „IP Address – space – full hostname incl. domain – space – subdomain part”. Pentru numele nostru de gazdă web01.example.com, fișierul ar trebui să arate astfel:

nano /etc/hosts
127.0.0.1 localhost.localdomain localhost 
# Această linie ar trebui modificată pe fiecare nod cu numele serverului corect: 
127.0.1.1 web01.example.com web01 
# Aceste linii sunt aceleași pe fiecare nod:
10.0.64.12 panel.exemplu.com panel 
10.0.64.13 web01.exemplu.com web01 
10.0.64.14 mx1.exemplu.com mx1 
10.0.64.15 ns1.exemplu.com ns1 
10.0.64.16 ns2.exemplu.com ns2 
10.0.64.17 webmail.exemplu.com webmail

# Următoarele linii sunt de dorit pentru gazdele compatibile cu IPv6
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

După cum puteți vedea, am adăugat și numele de gazdă ale celorlalte servere ale noastre, astfel încât acestea să poată comunica ulterior prin rețeaua internă.

Apoi editați fișierul /etc/hostname:

nano /etc/numegazdă

Va conține doar partea de subdomeniu, în cazul nostru:

web01

În final, reporniți serverul pentru a aplica modificarea:

repornire systemctl

Conectați-vă din nou și verificați dacă numele de gazdă este corect acum cu aceste comenzi:

nume de gazdă 
nume de gazdă -f

Rezultatul va fi astfel:

root@web01:~$ nume gazdă 
web01 
root@web01:~$ nume gazdă -f 
web01.exemplu.com

3.2 Instalarea ISPConfig

Acum putem rula programul de instalare automată pentru toate pachetele și ISPConfig:

wget -O - https://get.ispconfig.org | sh -s -- --no-mail --no-dns --interactive

După un timp, veți vedea:

AVERTISMENT! Acest script va reconfigura întregul server! 
Ar trebui rulat pe un server proaspăt instalat și, cel mai probabil, toate configurațiile curente pe care le-ați făcut se vor pierde! 
Tastați „yes” dacă doriți cu adevărat să continuați:

Răspundeți cu „da” și apăsați Enter. Programul de instalare va porni acum.

După finalizarea instalării și configurării pachetelor, va fi afișată parola de root pentru MySQL pe web01. Notați-o (împreună cu numele serverului, pentru a preveni orice confuzie ulterioară).

Acum va trebui să răspundem la câteva întrebări, deoarece folosim modul interactiv. Acest lucru este necesar, deoarece acest server va fi adăugat la configurația dvs. multiserver.

[INFO] Se instalează ISPConfig3. 
[INFO] Parola dumneavoastră de root MySQL este: kl3994aMsfkkeE 

-------------------------------------------------------------------------------- 
 _____ ___________ _____ __ _ _ ____ 
|_ _/ ___| ___ \ / __ \ / _(_) /__ \ 
  | | \ `--.| |_/ / | / \/ ___ _ __ | |_ _ __ _ _/ / | 
  | `--. \ __/ | | / _ \| '_ \| _| |/ _` | |_ | 
 _| |_/\__/ / | | \__/\ (_) | | | | | | | (_| | ___\ \ 
 \___/\____/\_| \____/\___/|_| |_|_|\__, | \____/ __ 
                                              / | 
                                             |___/ 
-------------------------------------------------------------------------------- 


>> Configurare inițială   

Sistem de operare: Debian 10.0 (Buster) sau compatibil 

    Următoarele vor fi câteva întrebări pentru configurația principală, așa că fiți atenți. 
    Valorile implicite sunt între [paranteze] și pot fi acceptate cu <ENTER>. 
    Apăsați „quit” (fără ghilimele) pentru a opri programul de instalare. 


Selectați limba (en,de) [en]: <-- Apăsați enter

 Mod de instalare (standard,expert) [standard]: <-- expert

 Numele complet calificat al gazdei (FQDN) al serverului, de ex. server1.domain.tld [web01.exemplu.com]: <-- Apăsați Enter

 Numele gazdei serverului MySQL [localhost]: <-- Apăsați Enter

 Portul serverului MySQL [3306]: <-- Apăsați Enter

 Nume utilizator root MySQL [root ]: < -- Apăsați Enter

 Parola root MySQL []: <-- Introduceți parola MySQL pe care tocmai v-a dat-o scriptul

 Baza de date MySQL de creat [dbispconfig]: <-- Apăsați Enter

 Set de caractere MySQL [utf8]: <-- Apăsați Enter

 Următoarele două întrebări se referă la utilizatorul și parola bazei de date interne ISPConfig. 
Se recomandă acceptarea valorilor implicite, care sunt „ispconfig” ca nume de utilizator și o parolă aleatorie. 
Dacă utilizați o parolă diferită, utilizați doar numere și caractere pentru parolă. 

Nume utilizator bază de date ISPConfig mysql [ispconfig]: <-- Apăsați Enter

 Parola bazei de date ISPConfig mysql [aakl203920459853sak20284204]: <-- Apăsați Enter

 Trebuie acest server să se alăture unei configurații multiserver ISPConfig existente (y,n) [n]: <-- y

 Nume gazdă server master MySQL []: <-- panel.example.com

 Port server master MySQL []: <-- Apăsați Enter

 Nume utilizator root server master MySQL [root]: <-- Apăsați Enter

 Parola root server master MySQL []: <-- parola pe care ați dat-o utilizatorului root extern pe serverul master.

 Baza de date server master MySQL nume [dbispconfig]: <-- Apăsați Enter

Adăugarea înregistrării serverului ISPConfig la baza de date. 

Configurare Mail (y,n) [y]: <-- n

 Configurare Jailkit 
Configurare Pureftpd 
Configurare Server DNS (y,n) [y]: <-- n

 Opțiunea Server Web trebuie activată atunci când doriți să rulați un server web sau când acest nod va găzdui interfața ISPConfig. 
Configurare server web (y,n) [y]: <-- Apăsați Enter

 Configurare Apache 
Configurarea detectării automate vlogger 
[WARN] pentru OpenVZ a eșuat 
Configurare forțată OpenVZ (y,n) [n]: <-- Apăsați Enter

 Omitere OpenVZ 

Configurare server firewall (y,n) [y]: <-- Apăsați Enter

 Configurare server firewall Ubuntu 
[WARN] pentru Metronome XMPP Server a eșuat 
Configurare forțată server Metronome XMPP Server (y,n) [n]: <-- Apăsați Enter

 Omitere server Metronome XMPP 

Configurare Fail2ban 
Instalare interfață web ISPConfig (y,n) [n]: <-- Apăsați Enter

 Doriți să creați certificate SSL pentru serverul dvs.? (y,n) [y]: <-- Apăsați Enter

 Verificare / creare certificat pentru web01.example.com 
Se utilizează calea certificatului /etc/letsencrypt/live/web01.example.com 
Se utilizează apache pentru validarea certificatelor 
Legătură simbolică Certificate SSL ISPConfig către Postfix? (y,n) [y]: <-- Apăsați Enter

 Legătură simbolică ISPConfig certificate SSL către Pure-FTPd? Crearea fișierului dhparam poate dura ceva timp. (y,n) [y]: <-- Apăsați Enter

 Se generează parametri DH, safe prime lung de 2048 biți, generator 2 
Acest lucru va dura mult timp 
......................+...........................................+............... 
Configurarea aplicațiilor vhost 
Configurarea DBServer 
Instalarea ISPConfig crontab 
Detectarea adreselor IP 
Repornirea serviciilor ... 
Instalare finalizată. 
[INFO] Adăugarea versiunilor php la ISPConfig. 
[INFO] Se verifică dacă toate serviciile rulează. 
[INFO] mysql: OK 
[INFO] clamav-daemon: OK 
[INFO] postfix: OK 
[INFO] bind9: OK 
[INFO] pureftpd: OK 
[INFO] apache2: OK 
[INFO] Instalarea este gata. 
[INFO] Parola dvs. de root MySQL este: kl3994aMsfkkeE 
[INFO] Atenție: Vă rugăm să ștergeți fișierele jurnal din /tmp/ispconfig-ai/var/log/setup-* odată ce nu mai aveți nevoie de ele, deoarece acestea conțin parolele dvs.!

Notă: dacă doriți să redirecționați example.com/webmail către webmail.example.com, urmați acest ghid .

Pentru a seta acest server ca implicit pentru site-urile web și bazele de date, conectați-vă la ISPConfig și accesați Sistem -> Configurație principală. Selectați web01.example.com ca server implicit.

3.3 Configurarea firewall-ului

Ultimul lucru de făcut este să configurăm firewall-ul.

Conectați-vă la interfața ISPConfig și accesați Sistem -> Firewall. Apoi faceți clic pe „Adăugați o nouă înregistrare firewall”.

Asigurați-vă că selectați serverul corect. Pentru serverul nostru web, trebuie să deschidem următoarele porturi:

TCP:

20, 21, 22, 80, 443

Nu trebuie deschise porturi UDP prin interfața cu utilizatorul.

Serverul dvs. web este acum gata de utilizare. În pasul următor, vom instala serverul de mail.

4 Instalarea serverului de mail

Conectați-vă ca root sau executați

su -

să devii utilizator root pe server înainte de a continua. IMPORTANT : Trebuie să folosești „su -” și nu doar „su”, altfel variabila PATH este setată greșit de Debian.

4.1 Configurați numele de gazdă

Numele de gazdă al serverului dvs. ar trebui să fie un subdomeniu, cum ar fi „mx1.example.com”. Nu utilizați un nume de domeniu fără o parte de subdomeniu, cum ar fi „example.com”, deoarece acest lucru va cauza probleme ulterioare cu configurarea mailului. Mai întâi, ar trebui să verificați numele de gazdă în  /etc/hosts  și să îl modificați atunci când este necesar. Linia ar trebui să fie: „IP Address – space – full hostname incl. domain – space – subdomain part”. Pentru numele nostru de gazdă mx1.example.com, fișierul va arăta astfel:

nano /etc/hosts
127.0.0.1 localhost.localdomain localhost 
# Această linie ar trebui modificată pe fiecare nod cu numele serverului corect: 
127.0.1.1 mx1.example.com mx1 
# Aceste linii sunt aceleași pe fiecare nod:
10.0.64.12 panel.exemplu.com panel 
10.0.64.13 web01.exemplu.com web01 
10.0.64.14 mx1.exemplu.com mx1 
10.0.64.15 ns1.exemplu.com ns1 
10.0.64.16 ns2.exemplu.com ns2 
10.0.64.17 webmail.exemplu.com webmail

# Următoarele linii sunt de dorit pentru gazdele compatibile cu IPv6
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

După cum puteți vedea, am adăugat și numele de gazdă ale celorlalte servere ale noastre, astfel încât acestea să poată comunica ulterior prin rețeaua internă.

Apoi editați fișierul /etc/hostname:

nano /etc/hostname

Va conține doar partea de subdomeniu, în cazul nostru:

mx1

În final, reporniți serverul pentru a aplica modificarea:

restart systemctl

Conectați-vă din nou și verificați dacă numele de gazdă este corect acum cu aceste comenzi:

hostname 
hostname -f

Rezultatul va fi astfel:

root@mx1:~$ hostname 
mx1 
root@mx1:~$ hostname -f 
mx1.exemplu.com

4.2 Instalarea ISPConfig

Acum putem rula programul de instalare automată pentru toate pachetele și ISPConfig:

wget -O - https://get.ispconfig.org | sh -s -- --no-dns --no-roundcube --no-mailman --use-php=system --use-unbound --interactive

După un timp, veți vedea:

AVERTISMENT! Acest script va reconfigura întregul server! 
Ar trebui rulat pe un server proaspăt instalat și, cel mai probabil, toate configurațiile curente pe care le-ați făcut se vor pierde! 
Tastați „yes” dacă doriți cu adevărat să continuați:

Răspundeți cu „da” și apăsați Enter. Programul de instalare va porni acum.

După finalizarea instalării și configurării pachetelor, va fi afișată parola de root pentru MySQL pe mx1. Notați-o (împreună cu numele serverului, pentru a preveni orice confuzie ulterioară).

Acum va trebui să răspundem la câteva întrebări, deoarece folosim modul interactiv. Acest lucru este necesar, deoarece acest server va fi adăugat la configurația dvs. multiserver.

[INFO] Se instalează ISPConfig3. 
[INFO] Parola dumneavoastră de root MySQL este: kl3994aMsfkkeE 


-------------------------------------------------------------------------------- 
 _____ ___________ _____ __ _ _ ____ 
|_ _/ ___| ___ \ / __ \ / _(_) /__ \ 
  | | \ `--.| |_/ / | / \/ ___ _ __ | |_ _ __ _ _/ / | 
  | `--. \ __/ | | / _ \| '_ \| _| |/ _` | |_ | 
 _| |_/\__/ / | | \__/\ (_) | | | | | | | (_| | ___\ \ 
 \___/\____/\_| \____/\___/|_| |_|_|\__, | \____/ __ 
                                              / | 
                                             |___/ 
-------------------------------------------------------------------------------- 


>> Configurare inițială   

Sistem de operare: Debian 10.0 (Buster) sau compatibil 

    Următoarele vor fi câteva întrebări pentru configurația principală, așa că fiți atenți. 
    Valorile implicite sunt între [paranteze] și pot fi acceptate cu <ENTER>. 
    Apăsați „quit” (fără ghilimele) pentru a opri programul de instalare. 


Selectați limba (en,de) [en]: <-- Apăsați enter

 Mod de instalare (standard,expert) [standard]: <-- expert

 Numele complet calificat al gazdei (FQDN) al serverului, de ex. server1.domain.tld [mx1.exemplu.com]: <-- Apăsați Enter

 Numele gazdei serverului MySQL [localhost]: <-- Apăsați Enter

 Portul serverului MySQL [3306 ]: <-- Apăsați Enter

 Nume utilizator root MySQL [root ]: < -- Apăsați Enter

 Parola root MySQL []: <-- Introduceți parola MySQL pe care tocmai v-a dat-o scriptul

 Baza de date MySQL de creat [dbispconfig]: <-- Apăsați Enter

 Set de caractere MySQL [utf8]: <-- Apăsați Enter

 Următoarele două întrebări se referă la utilizatorul și parola bazei de date interne ISPConfig. 
Se recomandă acceptarea valorilor implicite, care sunt „ispconfig” ca nume de utilizator și o parolă aleatorie. 
Dacă utilizați o parolă diferită, utilizați doar numere și caractere pentru parolă. 

Nume utilizator bază de date ISPConfig mysql [ispconfig]: <-- Apăsați Enter

 Parola bazei de date ISPConfig mysql [aakl203920459853sak20284204]: <-- Apăsați Enter

 Trebuie acest server să se alăture unei configurații multiserver ISPConfig existente (y,n) [n]: <-- y

 Nume gazdă server master MySQL []: <-- panel.example.com

 Port server master MySQL []: <-- Apăsați Enter

 Nume utilizator root server master MySQL [root]: <-- Apăsați Enter

 Parola root server master MySQL []: <-- parola pe care ați dat-o utilizatorului root extern pe serverul master.

 Baza de date server master MySQL nume [dbispconfig]: <-- Apăsați Enter

Adăugarea înregistrării serverului ISPConfig la baza de date. 

Configurarea Mail (y,n) [y]: <-- Apăsați enter

 Configurarea Postgrey 
Configurarea Postfix 
Generarea unei chei private RSA 
.............................................................................++++ 
....................++++ 
scrierea noii chei private în „smtpd.key” 
----- 
Urmează să vi se solicite să introduceți informații care vor fi încorporate 
în solicitarea dvs. de certificat. 
Ceea ce urmează să introduceți este ceea ce se numește Nume Distins sau DN. 
Există o serie de câmpuri, dar puteți lăsa unele necompletate. 
Pentru unele câmpuri va exista o valoare implicită. 
Dacă introduceți „.”, câmpul va fi lăsat necompletat. 
----- 
Numele țării (cod din 2 litere) [AU]: <-- Introduceți tasta
 Numele statului sau provinciei (numele complet) [Un anumit stat]: <-- Introduceți tasta
 Numele localității (de exemplu, oraș) []: <-- Introduceți
 tasta Numele organizației (de exemplu, companie) [Internet Widgits Pty Ltd]: <-- Introduceți tasta
 Numele unității organizaționale (de exemplu, secțiune) []: <-- Introduceți tasta
 Nume comun (de exemplu, FQDN-ul serverului sau numele DVS.) []: <-- Introduceți tasta
 Adresă de e-mail []: <-- Introduceți tasta 
[WARN] detectarea automată pentru Mailman a eșuat 
Configurarea forțată a Mailman (y,n) [n]: <-- Introduceți tasta

 Omitere Mailman 

Configurare Dovecot 
Se creează un nou fișier DHParams, durează câteva minute. Nu întrerupeți scriptul. 
Configurarea detectării automate Spamassassin 
[WARN] pentru Amavisd a eșuat 
Configurarea forțată a Amavisd (y,n) [n]: <-- Apăsați Enter

 Omitere Amavisd 

Configurare Rspamd 
Configurare Getmail 
Configurare Jailkit 
Configurare Pureftpd 
Configurare server DNS (y,n) [y]: <-- n

 Opțiunea Server web trebuie activată atunci când doriți să rulați un server web sau când acest nod va găzdui interfața ISPConfig. 
Configurare server web (y,n) [y]: <-- Apăsați Enter

 Configurare Apache 
Configurarea detectării automate vlogger 
[WARN] pentru OpenVZ a eșuat 
Configurare forțată OpenVZ (y,n) [n]: <-- Apăsați Enter

 Omitere OpenVZ 

Configurare server firewall (y,n) [y]: <-- Apăsați Enter

 Configurare server firewall Ubuntu 
[WARN] pentru Metronome XMPP Server a eșuat 
Configurare forțată server Metronome XMPP Server (y,n) [n]: <-- Apăsați Enter

 Omitere server Metronome XMPP 

Configurare Fail2ban 
Instalare interfață web ISPConfig (y,n) [n]: <-- Apăsați Enter

 Doriți să creați certificate SSL pentru serverul dvs.? (y,n) [y]: <-- Apăsați Enter

Verificare / creare certificat pentru mx1.example.com 
Se utilizează calea de certificat /etc/letsencrypt/live/mx1.example.com 
Se utilizează apache pentru validarea certificatelor 
Legătură simbolică Certificări SSL ISPConfig către Postfix? (y,n) [y]: <-- Apăsați Enter

 Legătură simbolică Certificări SSL ISPConfig către Pure-FTPd? Crearea fișierului dhparam poate dura ceva timp. (y,n) [y]: <-- Apăsați Enter

 Se generează parametri DH, safe prime lungime 2048 biți, generator 2 
Acest lucru va dura mult timp 
......................+...........................................+............... 
Configurarea aplicațiilor vhost 
Configurarea DBServer 
Instalarea ISPConfig crontab 
no crontab for getmail 
Detectarea adreselor IP 
Repornirea serviciilor ... 
Instalarea finalizată. 
[INFO] Adăugarea versiunilor php la ISPConfig. 
[INFO] Se verifică dacă toate serviciile rulează. 
[INFO] mysql: OK 
[INFO] clamav-daemon: OK 
[INFO] postfix: OK 
[INFO] bind9: OK 
[INFO] pureftpd: OK 
[INFO] apache2: OK 
[INFO] rspamd: OK 
[INFO] redis-server: OK 
[INFO] dovecot: OK 
[INFO] Instalarea este gata. 
[INFO] Parola dvs. de root MySQL este: kl3994aMsfkkeE 
[INFO] Atenție: Vă rugăm să ștergeți fișierele jurnal din /tmp/ispconfig-ai/var/log/setup-* odată ce nu mai aveți nevoie de ele, deoarece acestea conțin parolele dvs.

 

Acum vom adăuga un site web pentru acest server în ISPConfig. Mergeți la Sites -> Add new website și adăugați site-ul web „mx1.example.com”. Asigurați-vă că îl creați pe serverul corect (mx1.example.com). Dezactivați auto-subdomain și activați SSL + Let’s Encrypt. Apoi, mergeți la opțiuni și lipiți acest cod în secțiunea de directive Apache:

RewriteEngine On 
RewriteRule ^/rspamd$ /rspamd/ [R,L] 
RewriteRule ^/rspamd/(.*) http://127.0.0.1:11334/$1 [P]

În cele din urmă, trebuie să activăm câteva module Apache și să repornim serviciile noastre:

a2enmod proxy_balancer proxy_http 
systemctl restart rspamd 
systemctl restart apache2

4.3 Securizarea serverului de mail cu un certificat SSL valid

Pentru o configurare funcțională, trebuie să aveți un certificat SSL valid pentru numele de gazdă utilizate. Acest certificat nu poate fi autosemnat. Dacă intenționați să utilizați nume de gazdă suplimentare pentru acest server, cum ar fi imap.example.com și smtp.example.com, sau dacă programul de instalare nu a putut crea un certificat valid la instalare, urmați acest ghid pentru a configura un certificat valid pentru serverul dvs. de mail

4.4 Configurarea firewall-ului

Ultimul lucru de făcut este să configurăm firewall-ul.

Conectați-vă la interfața ISPConfig și accesați Sistem -> Firewall. Apoi faceți clic pe „Adăugați o nouă înregistrare firewall”.

Asigurați-vă că selectați serverul corect. Pentru serverul nostru de mail, trebuie să deschidem următoarele porturi:

TCP:

22, 25, 80, 110, 143, 443, 465, 587, 993, 995

Nu trebuie deschise porturi UDP prin interfața cu utilizatorul.

În pasul următor, vom instala serverul DNS principal.

6 Instalarea serverului de nume principal

Conectați-vă ca root sau executați

su -

să devii utilizator root pe server înainte de a continua. IMPORTANT : Trebuie să folosești „su -” și nu doar „su”, altfel variabila PATH este setată greșit de Debian.

6.1 Configurați numele de gazdă

Numele de gazdă al serverului dvs. ar trebui să fie un subdomeniu, cum ar fi „panel.example.com”. Nu utilizați un nume de domeniu fără o parte de subdomeniu, cum ar fi „example.com”, deoarece acest lucru va cauza probleme ulterioare cu configurarea mailului. Mai întâi, ar trebui să verificați numele de gazdă în  /etc/hosts  și să îl modificați atunci când este necesar. Linia ar trebui să fie: „IP Address – space – full hostname incl. domain – space – subdomain part”. Pentru numele nostru de gazdă ns1.example.com, fișierul va arăta astfel:

nano /etc/hosts
127.0.0.1 localhost.localdomain localhost 
# Această linie ar trebui modificată pe fiecare nod cu numele serverului corect: 
127.0.1.1 ns1.example.com ns1 
# Aceste linii sunt aceleași pe fiecare nod:
10.0.64.12 panel.exemplu.com panel 
10.0.64.13 web01.exemplu.com web01 
10.0.64.14 mx1.exemplu.com mx1 
10.0.64.15 ns1.exemplu.com ns1 
10.0.64.16 ns2.exemplu.com ns2 
10.0.64.17 webmail.exemplu.com webmail

# Următoarele linii sunt de dorit pentru gazdele compatibile cu IPv6
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

După cum puteți vedea, am adăugat și numele de gazdă ale celorlalte servere ale noastre, astfel încât acestea să poată comunica ulterior prin rețeaua internă.

Apoi editați fișierul /etc/hostname:

nano /etc/hostname

Va conține doar partea de subdomeniu, în cazul nostru:

ns1

În final, reporniți serverul pentru a aplica modificarea:

restart systemctl

Conectați-vă din nou și verificați dacă numele de gazdă este corect acum cu aceste comenzi:

hostname 
hostname -f

Rezultatul va fi astfel:

root@ns1:~$ hostname
ns1 
root@ns1:~$ hostnamed -f 
ns1.exemplu.com

6.2 Instalarea ISPConfig

Acum putem rula programul de instalare automată pentru toate pachetele și ISPConfig:

wget -O - https://get.ispconfig.org | sh -s -- --no-web --no-mail --use-php=system --interactive

După un timp, veți vedea:

AVERTISMENT! Acest script va reconfigura întregul server! 
Ar trebui rulat pe un server proaspăt instalat și, cel mai probabil, toate configurațiile curente pe care le-ați făcut se vor pierde! 
Tastați „yes” dacă doriți cu adevărat să continuați:

Răspundeți cu „da” și apăsați Enter. Programul de instalare va porni acum.

După finalizarea instalării și configurării pachetelor, va fi afișată parola de root pentru MySQL pe ns1. Notați-o (împreună cu numele serverului, pentru a preveni orice confuzie ulterioară).

Acum va trebui să răspundem la câteva întrebări, deoarece folosim modul interactiv. Acest lucru este necesar, deoarece acest server va fi adăugat la configurația dvs. multiserver.

[INFO] Se instalează ISPConfig3. 
[INFO] Parola dumneavoastră de root MySQL este: kl3994aMsfkkeE 

-------------------------------------------------------------------------------- 
 _____ ___________ _____ __ _ _ ____ 
|_ _/ ___| ___ \ / __ \ / _(_) /__ \ 
  | | \ `--.| |_/ / | / \/ ___ _ __ | |_ _ __ _ _/ / | 
  | `--. \ __/ | | / _ \| '_ \| _| |/ _` | |_ | 
 _| |_/\__/ / | | \__/\ (_) | | | | | | | (_| | ___\ \ 
 \___/\____/\_| \____/\___/|_| |_|_|\__, | \____/ __ 
                                              / | 
                                             |___/ 
-------------------------------------------------------------------------------- 


>> Configurare inițială   

Sistem de operare: Debian 10.0 (Buster) sau compatibil 

    Următoarele vor fi câteva întrebări pentru configurația principală, așa că fiți atenți. 
    Valorile implicite sunt între [paranteze] și pot fi acceptate cu <ENTER>. 
    Apăsați „quit” (fără ghilimele) pentru a opri programul de instalare. 


Selectați limba (en,de) [en]: <-- Apăsați enter

 Mod de instalare (standard,expert) [standard]: <-- expert

 Numele complet calificat al gazdei (FQDN) al serverului, de ex. server1.domain.tld [ns1.example.com]: <-- Apăsați Enter

 Numele gazdei serverului MySQL [localhost]: <-- Apăsați Enter

 Portul serverului MySQL [3306 ]: <-- Apăsați Enter

 Nume utilizator root MySQL [root ]: < -- Apăsați Enter

 Parola root MySQL []: <-- Introduceți parola MySQL pe care scriptul tocmai v-a dat-o

 MySQL baza de date pentru a crea [dbispconfig]: <-- Apăsați Enter

 MySQL charset [utf8]: <-- Apăsați Enter

 Următoarele două întrebări se referă la utilizatorul și parola bazei de date interne ISPConfig. 
Se recomandă acceptarea valorilor implicite, care sunt „ispconfig” ca nume de utilizator și o parolă aleatorie. 
Dacă utilizați o parolă diferită, utilizați doar numere și caractere pentru parolă. 

ISPConfig mysql database username [ispconfig]: <-- Apăsați Enter

 ISPConfig mysql database password [aakl203920459853sak20284204]: <-- Apăsați Enter

 Trebuie acest server să se alăture unei configurații multiserver ISPConfig existente (y,n) [n]: <-- y

 MySQL master server hostname []: <-- panel.example.com

 MySQL master server port []: <-- Apăsați Enter

 MySQL master server root username [root]: <-- Apăsați Enter

 MySQL master server root password []: <-- parola pe care ați dat-o utilizatorului root extern pe serverul master.

 MySQL master server name [dbispconfig]: <-- Apăsați Enter

Adăugarea înregistrării serverului ISPConfig la baza de date. 

Configurare Mail (y,n) [y]: <-- n

 [WARN] detectarea automată pentru Jailkit a eșuat 
Configurare forțată Jailkit (y,n) [n]: <-- Apăsați Enter

 Omitere Jailkit 

[WARN] detectarea automată pentru pureftpd a eșuat 
Configurare forțată pureftpd (y,n) [n]: <-- Apăsați Enter

 Omitere pureftpd 

Configurare Server DNS (y,n) [y]: <-- Apăsați Enter

 Configurare BIND 
Opțiunea Server Web trebuie activată atunci când doriți să rulați un server web sau când acest nod va găzdui interfața ISPConfig. 
Configurare server web (y,n) [y]: <-- n

 [WARN] detectarea automată pentru OpenVZ a eșuat 
Configurare forțată OpenVZ (y,n) [n]: <-- Apăsați enter

 Omitere OpenVZ 

Configurare server firewall (y,n) [y]: <-- Apăsați enter

 Configurare firewall Ubuntu 
[WARN] detectarea automată pentru serverul Metronome XMPP a eșuat 
Configurare forțată server Metronome XMPP (y,n) [n]: <-- Apăsați enter

 Omitere server Metronome XMPP 

Configurare Fail2ban 
Instalare interfață web ISPConfig (y,n) [n]: <-- Apăsați enter

 Doriți să creați certificate SSL pentru serverul dvs.? (y,n) [y]: <-- n

 Configurare DBServer 
Instalare ISPConfig crontab 
Detectare adrese IP 
Repornire servicii ... 
Repornirea apache2.service a eșuat: Unitatea apache2.service nu a fost găsită. 
Instalare finalizată. 
[INFO] Se verifică dacă toate serviciile rulează. 
[INFO] mysql: OK 
[INFO] clamav-daemon: OK 
[INFO] postfix: OK 
[INFO] bind9: OK 
[INFO] Instalarea este gata. 
[INFO] Parola dvs. de root MySQL este: kl3994aMsfkkeE 
[INFO] Atenție: Vă rugăm să ștergeți fișierele jurnal din /tmp/ispconfig-ai/var/log/setup-* odată ce nu mai aveți nevoie de ele, deoarece acestea conțin parolele dvs.!

6.3 Configurarea firewall-ului

Ultimul lucru de făcut este să configurăm firewall-ul.

Conectați-vă la interfața ISPConfig și accesați Sistem -> Firewall. Apoi faceți clic pe „Adăugați o nouă înregistrare firewall”.

Asigurați-vă că selectați serverul corect. Pentru serverul nostru de nume, trebuie să deschidem următoarele porturi:

TCP:

22,53

UDP:

53

Primul server de nume este acum adăugat la configurația multiserver. În pasul următor, vom instala serverul de nume secundar.

7 Instalarea serverului de nume secundar

Conectați-vă ca root sau executați

su -

să devii utilizator root pe server înainte de a continua. IMPORTANT : Trebuie să folosești „su -” și nu doar „su”, altfel variabila PATH este setată greșit de Debian.

7.1 Configurați numele de gazdă

Numele de gazdă al serverului dvs. ar trebui să fie un subdomeniu, cum ar fi „panel.example.com”. Nu utilizați un nume de domeniu fără o parte de subdomeniu, cum ar fi „example.com”, deoarece acest lucru va cauza probleme ulterioare cu configurarea mailului. Mai întâi, ar trebui să verificați numele de gazdă în  /etc/hosts  și să îl modificați atunci când este necesar. Linia ar trebui să fie: „IP Address – space – full hostname incl. domain – space – subdomain part”. Pentru numele nostru de gazdă ns2.example.com, fișierul va arăta astfel:

nano /etc/hosts
127.0.0.1 localhost.localdomain localhost 
# Această linie ar trebui modificată pe fiecare nod cu numele serverului corect: 
127.0.1.1 ns2.example.com ns2 
# Aceste linii sunt aceleași pe fiecare nod:
10.0.64.12 panel.exemplu.com panel 
10.0.64.13 web01.exemplu.com web01 
10.0.64.14 mx1.exemplu.com mx1 
10.0.64.15 ns1.exemplu.com ns1 
10.0.64.16 ns2.exemplu.com ns2 
10.0.64.17 webmail.exemplu.com webmail

# Următoarele linii sunt de dorit pentru gazdele compatibile cu IPv6
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

După cum puteți vedea, am adăugat și numele de gazdă ale celorlalte servere ale noastre, astfel încât acestea să poată comunica ulterior prin rețeaua internă.

Apoi editați fișierul /etc/hostname:

nano /etc/hostname

Va conține doar partea de subdomeniu, în cazul nostru:

ns2

În final, reporniți serverul pentru a aplica modificarea:

repornire systemctl

Conectați-vă din nou și verificați dacă numele de gazdă este corect acum cu aceste comenzi:

hostname 
hostname -f

Rezultatul va fi astfel:

root@ns2:~$ hostname 
ns2 
root@ns2:~$ hostname -f 
ns2.exemplu.com

7.2 Instalarea ISPConfig

Acum putem rula programul de instalare automată pentru toate pachetele și ISPConfig:

wget -O - https://get.ispconfig.org | sh -s -- --no-web --no-mail --use-php=system --interactive

După un timp, veți vedea:

AVERTISMENT! Acest script va reconfigura întregul server! 
Ar trebui rulat pe un server proaspăt instalat și, cel mai probabil, toate configurațiile curente pe care le-ați făcut se vor pierde! 
Tastați „yes” dacă doriți cu adevărat să continuați:

Răspundeți cu „da” și apăsați Enter. Programul de instalare va porni acum.

După finalizarea instalării și configurării pachetelor, va fi afișată parola de root pentru MySQL pe ns2. Notați-o (împreună cu numele serverului, pentru a preveni orice confuzie ulterioară).

Acum va trebui să răspundem la câteva întrebări, deoarece folosim modul interactiv. Acest lucru este necesar, deoarece acest server va fi adăugat la configurația dvs. multiserver.

[INFO] Se instalează ISPConfig3. 
[INFO] Parola dumneavoastră de root MySQL este: kl3994aMsfkkeE 


-------------------------------------------------------------------------------- 
 _____ ___________ _____ __ _ _ ____ 
|_ _/ ___| ___ \ / __ \ / _(_) /__ \ 
  | | \ `--.| |_/ / | / \/ ___ _ __ | |_ _ __ _ _/ / | 
  | `--. \ __/ | | / _ \| '_ \| _| |/ _` | |_ | 
 _| |_/\__/ / | | \__/\ (_) | | | | | | | (_| | ___\ \ 
 \___/\____/\_| \____/\___/|_| |_|_|\__, | \____/ __ 
                                              / | 
                                             |___/ 
-------------------------------------------------------------------------------- 


>> Configurare inițială   

Sistem de operare: Debian 10.0 (Buster) sau compatibil 

    Următoarele vor fi câteva întrebări pentru configurația principală, așa că fiți atenți. 
    Valorile implicite sunt între [paranteze] și pot fi acceptate cu <ENTER>. 
    Apăsați „quit” (fără ghilimele) pentru a opri programul de instalare. 


Selectați limba (en,de) [en]: <-- Apăsați enter

 Mod de instalare (standard,expert) [standard]: <-- expert

 Numele complet calificat al gazdei (FQDN) al serverului, de ex. server1.domain.tld [ns2.example.com]: <-- Apăsați Enter

 Numele gazdei serverului MySQL [localhost]: <-- Apăsați Enter

 Portul serverului MySQL [3306]: <-- Apăsați Enter

 Nume utilizator root MySQL [root ]: < -- Apăsați Enter

 Parola root MySQL []: <-- Introduceți parola MySQL pe care scriptul tocmai v-a dat-o

 MySQL baza de date pentru a crea [dbispconfig]: <-- Apăsați Enter

 MySQL charset [utf8]: <-- Apăsați Enter

 Următoarele două întrebări se referă la utilizatorul și parola bazei de date interne ISPConfig. 
Se recomandă acceptarea valorilor implicite, care sunt „ispconfig” ca nume de utilizator și o parolă aleatorie. 
Dacă utilizați o parolă diferită, utilizați doar numere și caractere pentru parolă. 

ISPConfig mysql database username [ispconfig]: <-- Apăsați Enter

 ISPConfig mysql database password [aakl203920459853sak20284204]: <-- Apăsați Enter

 Trebuie acest server să se alăture unei configurații multiserver ISPConfig existente (y,n) [n]: <-- y

 MySQL master server hostname []: <-- panel.example.com

 MySQL master server port []: <-- Apăsați Enter

 MySQL master server root username [root]: <-- Apăsați Enter

 MySQL master server root password []: <-- parola pe care ați dat-o utilizatorului root extern pe serverul master.

 MySQL master server name [dbispconfig]: <-- Apăsați Enter

Adăugarea înregistrării serverului ISPConfig la baza de date. 

Configurare Mail (y,n) [y]: <-- n

 [WARN] detectarea automată pentru Jailkit a eșuat 
Configurare forțată Jailkit (y,n) [n]: <-- Apăsați Enter

 Omitere Jailkit 

[WARN] detectarea automată pentru pureftpd a eșuat 
Configurare forțată pureftpd (y,n) [n]: <-- Apăsați Enter

 Omitere pureftpd 

Configurare Server DNS (y,n) [y]: <-- Apăsați Enter

 Configurare BIND 
Opțiunea Server Web trebuie activată atunci când doriți să rulați un server web sau când acest nod va găzdui interfața ISPConfig. 
Configurare server web (y,n) [y]: <-- n

 [WARN] detectarea automată pentru OpenVZ a eșuat 
Configurare forțată OpenVZ (y,n) [n]: <-- Apăsați enter

 Omitere OpenVZ 

Configurare server firewall (y,n) [y]: <-- Apăsați enter

 Configurare firewall Ubuntu 
[WARN] detectarea automată pentru serverul Metronome XMPP a eșuat 
Configurare forțată server Metronome XMPP (y,n) [n]: <-- Apăsați enter

 Omitere server Metronome XMPP 

Configurare Fail2ban 
Instalare interfață web ISPConfig (y,n) [n]: <-- Apăsați enter

 Doriți să creați certificate SSL pentru serverul dvs.? (y,n) [y]: <-- n

 Configurare DBServer 
Instalare ISPConfig crontab 
Detectare adrese IP 
Repornire servicii ... 
Repornirea apache2.service a eșuat: Unitatea apache2.service nu a fost găsită. 
Instalare finalizată. 
[INFO] Se verifică dacă toate serviciile rulează. 
[INFO] mysql: OK 
[INFO] clamav-daemon: OK 
[INFO] postfix: OK 
[INFO] bind9: OK 
[INFO] Instalarea este gata. 
[INFO] Parola dvs. de root MySQL este: kl3994aMsfkkeE 
[INFO] Atenție: Vă rugăm să ștergeți fișierele jurnal din /tmp/ispconfig-ai/var/log/setup-* odată ce nu mai aveți nevoie de ele, deoarece acestea conțin parolele dvs.!

7.3 Configurarea firewall-ului

Ultimul lucru de făcut este să configurăm firewall-ul.

Conectați-vă la interfața ISPConfig și accesați Sistem -> Firewall. Apoi faceți clic pe „Adăugați o nouă înregistrare firewall”.

Asigurați-vă că selectați serverul corect. Pentru serverul nostru de nume, trebuie să deschidem următoarele porturi:

TCP:

22,53

UDP:

53

Pentru a configura zonele, creați mai întâi zona în DNS ->Zone DNS pe primul server de nume și permiteți transferul + notificați și adresa IP a serverului de nume secundar. Apoi adăugați zona în „Zone DNS secundare” pe al doilea server de nume și permiteți transferul de la adresa IP a primului server de nume. Nu activați oglindirea în ISPConfig pentru serverele DNS, deoarece acest lucru ar întrerupe semnarea zonei DNSSEC; BIND va oglindi automat zona atunci când este modificată, deci nu este nevoie de oglindire internă în ISPConfig aici.

Serverul de nume secundar este acum configurat. Dacă doriți să adăugați un alt server de nume, repetați instrucțiunile de la acest pas și ajustați numele de gazdă și adresa IP în consecință. În pasul următor, vom instala serverul de webmail.

8 Instalarea serverului de webmail

Acesta este un pas opțional; dacă nu doriți un server de webmail separat, treceți la pasul următor.

Conectați-vă ca root sau executați

su -

să devii utilizator root pe server înainte de a continua. IMPORTANT : Trebuie să folosești „su -” și nu doar „su”, altfel variabila PATH este setată greșit de Debian.

8.1 Configurați numele de gazdă

Numele de gazdă al serverului dvs. ar trebui să fie un subdomeniu, cum ar fi „panel.example.com”. Nu utilizați un nume de domeniu fără o parte de subdomeniu, cum ar fi „example.com”, deoarece acest lucru va cauza probleme ulterioare cu configurarea mailului. Mai întâi, ar trebui să verificați numele de gazdă în  /etc/hosts  și să îl modificați atunci când este necesar. Linia ar trebui să fie: „IP Address – space – full hostname incl. domain – space – subdomain part”. Pentru numele nostru de gazdă webmail.example.com, fișierul ar trebui să arate astfel:

nano /etc/hosts
127.0.0.1 localhost.localdomain localhost 
# Această linie ar trebui modificată pe fiecare nod cu numele serverului corect: 
127.0.1.1 webmail.example.com webmail 
# Aceste linii sunt aceleași pe fiecare nod:
10.0.64.12 panel.exemplu.com panel 
10.0.64.13 web01.exemplu.com web01 
10.0.64.14 mx1.exemplu.com mx1 
10.0.64.15 ns1.exemplu.com ns1 
10.0.64.16 ns2.exemplu.com ns2 
10.0.64.17 webmail.exemplu.com webmail

# Următoarele linii sunt de dorit pentru gazdele compatibile cu IPv6
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

După cum puteți vedea, am adăugat și numele de gazdă ale celorlalte servere ale noastre, astfel încât acestea să poată comunica ulterior prin rețeaua internă.

Apoi editați fișierul /etc/hostname:

nano /etc/hostname

Va conține doar partea de subdomeniu, în cazul nostru:

webmail

În final, reporniți serverul pentru a aplica modificarea:

restart systemctl

Conectați-vă din nou și verificați dacă numele de gazdă este corect acum cu aceste comenzi:

hostname 
hostname -f

Rezultatul va fi astfel:

root@webmail:~$ hostname 
webmail 
root@webmail:~$ hostname -f 
webmail.exemplu.com

8.2 Instalarea ISPConfig

Acum putem rula programul de instalare automată pentru toate pachetele și ISPConfig:

wget -O - https://get.ispconfig.org | sh -s -- --no-mail --no-dns --roundcube --use-php=system --interactive

După un timp, veți vedea:

AVERTISMENT! Acest script va reconfigura întregul server! 
Ar trebui rulat pe un server proaspăt instalat și, cel mai probabil, toate configurațiile curente pe care le-ați făcut se vor pierde! 
Tastați „yes” dacă doriți cu adevărat să continuați:

Răspundeți cu „da” și apăsați Enter. Programul de instalare va porni acum.

După instalarea și configurarea pachetelor, va fi afișată parola de root pentru MySQL pe webmail. Notați-o (împreună cu numele serverului, pentru a preveni orice confuzie ulterioară).

Acum va trebui să răspundem la câteva întrebări, deoarece folosim modul interactiv. Acest lucru este necesar, deoarece acest server va fi adăugat la configurația dvs. multiserver.

[INFO] Se instalează ISPConfig3. 
[INFO] Parola dumneavoastră de root MySQL este: kl3994aMsfkkeE 

-------------------------------------------------------------------------------- 
 _____ ___________ _____ __ _ _ ____ 
|_ _/ ___| ___ \ / __ \ / _(_) /__ \ 
  | | \ `--.| |_/ / | / \/ ___ _ __ | |_ _ __ _ _/ / | 
  | `--. \ __/ | | / _ \| '_ \| _| |/ _` | |_ | 
 _| |_/\__/ / | | \__/\ (_) | | | | | | | (_| | ___\ \ 
 \___/\____/\_| \____/\___/|_| |_|_|\__, | \____/ __ 
                                              / | 
                                             |___/ 
-------------------------------------------------------------------------------- 


>> Configurare inițială   

Sistem de operare: Debian 10.0 (Buster) sau compatibil 

    Următoarele vor fi câteva întrebări pentru configurația principală, așa că fiți atenți. 
    Valorile implicite sunt între [paranteze] și pot fi acceptate cu <ENTER>. 
    Apăsați „quit” (fără ghilimele) pentru a opri programul de instalare. 


Selectați limba (en,de) [en]: <-- Apăsați enter

 Mod de instalare (standard,expert) [standard]: <-- expert

 Numele complet calificat al gazdei (FQDN) al serverului, de ex. server1.domain.tld [webmail.exemplu.com]: <-- Apăsați Enter

 Numele gazdei serverului MySQL [localhost]: <-- Apăsați Enter

 Portul serverului MySQL [3306]: <-- Apăsați Enter

 Nume utilizator root MySQL [root ]: < -- Apăsați Enter

 Parola root MySQL []: <-- Introduceți parola MySQL pe care scriptul tocmai v-a dat-o

 MySQL baza de date pentru a crea [dbispconfig]: <-- Apăsați Enter

 MySQL charset [utf8]: <-- Apăsați Enter

 Următoarele două întrebări se referă la utilizatorul și parola bazei de date interne ISPConfig. 
Se recomandă acceptarea valorilor implicite, care sunt „ispconfig” ca nume de utilizator și o parolă aleatorie. 
Dacă utilizați o parolă diferită, utilizați doar numere și caractere pentru parolă. 

ISPConfig mysql database username [ispconfig]: <-- Apăsați Enter

 ISPConfig mysql database password [aakl203920459853sak20284204]: <-- Apăsați Enter

 Trebuie acest server să se alăture unei configurații multiserver ISPConfig existente (y,n) [n]: <-- y

 MySQL master server hostname []: <-- panel.example.com

 MySQL master server port []: <-- Apăsați Enter

 MySQL master server root username [root]: <-- Apăsați Enter

 MySQL master server root password []: <-- parola pe care ați dat-o utilizatorului root extern pe serverul master.

 MySQL master server name [dbispconfig]: <-- Apăsați Enter

Adăugarea înregistrării serverului ISPConfig la baza de date. 

Configurare Mail (y,n) [y]: <-- n

 Configurare Jailkit 
Configurare Pureftpd 
Configurare Server DNS (y,n) [y]: <-- n

 Opțiunea Server Web trebuie activată atunci când doriți să rulați un server web sau când acest nod va găzdui interfața ISPConfig. 
Configurare server web (y,n) [y]: <-- Apăsați enter

 Configurare Apache 
Configurarea detectării automate vlogger 
[WARN] pentru OpenVZ a eșuat 
Configurare forțată OpenVZ (y,n) [n]: <-- Apăsați enter

 Omitere OpenVZ 

Configurare server firewall (y,n) [y]: <-- Apăsați enter

 Configurarea detectării automate Ubuntu Firewall 
[WARN] pentru serverul Metronome XMPP a eșuat 
Configurare forțată server Metronome XMPP (y,n) [n]: <-- Apăsați enter

 Omitere server Metronome XMPP 

Configurare Fail2ban 
Instalare interfață web ISPConfig (y,n) [n]: <-- Apăsați enter

 Doriți să creați certificate SSL pentru serverul dvs.? (y,n) [y]: <-- n

 Configurare aplicații vhost 
Configurare DBServer 
Instalare ISPConfig crontab 
Detectare adrese IP 
Repornire servicii ... 
Instalare finalizată. 
[INFO] Adăugare versiuni php la ISPConfig. 
[INFO] Se verifică dacă toate serviciile rulează. 
[INFO] mysql: OK 
[INFO] clamav-daemon: OK 
[INFO] postfix: OK 
[INFO] bind9: OK 
[INFO] pureftpd: OK 
[INFO] apache2: OK 
[INFO] Instalarea este gata. 
[INFO] Parola dvs. de root MySQL este: kl3994aMsfkkeE 
[INFO] Atenție: Vă rugăm să ștergeți fișierele jurnal din /tmp/ispconfig-ai/var/log/setup-* odată ce nu mai aveți nevoie de ele, deoarece acestea conțin parolele dvs.!

8.3 Configurați site-ul de webmail

Acum vom configura site-ul webmail. Mai întâi, vom dezactiva configurația Apache implicită, deoarece altfel va interfera cu site-ul webmail:

a2dissite 000-default 
systemctl reload apache2

Acum conectați-vă la ISPConfig și accesați Sites -> Add new website.

Introduceți „webmail.example.com” ca domeniu. Dezactivați subdomeniul automat și activați Let’s Encrypt. Activați și PHP.

O conexiune securizată este importantă, așa că accesați fila Redirecționare și activați „Rescrie HTTP în HTTPS”.

Acum, accesați fila de opțiuni și adăugați următorul fragment de directivă Apache:

DocumentRoot "/var/lib/roundcube/public_html" 
Alias ​​"/stats" "{DOCROOT}/stats"

Faceți clic pe Salvare pentru a salva aceste setări.

8.4 Configurarea Roundcube

Vom ajusta configurația astfel încât să utilizeze MX1 ca server IMAP și server SMTP. Puteți modifica acest lucru în funcție de propriile nevoi/idei.

nano /etc/roundcube/config.inc.php

Va trebui să ajustați următoarele setări pentru a arăta astfel:

$config['default_host'] = 'ssl://mx1.example.com';
$config['smtp_server'] = 'tls://mx1.example.com';
`$config['smtp_port'] = 587;`

8.5 Configurarea firewall-ului

Ultimul lucru de făcut este să configurăm firewall-ul.

Conectați-vă la interfața ISPConfig și accesați Sistem -> Firewall. Apoi faceți clic pe „Adăugați o nouă înregistrare firewall”.

Asigurați-vă că selectați serverul corect. Pentru serverul nostru de webmail, trebuie să deschidem următoarele porturi:

TCP:

22.80.443

Nu trebuie deschise porturi UDP prin interfața cu utilizatorul.

Serverul tău de webmail este acum gata de utilizare. Dacă dorești să integrezi Roundcube cu funcția mailuser din ISPConfig, unde orice cont de mail își poate schimba propria parolă, setările filtrului de spam, răspunsul automat și multe altele

[mai mult...]

Cum se instalează NetBox IRM pe serverul Ubuntu 24.04

NetBox este un instrument de modelare a resurselor de infrastructură (IRM) conceput pentru automatizarea rețelelor și ingineria infrastructurii. Inițial, a fost creat de echipa DigitalOcean și acum a devenit un proiect open-source lansat sub licența Apache 2.

Înainte de a continua, asigură-te că ai următoarele:

  • Un server Ubuntu 24.04
  • Un utilizator non-root cu privilegii de administrator
  • Un nume de domeniu a indicat adresa IP a serverului

Pentru a instala Netbox, trebuie să vă asigurați că dependențele sunt instalate pe serverul Ubuntu. Acestea includ Python3, serverul PostgreSQL, serverul web Apache, Redis și bibliotecile de sistem. În această secțiune, veți instala aceste pachete cu ajutorul managerului de pachete APT.

Mai întâi, executați următoarea comandă pentru a actualiza indexul pachetului Ubuntu.

sudo apt update

După actualizare, instalați dependențele pentru Netbox cu următoarea comandă. În acest exemplu, veți instala PostgreSQL, Apache, Python, Redis, Certbot, veți construi dependențe și câteva biblioteci.

sudo apt install apache2 postgresql postgresql-common libpq-dev redis-server git certbot python3 python3-pip python3-venv python3-dev build-essential libxml2-dev libxslt1-dev libffi-dev libssl-dev zlib1g-dev

Introduceți „ Y ” pentru a confirma instalarea.

După finalizarea instalării, executați comanda „systemctl” de mai jos pentru a verifica starea serverului web Apache.

sudo systemctl is-enabled apache2
sudo systemctl status apache2

În următoarea ieșire, puteți vedea că Apache rulează și este activat.

În cele din urmă, verificați starea serverului PostgreSQL cu următoarele:

sudo systemctl is-enabled postgresql
sudo systemctl status postgresql

În rezultatul de mai jos, puteți vedea că PostgreSQL este activat și rulează cu starea „exited” (sistem-ul nu poate găsi serviciul de monitorizat).

Configurarea PostgreSQL

După instalarea dependențelor, trebuie să configurați serverul PostgreSQL creând un nou utilizator și o nouă bază de date pe care Netbox le va utiliza.

Conectați-vă la serverul PostgreSQL folosind comanda de mai jos.

sudo -u postgres psql

Acum executați următoarele interogări pentru a crea un nou utilizator „ netbox ” cu parola „ netboxpassword ” și noua bază de date „ netboxdb ”.

CREATE USER netbox LOGIN CREATEDB PASSWORD 'netboxpassword';
CREATE DATABASE netboxdb OWNER netbox;

După ce baza de date și utilizatorul sunt create, verificați lista de baze de date și utilizatori pe PostgreSQL cu următoarele.

\l 
\du

Puteți vedea mai jos baza de date „ netboxdb ” și utilizatorul „ netbox ” care este creat.

Tastați „ quit ” pentru a ieși din serverul PostgreSQL.

Acum că baza de date PostgreSQL este gata, veți descărca și instala Netbox pe mașina dvs. Ubuntu. Veți configura numele de domeniu, cheia secretă și baza de date pentru Netbox.

Mai întâi, executați comanda de mai jos pentru a crea un nou utilizator „netbox” pe mașina dvs. Ubuntu.

sudo useradd -r -d /opt/netbox -s /usr/sbin/nologin netbox

Acum executați comanda de mai jos pentru a descărca codul sursă Netbox cu comanda „ git ” și schimbați proprietarul la utilizatorul „ netbox ”.

sudo git clone -b master --depth 1 https://github.com/netbox-community/netbox.git /opt/netbox
sudo chown -R netbox:netbox /opt/netbox

Mutați-vă în directorul „ /opt/netbox/netbox/netbox ” și executați fișierul „ generate_secret_key.py ”. Copiați cheia secretă în nota dvs.

cd /opt/netbox/netbox/netbox
sudo -u netbox python3 ../generate_secret_key.py

Apoi, copiați fișierul „ configuration.py ” și modificați-l folosind editorul „ nano ”.

sudo -u netbox cp configuration_example.py configuration.py
sudo -u netbox nano configuration.py

Adăugați adresa IP locală și numele de domeniu la „ ALLOWED_HOSTS ”.

ALLOWED_HOSTS = ['netbox.howtoforge.local', '192.168.10.60']

Introduceți numele bazei de date PostgreSQL, utilizatorul și parola în secțiunea „ BAZA DE DATE ”.

# configurare bază de date 
DATABASE = { 
'NAME': 'netboxdb', # Nume bază de date 
'USER': 'netbox', # Nume utilizator PostgreSQL 
'PASSWORD': 'netboxpassword', # Parolă PostgreSQL 
'HOST': 'localhost', # Server bază de date 
'PORT': '', # Port bază de date (se lasă necompletat pentru implicit) 
'CONN_MAX_AGE': 300, # Vârsta maximă a conexiunii la baza de date (secunde) 
}

Lipiți cheia secretă în secțiunea „ SECRET_KEY ”.

SECRET_KEY = '98%D9uh8S%)T0QhQ@Z3zYf%Hik^CqWJ)Uwz%0J7TZUztmNiitG'

Salvați fișierul și ieșiți din editor când ați terminat.

Migrarea Netbox și configurarea administratorului

Acum că ați configurat Netbox cu serverul PostgreSQL, sunteți gata să migrați baza de date și să creați un utilizator de administrator pentru instalarea Netbox.

Executați scriptul „ upgrade.sh ” folosind comanda de mai jos. Aceasta va crea un mediu Python, va instala dependențele pentru Netbox, va migra baza de date Netbox, se va conecta la Redis și apoi va genera fișiere statice.

sudo -u netbox /opt/netbox/upgrade.sh

Mai jos puteți vedea migrarea bazei de date pentru Netbox.

Și mai jos, când „ manage.py ” generează fișiere statice.

După finalizarea procesului, trebuie să creați un nou utilizator de administrator pentru Netbox prin intermediul scriptului „ manage.py ”.

Rulați următoarea comandă pentru a activa mediul virtual Netbox. Odată activat, shell-ul dvs. va deveni de genul „ (venv) user@hostname ”.

source /opt/netbox/venv/bin/activate

Accesați directorul „ /opt/netbox/netbox ” și executați scriptul „ manage.py ” astfel:

cd /opt/netbox/netbox
python3 manage.py createsuperuser

Introduceți numele de utilizator, adresa de e-mail și parola pentru administratorul Netbox.

După finalizare, executați comanda „ dezactivate ” pentru a ieși din mediul virtual Netbox.

Rularea Netbox ca serviciu

În această secțiune, veți copia configurațiile Netbox care vor fi utilizate pentru a rula Netbox ca serviciu systemd. Trebuie să vă asigurați că Netbox rulează sub Gunicorn, apoi să copiați fișierele serviciului Netbox în directorul „ /etc/systemd/system ”.

Mai întâi, copiați scriptul „ gunicorn.py ” în directorul „ /opt/netbox ”. Acest script conține configurația pentru ca Netbox să ruleze sub serverul WSGI Python.

sudo -u netbox cp /opt/netbox/contrib/gunicorn.py /opt/netbox/gunicorn.py

Acum executați comanda de mai jos pentru a copia fișierele de service pentru Netbox în directorul „ /etc/systemd/system ” și a reîncărca managerul systemd.

sudo cp -v /opt/netbox/contrib/*.service /etc/systemd/system/ 
sudo systemctl daemon-reload

După ce systemd este reîncărcat, executați comanda „ systemctl ” de mai jos pentru a porni și activa serviciile Netbox.

sudo systemctl enable --now netbox netbox-rq netbox-housekeeping

În cele din urmă, verificați serviciile Netbox pentru a vă asigura că rulează cu următoarea comandă.

sudo systemctl status netbox netbox-rq netbox-housekeeping

În următoarea ieșire, puteți vedea că serviciul „ netbox ” rulează și este activat.

Pentru serviciul „ netbox-rq ”, ar trebui să obțineți o ieșire de genul:

În cele din urmă, „ netbox-housekeeping ” cu starea „ dead ” deoarece va funcționa ca un cronometru.

Configurarea Apache ca proxy invers

În acest moment, Netbox rulează în fundal ca serviciu pe serverul Python WSGI. Pentru a-l face accesibil din exterior, trebuie să configurați Apache ca proxy invers. Înainte de asta, trebuie să generați și certificate SSL pentru a securiza instalarea Netbox.

Mai întâi, executați comanda de mai jos pentru a opri serviciul „ apache2 ”.

sudo systemctl stop apache2

Acum generați certificate SSL din Letsencrypt cu comanda „ certbot ” de mai jos. Asigurați-vă că schimbați numele de domeniu și adresa de e-mail cu informațiile dvs.

sudo certbot certonly --standalone --preferred-challenges http -d netbox.howtoforge.local

După finalizarea procesului, certificatele SSL vor fi disponibile în directorul „ /etc/letsencrypt/live/domain.com ”.

Apoi, copiați configurația Apache pentru Netbox în fișierul „ /etc/apache2/sites-available/netbox.conf ” și modificați-o folosind editorul „ nano ”.

sudo cp /opt/netbox/contrib/apache.conf /etc/apache2/sites-available/netbox.conf 
sudo nano /etc/apache2/sites-available/netbox.conf

Înlocuiți numele domeniului în opțiunea „ ServerName ” și modificați calea certificatelor SSL.

<VirtualHost *:80> 
# SCHIMBAȚI ACESTA ÎN NUMELE SERVERULUI 
DUMNEAVOASTRĂ ServerName netbox.howtoforge.local 

... 
</VirtualHost> 

<VirtualHost *:443> 
ProxyPreserveHost On # SCHIMBAȚI ACESTA 

ÎN NUMELE SERVERULUI DUMNEAVOASTRĂ 
ServerName netbox.howtoforge.local 

SSLEngine on 
SSLCertificateFile /etc/letsencrypt/live/netbox.howtoforge.local/fullchain.pem 
SSLCertificateKeyFile /etc/letsencrypt/live/netbox.howtoforge.local/privkey.pem 
... 
</VirtualHost>

Salvați fișierul și ieșiți din editor când ați terminat.

Acum executați comanda de mai jos pentru a activa modulele Apache și fișierul gazdă virtuală „ netbox.conf ”.

sudo a2enmod ssl proxy proxy_http headers rewrite
sudo a2ensite netbox.conf

După ce gazda virtuală este activată, executați următoarea comandă pentru a reporni Apache și a aplica modificările. Astfel, instalarea Netbox ar trebui să ruleze sub proxy-ul invers Apache cu HTTPS activat.

sudo systemctl restart apache2

În cele din urmă, accesați https://netbox.howtoforge.local/ cu browserul web și veți fi redirecționat către pagina de conectare Netbox. Introduceți numele de utilizator și parola de administrator, apoi faceți clic pe Conectare.

Veți vedea următorul tablou de bord Netbox dacă aveți acreditările de administrator corespunzătoare.

Faceți clic pe meniul Admin > System pentru a vedea informații despre instalarea Netbox. În rezultatul următor, puteți vedea că Netbox v4.1.7 este instalat împreună cu baza de date PostgreSQL.

[mai mult...]

Cum se instalează Miniconda pe Debian 12

Miniconda este versiunea mini a Anaconda Distribution, cu mai puține pachete, dar suficient de puternică pentru a configura proiectele Python/R și de știința datelor. Miniconda include doar pachete cu taxe precum „conda”, Python și pachete suplimentare utile. Este o versiune ușoară a Anaconda, cu o dimensiune mai mică, care permite totuși instalarea de pachete suplimentare prin intermediul depozitului public al Anaconda sau al oricăror depozite terțe, cum ar fi conda-forge și bioconda.

Cerințe preliminare

Pentru a începe să utilizați acest ghid, asigurați-vă că aveți următoarele:

  • Un server/desktop Linux – acest exemplu folosește Debian 12
  • Un utilizator non-root cu privilegii de administrator

Instalarea Minicondei

Pentru a instala Miniconda pe Debian, puteți descărca cu ușurință programul de instalare cu comanda „curl” și îl puteți executa din terminal. Iată cum se instalează Miniconda pe mașina dvs. Debian.

Descărcați programul de instalare Miniconda pentru Linux cu comanda „curl” de mai jos.

curl -O https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh

După finalizarea descărcării, executați scriptul de instalare „Miniconda3-latest-Linux-x86_64” astfel:

bash ~/Miniconda3-cea-mai-recentă-fișiere-Linux-x86_64.sh

Acum faceți următoarele:

  • Apăsați și mențineți apăsată tasta ENTER pentru a consulta acordul de licență.
  • Introduceți „da” pentru a fi de acord cu acordul de licență.
  • Apăsați ENTER pentru a configura calea implicită de instalare la „ /home/USER/miniconda3 ”.
  • Pentru procesul de inițializare, selectați „da” pentru a automatiza inițializarea Miniconda.
  • După finalizarea procesului, veți vedea un mesaj precum „ Vă mulțumim pentru instalarea miniconda3 ”.

Acum că instalarea este finalizată, reîncărcați mediul shell curent cu comanda de mai jos. Mai jos puteți utiliza una, „~/.bashrc” pentru utilizatorul Bash sau „~/.zshrc” pentru utilizatorul ZSH.

source ~/.bashrc
source ~/.zshrc

După ce shell-ul este reîncărcat, veți intra automat în mediul „ (base) ”, care este destinat exclusiv Miniconda. Pentru aplicațiile sau proiectele tale, creează-ți propriul mediu, despre care vei învăța mai târziu. Verificați versiunea „conda” cu comanda de mai jos. În acest moment, avem instalată versiunea conda „ 24.11.1 ”.

conda --version

În cele din urmă, puteți verifica informații detaliate despre instalarea Miniconda cu următoarele:

conda info

Aici puteți vedea mediul activ, directorul de date, directorul cache, versiunea „ conda ”, directoarele de mediu și adresele URL ale canalelor (depozitele).

După ce ați instalat Miniconda, haideți să învățăm cum să creăm și să gestionăm medii virtuale folosind Miniconda.

Miniconda oferă un instrument de linie de comandă numit „conda” pentru gestionarea și implementarea mediilor virtuale, a pachetelor și a aplicațiilor. În acest pas, veți învăța cum să creați și să activați medii virtuale cu „conda” și, de asemenea, cum să instalați pachete în mediul dvs. virtual.

Pentru a crea un nou mediu de dezvoltare Conda, executați comanda „ conda ” de mai jos. În acest exemplu, veți crea un nou mediu numit „ cenv ”.

conda create -n cenv

Când vi se solicită, introduceți „ y ” pentru a continua.

După ce mediul „ cenv ” este creat, executați comanda „ conda activate ” de mai jos pentru a activa noul mediu.

conda activate cenv

Cu aceasta, shell-ul dvs. ar trebui schimbat de la „ (base) ” la „ (cenv) ”.

Apoi, executați comanda „conda install” de mai jos pentru a instala pachetele. De exemplu, aici vom instala pachetele Python 3.12, Beautifulsoup4 și docutils.

conda install python=3.12 beautifulsoup4 docutils

În cele din urmă, puteți dezactiva mediul curent cu comanda de mai jos.

conda deactivate

În plus, puteți utiliza și comanda „conda create” dintr-o singură linie pentru a crea un mediu nou și a instala pachete precum următoarele.

conda create cent python=3.12 beautifulsoup4 docutils

Crearea mediului cu fișier YAML

Miniconda oferă și o modalitate de a crea medii prin intermediul fișierului YAML. Cu aceasta, puteți partaja cu ușurință fișierul YAML cu prietenii dvs. și toți vor avea aceleași medii. Acum, haideți să învățăm cum să creăm medii virtuale cu „conda” prin intermediul fișierului YAML.

Creați un nou fișier „ environment.yml ” cu editorul de text. În acest caz, vom folosi „ nano ”.

nano mediu.yml

Introduceți configurația de mai jos pentru a crea un nou mediu, „ myproject ”, cu pachetele „ Python3.12 ”, „ pip ” și „ flask ”. Pachetul respectiv va fi instalat automat.

nume: myproject 
dependențe: 
- python=3.12 
- pip 
- flask

Salvați fișierul și ieșiți din editor când ați terminat.

Acum executați comanda „ conda env create ” de mai jos pentru a crea un nou mediu virtual prin intermediul fișierului „ environment.yml ”.

conda env create -f environment.yml

După finalizare, activați mediul „ myproject ” cu comanda de mai jos.

conda activate myproject

Dacă merge bine, shell-ul tău va deveni de genul „ (proiectulmeu) utilizator@gazdă”, ca în captura de ecran de mai jos.

Medii de listare și pachete

În această secțiune, veți învăța cum să verificați mediile pe care le-ați creat și să listați pachetele disponibile pe care le-ați instalat folosind „conda”.

Rulați comanda „conda env” de mai jos pentru a lista proiectele/mediile din sistemul dvs. Așadar, în acest caz, veți vedea trei medii, „ (base) ” pentru Miniconda implicită, „ cenv ” și „ myproject ”.

conda env list

De asemenea, puteți verifica lista de pachete din mediul dvs. folosind comanda „ conda list ” de mai jos.

conda list -n myproject
conda list -n cenv

Mai jos puteți vedea lista de pachete din cadrul „ myproject ”.

Acum că ați învățat cum să listați medii și pachete, în pasul următor veți învăța cum să eliminați pachete și medii virtuale în Miniconda.

Pentru a elimina pachetul specific din mediul dvs., executați comanda „ conda remove ” urmată de „ -n nume-mediu ” și numele pachetului.

conda remove -n myproject pip

Pentru a elimina mediul din sistem, executați următoarea comandă „ conda remove ” urmată de numele mediului și opțiunea „ –all ”.

conda remove -n myproject --all

În cele din urmă, verificați din nou lista de medii cu comanda de mai jos. Veți vedea că mediul dvs. este șters. În acest exemplu, „ myproject ” este șters.

conda env list

Pentru acest ultim pas, vă vom oferi o demonstrație a dezvoltării Flask folosind Miniconda. Pentru aceasta, vom folosi mediul „cenv” pe care l-am creat, apoi vom instala pachetele Python, Pip și Flask.

Mai întâi, activați mediul virtual „ cenv ” și instalați pachetele necesare, inclusiv „ flask ”.

conda activate cenv
conda install python=3.12 pip flask

Acum creați un nou director de proiect „ ~/flask ” și accesați-l. Apoi, creați o nouă aplicație „ myapp.py ” folosind editorul de text preferat.

mkdir -p ~/flask; cd ~/flask
vim myapp.py

Introduceți următorul script Python pentru a crea o nouă aplicație, „ myapp ”, care va afișa „ Hello Flask ” în browser.

#myapp
from flask import Flask, render_template # importing the render_template function

app = Flask(__name__)
# route to index page
@app.route("/")
def hello():
return render_template('index.html')

if __name__ == ' __main__':
app.run(debug=True)

Acum creați un nou director „templates” și creați un fișier „index.html” în directorul respectiv.

mkdir -p templates
nano templates/index.html

Introduceți următorul script HTML care va fi redat de funcția „ render_template ”.

<html> 
<body> 
<h1><center>Hello Flask within Miniconda!</center></h1> 
</body> 
</html>

Apoi, executați comanda „flask” de mai jos pentru a porni aplicația. Aceasta va rula Flask pe portul implicit „5000”.

flask --app myapp run

Când rulați, veți vedea o ieșire de genul următor:

În cele din urmă, deschideți o nouă filă de terminal și conectați-vă la serverul dvs. Apoi, executați comanda „curl” de mai jos pentru a accesa aplicația Flask.

curl http://localhost:5000/

Vei vedea scriptul „index.html” afișat pe terminal.

[mai mult...]

Cum se instalează Jupyter Notebook cu proxy Nginx pe Debian 12

Jupyter este o aplicație web gratuită și open-source pentru calcul interactiv și știința datelor. Jupyter este compatibilă cu toate limbajele de programare și oferă mai multe programe software, cum ar fi JupyetrLab, care oferă un mediu de editare multi-notebook bogat în funcții și cu file, Notebook ca o modalitate ușoară și simplificată de creare a notelor, Qtconsole și multe altele.

Înainte de a începe, asigurați-vă că aveți următoarele:

  • Un server Debian 12
  • Un utilizator non-root cu privilegii de administrator
  • Un nume de domeniu a indicat adresa IP a serverului

Instalarea pachetelor Python

Înainte de a instala Jupyter, trebuie să instalați Python, managerul de pachete Pip Python, venv pentru crearea unui mediu virtual Python și git. În această secțiune, veți instala aceste pachete cu ajutorul managerului de pachete APT.

Pentru a începe, executați comanda de mai jos pentru a actualiza indexul pachetului Debian.

actualizare sudo apt

Acum instalați Python și dependențele precum Pip, venv și pachetul Python Dev. Introduceți „ Y ” pentru a confirma instalarea.

sudo apt instalează python3 python3-pip python3-dev python3-venv git

După finalizarea instalării, executați comanda „ pip3 ” de mai jos pentru a actualiza versiunea de Pip.

pip3 instalează --break-system-package --upgrade pip

Acum verificați versiunea Python și Pip cu comanda de mai jos.

python3 --version 
pip3 --version

Puteți vedea mai jos că sunt instalate Python 3.11 și Pip 24.3 .

Configurarea mediului virtual Python

După ce ați instalat Python și alte dependențe, veți crea un nou mediu virtual Python pentru instalarea Jupyter. Astfel, instalarea Jupyter va fi izolată în mediul virtual. De asemenea, aveți nevoie de un utilizator Linux dedicat, așa că asigurați-vă că aveți utilizatorul pregătit.

Conectați-vă la utilizatorul dvs. cu comanda de mai jos.

su - nume de utilizator

Rulați comanda „ python3 ” de mai jos pentru a crea un nou mediu virtual Python, „ venv ”. Aceasta va instala Python și Pip în mediul dvs. virtual, care este separat de sistemul dvs.

python3 -m venv venv

Activați mediul virtual Python „ venv ”. Odată activat, promptul shell va deveni de genul „ (venv) numeutilizator@gazdă … ”.

sursă venv/bin/activate

Dacă doriți să dezactivați „ venv ”, executați comanda „ deactivate ” de mai jos.

deactivate

Instalarea Jupyter

Acum că ați creat și activat mediul virtual Python, puteți începe instalarea Jupyter prin intermediul managerului de pachete Pip Python.

Pentru a instala Jupyter, executați comanda „ pip3 ” de mai jos.

pip3 install jupyter

Mai jos puteți vedea instalarea Jupyter într-un mediu virtual.

După finalizarea instalării, verificați versiunea Jupyter cu următoarea comandă.

jupyter --version

În rezultatul următor, puteți vedea versiunea fiecărei componente Jupyter instalate.

Activați autentificarea în Jupyter Notebook

După ce ați instalat Jupyter, veți configura instalarea Jupyter Notebook activând autentificarea prin parolă.

Mai întâi, executați comanda de mai jos pentru a genera configurația pentru Jupyter Notebook. Aceasta va genera o nouă configurație pentru „ ~/.jupyter/jupyter_notebook_config.py ”.

jupyter notebook --geenrate-config

Acum setați parola pentru Jupyter Notebook folosind comanda de mai jos. Introduceți parola când vi se solicită și repetați.

jupyter notebook password

În cele din urmă, executați comanda „ deactivate ” pentru a vă deconecta din mediul virtual „venv”.

deactivate

Rularea Jupyter Notebook ca serviciu Systemd

În această secțiune, veți crea un nou serviciu systemd care va rula Jupyter Notebook. Astfel, Jupyter Notebook va rula în fundal ca serviciu systemd și îl puteți gestiona cu ușurință cu utilitarul „ systemctl ”.

Creați un nou fișier de serviciu systemd „ /etc/systemd/system/jupyter.service ” cu următorul editor „ nano ”.

sudo nano /etc/systemd/system/jupyter.service

Introduceți configurația de mai jos pentru a rula Jupyter Notebook ca serviciu systemd.

[Unitate] 
Descriere=Jupyter Notebook 

[Unit]
Description=Jupyter Notebook

[Service]
Type=simple
PIDFile=/run/jupyter.pid
ExecStart=/home/alice/venv/bin/jupyter-notebook --config=/home/alice/.jupyter/jupyter_notebook_config.py --allow-root
User=root
Group=root
WorkingDirectory=/home/alice/venv
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

Salvați fișierul și ieșiți din editor.

Acum executați comanda „ systemctl ” de mai jos pentru a reporni managerul systemd și a aplica modificările.

sudo systemctl daemon-reload

În cele din urmă, porniți și activați serviciul „ jupyter ” cu comanda de mai jos.

sudo systemctl enable --now jupyter 
sudo systemctl status jupyter

În următoarea ieșire, puteți vedea că serviciul „ jupyter ” rulează pe sistemul dumneavoastră.

Permiterea accesului de la distanță la Jupyter Notebook

În această secțiune, veți activa accesul de la distanță la Jupyter. Acest lucru trebuie făcut dacă doriți să configurați un proxy invers în fața instalării Jupyter.

Conectați-vă la contul de utilizator și deschideți configurația Jupyter „~/.jupyter/jupyter_notebook_config.py” cu următorul editor „nano”.

su - username
nano ~/.jupyter/jupyter_notebook_config.py

Pentru a activa accesul la distanță, eliminați comentariile de la opțiunea „ c.ServerApp.allow_remote_access ” și schimbați valoarea la „ True ”.

c.ServerApp.allow_remote_access = True

Salvați și ieșiți din fișier când ați terminat.

Apoi, executați comanda „ systemctl ” de mai jos pentru a reporni serviciul „ jupyter ” și a aplica modificările. Astfel, noul token va fi generat și poate fi găsit în fișierul jurnal.

sudo systemctl restart jupyter

În cele din urmă, verificați starea serviciului „ jupyter ” cu următoarea comandă.

sudo systemctl status jupyter

Uită-te la partea de jos a mesajului și copiază token-ul generat pentru Jupyter  Notebook.

Setarea Nginx ca proxy invers

Acum, că Jupyter Notebook rulează ca serviciu, următorul pas este să instalați Nginx și să îl configurați ca proxy invers pentru Jupyter Notebook. În acest fel, puteți securiza cu ușurință Jupyter Notebook cu HTTPS.

Instalați pachetul „ nginx ” cu comanda „ apt ” de mai jos.

sudo apt install nginx -y

După finalizarea instalării, creați o nouă configurație de blocuri pentru serverul Nginx „ /etc/nginx/sites-available/jupyter ” cu următorul editor „ nano ”.

sudo nano /etc/nginx/sites-available/jupyter

Introduceți configurația de mai jos pentru a configura Nginx ca proxy invers pentru Jupyter Notebook. Asigurați-vă că schimbați parametrul „ server_name ” cu numele domeniului dvs.

server {
listen 80;
server_name lab.howtoforge.local;

access_log /var/log/nginx/howtoforge.local.access.log;
error_log /var/log/nginx/howtoforge.local.error.log;

location / {
proxy_pass http://127.0.0.1:8888;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_http_version 1.1;
proxy_redirect off;
proxy_buffering off;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 86400;
}
}

Salvați fișierul și ieșiți din editor.

Apoi, executați comanda de mai jos pentru a activa blocul de server „ jupyter ” și a verifica configurația Nginx.

sudo ln -s /etc/nginx/sites-available/jupyter /etc/nginx/sites-enabled/ 
sudo nginx -t

Dacă aveți setările Nginx corecte, veți vedea un mesaj de genul „ sintaxa este ok – testul a reușit ”.

În cele din urmă, executați comanda „ systemctl ” de mai jos pentru a reporni serverul web Nginx și a verifica starea Nginx.

sudo systemctl restart nginx 
sudo systemctl status nginx

Dacă Nginx rulează, puteți vedea un rezultat de genul următor:

Accesarea Jupyter Notebook

Deschideți browserul web și accesați numele de domeniu al instalării Jupyter Notebook, cum ar fi http://lab.howtoforge.local/. Dacă instalarea a reușit, vi se va solicita autentificarea cu parola Jupyter.

Introduceți parola și faceți clic pe „ Autentificare ”.

Acum veți vedea tabloul de bord Jupyter Notebook astfel:

[mai mult...]

Cum se folosește grep pentru a căuta șiruri de caractere în fișiere în shell-ul Linux

Comanda grep din Linux este un utilitar puternic de căutare de text care permite utilizatorilor să caute în fișiere sau fluxuri de text modele specifice. Aceasta este prescurtarea de la „ global regular expression print ” (afișarea expresiei regulate globale) și acceptă căutarea după șiruri de text simple și expresii regulate mai complexe. Comanda este adesea combinată cu alte comenzi pentru a filtra și rafina ieșirea. În mod implicit, grep returnează toate liniile care conțin modelul. Totuși, oferă diverse opțiuni pentru personalizarea căutării, cum ar fi sensibilitatea la majuscule/minuscule, numărarea aparițiilor sau căutarea recursivă prin directoare. Acest lucru o face un instrument esențial pentru administratorii de sistem, dezvoltatori și oricine lucrează cu seturi mari de date într-un mediu de tip Unix.

Comanda grep este utilizată în principal pentru a căuta într-un text sau fișier linii care conțin o potrivire cu cuvintele/șirurile specificate. În mod implicit, grep afișează liniile potrivite și poate fi utilizată pentru a căuta linii de text care corespund uneia sau mai multor expresii regulate și afișează doar liniile potrivite.

Comanda grep face parte din utilitarele de bază ale oricărei distribuții Linux, deci este preinstalată în mod implicit pe AlmaLinux, CentOS, Debian, Linux Mint, Ubuntu, RHEL și RockyLinux.

Sintaxa de bază a comenzii grep

Sintaxa de bază a comenzii grep este următoarea:

grep 'word' filename
grep 'word' file1 file2 file3
grep 'string1 string2'  filename
cat otherfile | grep 'something'
command | grep 'something'
command option1 | grep 'data'
grep --color 'data' fileName

Cum se utilizează comanda grep pentru căutarea într-un fișier

În primul exemplu, voi căuta utilizatorul „tom” în fișierul passwd de Linux. Pentru a căuta utilizatorul „tom” în fișierul /etc/passwd , trebuie să introduceți următoarea comandă:

grep tom /etc/passwd

Mai jos este prezentat exemplul de ieșire:

tom:x:1000:1000:tom,,,:/home/tom:/bin/bash

Aveți opțiunea de a instrui grep să ignore majusculele/minusculele cuvintelor, adică să potrivească abc, Abc, ABC și toate combinațiile posibile cu opțiunea -i, așa cum se arată mai jos:

grep -i "tom" /etc/passwd

Utilizarea recursivă a grep-ului

Dacă aveți o grămadă de fișiere text într-o ierarhie de directoare, de exemplu, fișierele de configurare Apache din /etc/apache2/ și doriți să găsiți fișierul în care este definit un anumit text, utilizați opțiunea -r a comenzii grep pentru a efectua o căutare recursivă. Aceasta va efectua o operațiune de căutare recursivă prin fișiere pentru șirul „197.167.2.9” (așa cum se arată mai jos) în directorul /etc/apache2/ și toate subdirectoarele sale:

grep -r "domeniulmeu.com" /etc/apache2/

Alternativ, se poate utiliza următoarea comandă:

grep -R "domeniulmeu.com" /etc/apache2/

Mai jos sunt prezentate exemple de rezultate pentru o căutare similară pe un server Nginx:

grep -r "domeniulmeu.com" /etc/nginx/ 
/etc/nginx/sites-available/domeniulmeu.com.vhost: if ($http_host != "www.domeniulmeu.com") {

Aici, veți vedea rezultatul pentru domeniul_mydomain.com pe o linie distinctă, precedat de numele fișierului (de exemplu /etc/nginx/sites-available/mydomain.com.vhost) în care a fost găsit. Includerea numelor de fișiere în datele de ieșire poate fi ușor suprimată utilizând opțiunea -h (așa cum se explică mai jos): grep -h -R “mydomain.com” /etc/nginx/. Mai jos este prezentat exemplul de ieșire:

grep -r "domeniulmeu.com" /etc/nginx/ 
if ($http_host != "www.domeniulmeu.com") {

Folosirea grep pentru a căuta doar cuvinte

Când căutați „abc”, comanda grep va găsi tot felul de rezultate, de exemplu, kbcabc, abc123, aarfbc35 și multe alte combinații, fără a respecta limitele cuvintelor. Puteți obliga comanda grep să selecteze doar acele linii care conțin potriviri pentru a forma cuvinte întregi (cele care se potrivesc doar cu cuvântul abc), așa cum se arată mai jos:

grep -w "abc" fișier.txt

Exemplu:

Pentru a căuta două cuvinte diferite, trebuie să utilizați comanda egrep, așa cum se arată mai jos:

egrep -w 'cuvânt1|cuvânt2' /calea/către/fișier

Comanda grep are capacitatea de a raporta numărul de potriviri pentru un anumit model pentru fiecare fișier folosind opțiunea -c (count) (așa cum se arată mai jos):

grep -c 'word' /calea/către/fișier

În plus, utilizatorii pot folosi opțiunea „-n” care precede fiecare linie de ieșire cu numărul liniei din fișierul text din care a fost obținută (așa cum se arată mai jos):

grep -n 'root' /etc/passwd

Mai jos sunt prezentate exemplele de ieșiri:

1:root:x:0:0:root:/root:/bin/bash

Grep inversează potrivirea

Utilizatorii pot folosi opțiunea -v pentru a inversa potrivirea, ceea ce înseamnă că va afișa doar acele linii care nu conțin cuvântul dat. De exemplu, puteți afișa toate liniile care nu conțin cuvântul par utilizând următoarea comandă:

grep -v par /calea/către/fișier

Cum se listează doar numele fișierelor care corespund

Trebuie să utilizați opțiunea -l pentru a lista numele de fișiere al căror conținut menționează un anumit cuvânt, de exemplu, cuvântul „primary”, utilizând următoarea comandă:

grep -l 'primar' *.c

În cele din urmă, aveți opțiunea de a obliga grep să afișeze ieșirea în anumite culori utilizând următoarea comandă:

grep --color root /etc/passwd

Mai jos sunt prezentate exemple de rezultate:

Cum se face ca comanda grep să gestioneze mai multe modele de căutare

Pot exista situații în care doriți să căutați mai multe modele într-un anumit fișier (sau set de fișiere). În astfel de scenarii, ar trebui să utilizați opțiunea de linie de comandă „ -e” oferită de grep.

De exemplu, să presupunem că vrei să cauți cuvintele „how” (cum), „to” (să) și „forge” (falsificare) în toate fișierele text prezente în directorul de lucru curent. Iată cum poți face acest lucru:

grep -e cum se face -e la falsificarea unui fișier *.txt

Iată comanda în acțiune:

Opțiunea „ -e” din linia de comandă este utilă și în scenariile în care modelul începe cu o cratimă (-). De exemplu, dacă doriți să căutați, să zicem, „-how”, atunci următoarea comandă nu va fi utilă:

grep -how *.txt

Atunci când folosești opțiunea -e din linia de comandă, comanda înțelege exact ce încerci să cauți în acest caz:

grep -e -how *.txt

Iată ambele comenzi în acțiune:

Cum se limitează ieșirea grep la un anumit număr de linii

În cazul în care doriți să limitați ieșirea grep la un anumit număr de linii, puteți face acest lucru folosind opțiunea de linie de comandă „ -m” . De exemplu, să presupunem că doriți să căutați cuvântul „how” în testfile1.txt, care conține următoarele linii:

Dar cerința este ca grep să oprească căutarea după ce au fost găsite 3 linii care conțin modelul căutat. Așadar, pentru a face acest lucru, puteți rula următoarea comandă:

grep "how" -m3 fișiertest1.txt

Iată comanda în acțiune:

Trecând mai departe, iată ce spune pagina de manual a comenzii:

Dacă intrarea este o intrare standard dintr-un fișier obișnuit și se generează NUM linii corespondente, grep asigură că intrarea standard este poziționată imediat după ultima linie corespondentă înainte de ieșire, indiferent de prezența liniilor de context la final. Acest lucru permite unui proces apelant să reia o căutare.

De exemplu, dacă aveți un script bash care are o buclă și doriți să obțineți o potrivire per iterație a buclei, atunci utilizarea  „grep -m1” va face ceea ce este necesar.

Cum se face ca grep să obțină modele dintr-un fișier

Dacă doriți, puteți face ca comanda grep să obțină modele dintr-un fișier. Opțiunea -f din linia de comandă a instrumentului vă permite să faceți acest lucru.

De exemplu, să presupunem că vrei să cauți în toate fișierele .txt din directorul curent cuvintele „cum” și „să”, dar vrei să furnizezi aceste șiruri de intrare printr-un fișier numit, să zicem, „input”, iată cum poți face acest lucru:

grep -f input *.txt

Iată comanda în acțiune:

Iar modelul pe care vrei să-l cauți este „ce mai faci?”. Așadar, pentru a te asigura că grep afișează doar liniile care corespund complet acestui model, folosește-l în felul următor:

grep -x „how are you?” *.txt

Iată comanda în acțiune:

Cum să forțezi grep să nu afișeze nimic în ieșire

Pot exista situații în care nu este nevoie de comanda grep pentru a genera nimic în rezultat. În schimb, doriți doar să știți dacă a fost găsită o potrivire pe baza stării de ieșire a comenzii. Acest lucru se poate realiza folosind opțiunea -q din linia de comandă.

În timp ce opțiunea -q dezactivează ieșirea, starea de ieșire a instrumentului poate fi confirmată cu comanda „echo $?”. În cazul grep, comanda se închide cu starea „0” atunci când are succes (adică a fost găsită o potrivire), în timp ce se închide cu starea „1” atunci când nu a fost găsită nicio potrivire.

Următoarea captură de ecran prezintă atât scenariile de succes, cât și cele nereușite:

Cum se face ca grep să afișeze numele fișierelor care nu conțin modelul de căutare

În mod implicit, comanda grep afișează numele fișierelor care conțin modelul de căutare (precum și liniile potrivite). Acest lucru este destul de logic, deoarece asta se așteaptă de la acest instrument. Cu toate acestea, pot exista cazuri în care cerința ar putea fi obținerea numelor acelor fișiere care nu conțin modelul căutat.

Acest lucru este posibil și cu grep – opțiunea -L vă permite să faceți acest lucru. De exemplu, pentru a găsi toate acele fișiere text din directorul curent care nu conțin cuvântul „how”, puteți rula următoarea comandă:

grep -L "how" *.txt

Iată comanda în acțiune:

Cum se suprimă mesajele de eroare produse de grep

Dacă doriți, puteți forța grep să dezactiveze orice mesaje de eroare afișate în ieșire. Acest lucru se poate face folosind opțiunea -s din linia de comandă. De exemplu, luați în considerare următorul scenariu în care grep produce o eroare/avertisment legat de directorul pe care îl întâlnește:

Deci, în acest tip de scenariu, opțiunea -s din linia de comandă ajută. Vedeți mai jos.

Deci puteți vedea că eroarea/avertismentul a fost dezactivat.

Cum se face grep să caute recursiv în directoare

După cum reiese din exemplul folosit la punctul anterior, comanda grep nu efectuează o căutare recursivă în mod implicit. Pentru a vă asigura că căutarea grep este recursivă, utilizați opțiunea -d din linia de comandă și transmiteți-i valoarea „recurse”.

grep -d recursiv "how" *

Nota 1 : Mesajul de eroare/avertisment legat de director despre care am discutat la punctul anterior poate fi, de asemenea, dezactivat folosind opțiunea —d — tot ce trebuie să faceți este să îi transmiteți valoarea „skip”.

Nota 2 : Folosiți opțiunea „–exclude-dir=[DIR]” pentru a exclude directoarele care corespund modelului DIR din căutările recursive.

Cum se face ca grep să termine numele de fișiere cu caracterul NULL

După cum am discutat deja, opțiunea -l din linia de comandă a comenzii grep este utilizată atunci când doriți ca instrumentul să afișeze doar numele fișierelor în ieșire. De exemplu:

Însă, după cum probabil știți deja, caracterul newline poate face parte și dintr-un nume de fișier. Așadar, atunci când se lucrează cu cazuri în care numele fișierelor conțin un newline și sunt separate/terminate prin newline, devine dificil să se lucreze la ieșirea grep (mai ales când se accesează ieșirea printr-un script).

Ar fi bine dacă caracterul de separare/terminare nu ar fi un nou rând. Ei bine, te vei bucura să afli că grep oferă o opțiune -Z în linia de comandă care asigură că numele fișierelor sunt urmate de un caracter NULL și nu de un nou rând.

Deci, în cazul nostru, comanda devine:

grep -lZ "how" *.txt

Iată cum am confirmat prezența caracterului NULL:

Mai jos este o opțiune conexă din linia de comandă pe care ar trebui să o cunoașteți:

-z, --null-data
 Tratează intrarea ca un set de linii, fiecare terminată de un octet zero (caracterul ASCII NUL) în loc de o linie nouă. La fel ca opțiunile -Z sau --null, această opțiune poate fi utilizată cu comenzi precum sort -z pentru a procesa nume de fișiere arbitrare.

Cum se utilizează GREP pentru a găsi erori în fișierele jurnal

Grep este briceagul elvețian al administratorului Linux atunci când vine vorba de depanarea erorilor din servicii. Majoritatea serviciilor Linux au fișiere jurnal în care raportează erorile. Aceste fișiere jurnal pot fi uriașe, iar grep este o comandă versatilă și rapidă pentru a căuta, de exemplu, adresa IP a unui sistem care se conectează, un șir de erori sau adresa de e-mail a unui utilizator de e-mail afectat în fișierul mail.log.

Exemple:

Căutați conexiuni legate de o anumită adresă de e-mail. Aici, „ user@domain.tld ” se află în fișierul mail.log al serverului.

grep user@domain.tld /var/log/mail.log

Rezultat:

22 aug. 09:45:10 mail dovecot: pop3-login: Autentificare: user=< user@domain.tld >, method=PLAIN, rip=192.168.0.112, lip=78.46.229.46, mpid=17596, TLS, session=<3uoa5ffQovld3Uep> 
22 aug. 09:45:10 mail dovecot: pop3( user@domain.tld )<17596><3uoa5ffQovld3Uep>: Deconectat: Deconectat top=0/0, retr=1/6647, del=1/1, size=6630 
22 aug. 09:45:10 mail dovecot: pop3-login: Autentificare: user=< user@domain.tld >, method=PLAIN, rip=192.168.0.112, lip=78.46.229.46, mpid=17673, TLS, session=<fIIx6PfQkuBd3Uep> 
22 aug. 09:45:10 mail dovecot: pop3( user@domain.tld )<17673><fIIx6PfQkuBd3Uep>: Deconectat: Deconectat top=0/0, retr=0/0, del=0/0, size=0 
22 aug. 09:45:10 mail dovecot: pop3-login: Autentificare: user=< user@domain.tld >, method=PLAIN, rip=192.168.0.112, lip=78.46.229.46, mpid=17868, TLS, session=<bd5L7ffQPsld3Uep> 
22 aug. 09:45:10 mail dovecot: pop3( user@domain.tld )<17868><bd5L7ffQPsld3Uep>: Deconectat: Deconectat top=0/0, retr=0/0, del=0/0, size=0 
22 aug. 09:45:10 mail dovecot: pop3-login: Autentificare: user=< user@domain.tld >, method=PLAIN, rip=192.168.0.112, lip=78.46.229.46, mpid=17964, TLS, session=<sbpn7vfQevpd3Uep> 
22 aug. 09:45:10 mail dovecot: pop3( user@domain.tld )<17964><sbpn7vfQevpd3Uep>: Deconectat: Deconectat top=0/0, retr=0/0, del=0/0, size=0 
22 aug. 09:45:10 mail postfix/smtpd[6932]: NOQUEUE: respingere: RCPT de la necunoscut[1.2.3.4]: 504 5.5.2 <1.2.3.4>: Comanda Helo respinsă: este necesar un nume de gazdă complet calificat; from=< maillist@mailserver.com > to=< user@domain.tld > proto=ESMTP helo=<1.2.3.4>

Pentru a monitoriza continuu un fișier jurnal pentru conexiunile pentru această adresă de e-mail, combinați comenzile tail și grep astfel:

tail -f /var/log/mail.log | grep utilizator@domeniu.tld

Pentru a ieși din funcția de ceas, apăsați tastele [strg] + c.

[mai mult...]

Cum se instalează Joomla cu Nginx pe serverul Ubuntu 24.04

Joomla este un sistem de management al conținutului bazat pe PHP. Pentru a-l instala, trebuie să instalați PHP pe sistemul dvs. În această secțiune, veți instala stiva LEMP (Linux, Nginx, MariaDB și PHP-FPM) ca dependențe pentru Joomla.

Mai întâi, rulați comanda de mai jos pentru a vă actualiza indexul pachetului Ubuntu.

sudo apt update


Instalați dependențele stivei LEMP cu comanda de mai jos. Introdu „ Y ” pentru a confirma instalarea.

sudo apt install nginx mariadb-server php-fpm php-curl php-common php-json php-intl php-xml php-gd php-mysql php-imagick php-mbstring php-zip

După finalizarea instalării, verificați starea serviciului Nginx cu următoarele:

sudo systemctl enable nginx 
sudo systemctl start nginx 
sudo systemctl status nginx

Puteți vedea că serviciul Nginx rulează.

Acum verificați serviciul MariaDB pentru a vă asigura că serviciul rulează și este activat cu comanda de mai jos:

sudo systemctl enable mariadb 
sudo systemctl start mariadb
sudo systemctl status mariadb

În cele din urmă, rulați următoarea comandă pentru a verifica serviciul PHP-FPM. PHP-FPM ar trebui să ruleze în mod implicit pe fișierul sock.

sudo systemctl enable php8.3-fpm 
sudo systemctl start php8.3-fpm 
sudo systemctl status php8.3-fpm

Configurarea PHP-FPM

Acum că stiva LEMP este instalată, veți configura instalarea PHP-FPM și veți modifica unele configurații implicite după cum este necesar pentru Joomla.

Deschideți configurația PHP-FPM „ /etc/php/8.3/fpm/php.ini ” cu editorul „ nano ”.

sudo nano /etc/php/8.3/fpm/php.ini

Modificați configurația implicită cu următoarele:

memory_limit=512M 
upload_max_filesize=64M 
post_max_size=64M 
max_execution_time=120 
output_buffering = Off 
extension=intl

Salvați fișierul și ieșiți din editor.

Acum reporniți serviciul PHP-FPM pentru a aplica modificările.

sudo systemctl restart php8.3-fpm

În cele din urmă, puteți verifica fișierul PHP sock pentru serviciul PHP-FPM cu comanda de mai jos.

ss -pl | grep php

Puteți vedea mai jos fișierul sock pentru PHP-FPM se află la „ /var/run/php/php8.3-fpm.sock ”.

Configurarea serverului MariaDB

În această secțiune, veți securiza instalarea serverului MariaDB, apoi veți crea o nouă bază de date și un utilizator pentru Joomla. Veți folosi „mariadb-secure-installation” pentru a securiza serverul MariaDB și apoi prin clientul „mariadb” pentru a crea o nouă bază de date și utilizator.

Pentru a securiza serverul MariaDB, rulați comanda „ mariab-secure-installation ” de mai jos.

sudo mariadb-secure-installation

Acum vi se va cere să configurați serverul MariaDB cu următoarele:

  • Pentru instalarea implicită a serverului MariaDB fără o parolă root, apăsați ENTER când sunteți întrebat despre parolă.
  • Autentificarea locală pentru utilizatorii root MariaDB este securizată în mod implicit, introduceți „n” când vi se cere să schimbați metoda de autentificare în „unix_socket”.
  • Introduceți „Y” pentru a crea o nouă parolă root MariaDB. Apoi, introduceți parola puternică pentru utilizatorul dvs. root MariaDB și repetați.
  • Când vi se cere să dezactivați autentificarea de la distanță pentru utilizatorul root MariaDB, introduceți „Y” pentru a fi de acord.
  • Instalarea implicită a serverului MariaDB vine cu baza de date „test” și permite unui utilizator anonim să o acceseze.
  • Introduceți „Y” pentru ambele setări pentru a elimina „testul” implicit al bazei de date și a elimina privilegiul anonim.
  • În cele din urmă, introduceți „Y” pentru a confirma privilegiile de reîncărcare a tabelului.

Odată ce MariaDB este securizat, veți crea o nouă bază de date și un utilizator pentru Joomla.

Conectați-vă la serverul MariaDB cu comanda „ mariadb ” de mai jos. Introduceți parola de root MariaDB când vi se solicită.

sudo mariadb -u root -p

Acum rulați următoarele interogări pentru a crea o nouă bază de date „ joomladb ” și un nou utilizator „ joomla ” cu parola „ p4ssword ”.

CREATE DATABASE joomladb;
CREATE USER joomla@localhost IDENTIFIED BY 'p4ssword';
GRANT ALL PRIVILEGES ON joomladb.* TO joomla@localhost;
FLUSH PRIVILEGES;


Apoi, executați interogarea de mai jos pentru a verifica privilegiile utilizatorului „ joomla ”. Veți vedea că utilizatorul „ joomla ” poate accesa baza de date „ joomladb ”.

SHOW GRANTS FOR joomla@localhost;

În cele din urmă, tastați „ quit ” pentru a ieși de pe serverul MariaDB.

Descărcarea codului sursă Joomla

În acest moment, ați instalat și configurat dependențe pentru Joomla. Acum veți descărca codul sursă Joomla și veți configura directorul document-root/webroot pentru instalarea Joomla. Accesați directorul „/var/www” și descărcați codul sursă Joomla cu comanda „wget” de mai jos. Verificați pagina de descărcare Joomla și luați linkul pentru cea mai recentă versiune.

cd /var/www/ 
wget https://downloads.joomla.org/cms/joomla5/5-1-4/Joomla_5-1-4-Stable-Full_Package.zip

Acum rulați comanda „unzip” de mai jos pentru a extrage codul sursă Joomla în directorul „joomla”.

unzip Joomla_5-1-4-Stable-Full_Package.zip -d joomla

În cele din urmă, rulați comanda „chmod” de mai jos pentru a schimba proprietatea directorului „/var/www/joomla” la utilizatorul „www-data”.

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

Configurarea blocului serverului Nginx

Acum veți crea o nouă configurație de bloc de server Nginx pentru rularea Joomla. Așa că asigurați-vă că aveți numele de domeniu pregătit și că ați indicat adresa IP a serverului.

Creați un nou fișier server Nginx „ /etc/nginx/sites-available/joomla ” cu următorul editor „ nano ”.

sudo nano /etc/nginx/sites-available/joomla

Introduceți configurația de mai jos și modificați opțiunea „ server_name ” cu numele domeniului dumneavoastră.

server {
listen 80;
server_name howtoforge.local;
server_name_in_redirect off;

access_log /var/log/nginx/localhost.access_log;
error_log /var/log/nginx/localhost.error_log info;

root /var/www/joomla;
index index.php index.html index.htm default.html default.htm;

# Support API
location /api/ {
try_files $uri $uri/ /api/index.php?$args;
}

# Support Clean (aka Search Engine Friendly) URLs
location / {
try_files $uri $uri/ /index.php?$args;
}

# add global x-content-type-options header
add_header X-Content-Type-Options nosniff;

# deny running scripts inside writable directories
location ~* /(images|cache|media|logs|tmp)/.*\.(php|pl|py|jsp|asp|sh|cgi)$ {
return 403;
error_page 403 /403_error.html;
}

location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /etc/nginx/fastcgi.conf;
}

# caching of files
location ~* \.(ico|pdf|flv)$ {
expires 1y;
}

location ~* \.(js|css|png|jpg|jpeg|gif|swf|xml|txt)$ {
expires 14d;
}

}

Salvați fișierul și ieșiți din editor.

Acum rulați comanda de mai jos pentru a activa blocul de server „ joomla ” și pentru a verifica configurația dvs. Nginx. Dacă aveți setări Nginx adecvate, veți vedea o ieșire „ Sintaxa este OK ”.

sudo ln -s /etc/nginx/sites-available/joomla /etc/nginx/sites-enabled/ 
sudo nginx -t

În cele din urmă, rulați comanda „systemctl” de mai jos pentru a reporni serviciul Nginx și a aplica modificările.

sudo systemctl restart nginx


Securizarea Joomla cu HTTPS

În acest ghid, veți securiza Joomla cu HTTPS. Dacă utilizați domeniul public, puteți securiza Joomla prin certificate SSL/TLS prin Certbot și Letsencerypt.

Instalați „Certbot” și pluginul Certbot Nginx cu comanda „apt” de mai jos. Introduceți „Y” pentru a confirma instalarea.

sudo apt install certbot python3-certbot-nginx

După finalizarea instalării, rulați următoarea comandă „certbot” pentru a genera certificate SSL/TLS și a vă asigura instalarea Joomla cu HTTPS. Asigurați-vă că schimbați numele domeniului și adresa de e-mail cu informațiile dvs.

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email kyrie@howtoforge.local -d howtoforge.local

Când ați terminat, instalarea dvs. Joomla este securizată cu HTTPS prin certificate SSL/TLS de la Letsencrypt.

Instalarea Joomla

Deschideți browserul web și vizitați numele de domeniu Joomla, cum ar fi https://askit.local/ . Veți vedea asistentul de instalare Joomla.

Selectați limba implicită și introduceți numele site-ului.


Introduceți noul utilizator de administrator, adresa de e-mail și parola pentru Joomla.

Introduceți detaliile despre baza de date MariaDB și despre utilizator, apoi faceți click pe „ Instalare Joomla ” pentru a continua cu instalarea.

După finalizarea instalării, faceți clic pe „ Deschidere site ” pentru a deschide pagina de pornire implicită sau pe „ Deschidere administrator ” pentru a accesa tabloul de bord de administrare Joomla.

Pentru pagina de pornire Joomla implicită, veți vedea următoarele.

Acum introduceți utilizatorul și parola de administrator și faceți click pe „ Autentificare”.

Dacă aveți utilizatorul și parola corecte, veți vedea următorul tablou de bord de administrare Joomla.

[mai mult...]

Cum se instalează Craft CMS pe Rocky Linux 9

Cerințe preliminare

  • Un server care rulează Rocky Linux 9 cu minim 1 GB RAM.
  • Un utilizator non-root cu privilegii sudo.
  • Un nume de domeniu complet calificat (FQDN) ca craftcms.example.comindicarea către serverul dvs.
  • Un cont SMTP cu un serviciu de e-mail precum Amazon SES sau Mailgun.
  • Totul este actualizat.
    $ sudo dnf update
    
  • Sunt necesare câteva pachete esențiale pentru ca tutorialul și Craft CMS să ruleze. Unele dintre acestea vor fi deja pe serverul dvs.
    $ sudo dnf install wget curl nano unzip yum-utils policycoreutils-python-utils -y
    

Pasul 1 – Configurați firewall

Primul pas este configurarea firewall-ului. Rocky Linux folosește Firewalld Firewall. Verificați starea firewall-ului.

$ sudo firewall-cmd --state
funcţionare

Firewall-ul funcționează cu diferite zone, iar zona publică este cea implicită pe care o vom folosi. Listați toate serviciile și porturile active pe firewall.

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

Ar trebui să arate următoarea ieșire.

cockpit dhcpv6-client ssh

Permiteți porturile HTTP și HTTPS.

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

Verificați din nou starea paravanului de protecție.

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

Ar trebui să vedeți o ieșire similară.

cockpit dhcpv6-client http https ssh

Reîncărcați paravanul de protecție pentru a activa modificările.

$ sudo firewall-cmd --reload

Pasul 2 – Instalați Nginx

Rocky Linux 9 este livrat cu o versiune mai veche de Nginx. Trebuie să utilizați depozitul oficial Nginx pentru a instala cea mai recentă versiune.

Creați și deschideți fișierul /etc/yum.repos.d/nginx.repopentru editare.

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

Lipiți următorul cod în el.

[nginx-stable]
nume=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
activat=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=adevărat

[nginx-mainline]
nume=nginx repository principal
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
activat=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=adevărat

După ce ați terminat, salvați fișierul apăsând Ctrl + X și introducând Y când vi se solicită.

Instalați Nginx.

$ sudo dnf install nginx -y

Verificați instalarea.

$ nginx -v
Versiunea nginx: nginx/1.24.0

Activați și porniți serviciul server Nginx.

$ sudo systemctl enable nginx --now

Verificați starea serviciului.

$ sudo systemctl status nginx
? nginx.service - nginx - server web de înaltă performanță
     Încărcat: încărcat (/usr/lib/systemd/system/nginx.service; activat; presetat: dezactivat)
     Activ: activ (în rulare) din Luni 2023-12-04 14:01:19 UTC; acum 3s
       Documente: http://nginx.org/en/docs/
    Proces: 59396 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exit, status=0/SUCCESS)
   PID principal: 59397 (nginx)
      Sarcini: 2 (limită: 10866)
     Memorie: 1,9 M
        CPU: 10 ms
     CGroup: /system.slice/nginx.service
             ??59397 „nginx: proces principal /usr/sbin/nginx -c /etc/nginx/nginx.conf”
             ??59398 „nginx: proces de lucru”

Pasul 3 – Instalați PHP și extensii

Rocky Linux 9 este livrat implicit cu PHP 8.1. Pentru a rămâne mereu pe cea mai recentă versiune de PHP sau dacă doriți să instalați mai multe versiuni de PHP, trebuie să folosim depozitul REMI.

Primul pas este să luați depozitul Epel.

$ sudo dnf install epel-release -y

Apoi, instalați depozitul Remi.

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

Verificați fluxurile PHP disponibile.

$ dnf module list php -y
 Rezumatul profilurilor fluxului de nume php 8.1 comun [d], devel, limbaj de scripting PHP minim  Depozitul modular al lui Remi pentru Enterprise Linux 9 - x86_64 Rezumatul profilurilor fluxului de nume php remi-7.4 comun [d], devel, limbaj de scripting PHP minim php remi-8.0 comun [d], devel, limbaj de scripting PHP minim php remi-8.1 comun [d], devel, limbaj de scripting PHP minim php remi-8.2 comun [d], devel, limbaj de scripting PHP minim php remi-8.3 comun [d], devel, limbaj de scripting PHP minim  Sugestie: [d]efectuat, [activat], [x]dezactivat, [instalat]

Versiunea implicită este 8.1. La momentul scrierii acestui tutorial, Craft CMS este compatibil cu PHP 8.2. Prin urmare, activați depozitul PHP 8.2 al lui Remi.

$ sudo dnf module reset php -y
$ sudo dnf module enable php:remi-8.2

Instalați PHP și extensiile sale solicitate de Craft CMS.

$ sudo dnf install php php-cli php-common php-json php-gmp php-fpm php-xmlrpc php-bcmath php-imagick php-curl php-zip php-gd php-mysql php-xml php-mbstring php-xmlrpc php-pintlql

Verificați versiunea de PHP instalată.

$ php --version
PHP 8.2.13 (cli) (construit: 21 noiembrie 2023 09:55:59) (NTS gcc x86_64)
Drepturi de autor (c) Grupul PHP
Zend Engine v4.2.13, Copyright (c) Zend Technologies
    cu Zend OPcache v8.2.13, Copyright (c), de Zend Technologies

Activați și porniți serviciul PHP-FPM.

$ sudo systemctl enable php-fpm --now

Verificați starea serviciului PHP.

$ sudo systemctl status php-fpm
? php-fpm.service - Managerul de procese PHP FastCGI
     Încărcat: încărcat (/usr/lib/systemd/system/php-fpm.service; activat; presetat: dezactivat)
     Activ: activ (în rulare) din Luni 2023-12-04 14:05:58 UTC; acum 6 secunde
   PID principal: 61410 (php-fpm)
     Stare: „Pregătit pentru a gestiona conexiunile”
      Sarcini: 6 (limită: 10866)
     Memorie: 16,6 M
        CPU: 96 ms
     CGroup: /system.slice/php-fpm.service
             ??61410 „php-fpm: proces principal (/etc/php-fpm.conf)”
             ??61411 "php-fpm: pool www"
             ??61412 "php-fpm: pool www"
             ??61413 "php-fpm: pool www"
             ??61414 "php-fpm: pool www"
             ??61415 "php-fpm: pool www"

Pasul 4 – Configurați PHP-FPM

Deschis php.inipentru editare.

$ sudo nano /etc/php.ini

Pentru a seta dimensiunile de încărcare a fișierelor, modificați valorile variabilelor upload_max_filesizeși post_max_size. Această valoare decide dimensiunea fișierului pe care îl puteți încărca în Craft CMS. Pentru scopurile noastre, îl setăm la 128 MB. Îl poți seta după bunul plac.

$ sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 128M/' /etc/php.ini
$ sudo sed -i 's/post_max_size = 8M/post_max_size = 128M/' /etc/php.ini

Configurați limita de memorie PHP în funcție de resursele și cerințele serverului dvs.

$ sudo sed -i 's/memory_limit = 128M/memory_limit = 256M/' /etc/php.ini

Deschideți fișierul /etc/php-fpm.d/www.conf.

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

Trebuie să setăm utilizatorul/grupul de procese PHP Unix la nginx . Găsiți liniile user=www-datași group=www-dataîn fișier și schimbați-le în nginx.

...
; Utilizator Unix/grup de procese
; Notă: Utilizatorul este obligatoriu. Dacă grupul nu este setat, grupul implicit al utilizatorului
; va fi folosit.
; RPM: utilizator apache ales să ofere acces la aceleași directoare ca httpd
utilizator = nginx
; RPM: Păstrați un grup permis să scrie în directorul jurnalului.
grup = nginx
...

Găsiți liniile listen.owner = nobodylisten.group = nobodylisten.mode = 0660din fișier și modificați-le după cum urmează după ce le-ați decomentat.

; Setați permisiunile pentru socket Unix, dacă este folosit unul. În Linux, citiți/scrieți
; permisiunile trebuie setate pentru a permite conexiuni de la un server web. Multe
; Sistemele derivate din BSD permit conexiuni indiferent de permisiuni. Proprietarul
; și grupul poate fi specificat fie prin nume, fie prin ID-urile lor numerice.
; Valori implicite: utilizatorul și grupul sunt setate ca utilizator care rulează
; modul este setat la 0660
listen.owner = nginx
ascultă.grup = nginx
listen.mode = 0660

Salvați fișierul apăsând Ctrl + X și introducând Y când vi se solicită.

Reporniți procesul PHP-fpm. Asigurați-vă că aveți instalat Nginx înainte de a reporni serviciul PHP, altfel acesta va eșua, deoarece nu va putea găsi nginxgrupul.

$ sudo systemctl restart php-fpm

Schimbați grupul directorului de sesiuni PHP în Nginx.

$ sudo chgrp -R nginx /var/lib/php/session

Pasul 5 – Instalați Composer

Composer acționează ca un manager de dependență pentru PHP. Este, de asemenea, managerul de dependență al cadrului PHP Laravel, care este ceea ce alimentează Craft CMS.

Descărcați scriptul de instalare Composer.

$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

Verificați programul de instalare descărcat.

$ php -r "if (hash_file('sha384', 'composer-setup.php') === 'e21205b207c3ff031906575712edab6f13eb0b361f2085f1f1237b7126d785e826a450292b6cfd1d64d92e6563bbde02') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"

Veți primi următorul rezultat.

Installer verified

Rulați scriptul de instalare pentru a descărca cea mai recentă versiune de Composer.

$ php composer-setup.php

Eliminați scriptul de instalare.

$ php -r "unlink('composer-setup.php');"

Mutați fișierul binar descărcat în /usr/local/bindirector.

$ sudo mv composer.phar /usr/local/bin/composer

Confirmați instalarea.

$ composer --version
Composer version 2.6.5 2023-10-06 10:11:52

Pasul 6 – Instalați și configurați PostgreSQL

Rocky Linux 9 este livrat implicit cu PostgreSQL 13. Vom folosi PostgreSQL 16 în schimb din depozitul său oficial.

Instalați depozitul RPM PostgreSQL.

$ sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm

Dezactivați modulul PostgreSQL încorporat.

$ sudo dnf -qy module disable postgresql

Acum, puteți instala PostgreSQL folosind comanda de mai jos.

$ sudo dnf install -y postgresql16-server postgresql16-contrib

Pachetul postgresql-contribconține câteva utilități suplimentare.

Verificați versiunea.

$ psql --version
psql (PostgreSQL) 16.1

Inițializați baza de date PostgreSQL.

$ sudo /usr/pgsql-16/bin/postgresql-16-setup initdb
Se inițializează baza de date... OK

Activați serviciul PostgreSQL.

$ sudo systemctl enable postgresql-16

Porniți serviciul PostgreSQL.

$ sudo systemctl start postgresql-16

Verificați starea serviciului PostgreSQL.

$ sudo systemctl status postgresql-16
? postgresql-16.service - Server de baze de date PostgreSQL 16
     Încărcat: încărcat (/usr/lib/systemd/system/postgresql-16.service; activat; prestabilit: dezactivat)
     Activ: activ (în rulare) din Luni 2023-12-04 22:28:34 UTC; acum 2 secunde
       Documente: https://www.postgresql.org/docs/16/static/
    Proces: 72143 ExecStartPre=/usr/pgsql-16/bin/postgresql-16-check-db-dir ${PGDATA} (code=exit, status=0/SUCCESS)
   PID principal: 72148 (postgres)
      Sarcini: 7 (limită: 10866)
     Memorie: 17,4 M
        CPU: 45 ms
     CGroup: /system.slice/postgresql-16.service
             ??72148 /usr/pgsql-16/bin/postgres -D /var/lib/pgsql/16/data/
             ??72149 "postgres: logger"
             ??72150 "postgres: checkpointer"
             ??72151 "postgres: scriitor de fundal"
             ??72153 "postgres: walwriter"
             ??72154 "postgres: lansatorul de autovacuum"
             ??72155 „postgres: lansatorul de replicare logică”

04 decembrie 22:28:33 craftcms.nspeaks.com systemd[1]: Se pornește serverul de baze de date PostgreSQL 16...
Dec 04 22:28:33 craftcms.nspeaks.com postgres[72148]: 2023-12-04 22:28:33.999 UTC [72148] LOG: redirecționarea ieșirii jurnalului către procesul de colectare a jurnalului
Dec 04 22:28:33 craftcms.nspeaks.com postgres[72148]: 2023-12-04 22:28:33.999 UTC [72148] SFAT: Ieșirea viitoare a jurnalului va apărea în directorul „jurnal”.
04 decembrie 22:28:34 craftcms.nspeaks.com systemd[1]: A pornit serverul de baze de date PostgreSQL 16.

Puteți vedea că serviciul este activat și rulează implicit.

Lansați shell-ul PostgreSQL.

$ sudo -i -u postgres psql

Creați baza de date Craft CMS.

postgres=# CREAȚI BAZĂ DE DATE craftcms;

Creați utilizatorul Craft CMS și alegeți o parolă puternică.

postgres-# CREAȚI UTILIZATOR craftuser CU PAROLA 'Parola_dvs';

Schimbați proprietarul bazei de date în utilizatorul Craft CMS.

postgres-# ALTER DATABASE craftcms OWNER TO craftuser;

Acordați toate privilegiile din baza de date utilizatorului Craft CMS.

postgres-# ACORDĂ TOATE PRIVILEGIILE PE BAZĂ DE DATE craftcms CĂTRE craftuser;

Ieși din shell.

postgres-# \q

Verificați dacă acreditările dvs. funcționează.

$ psql --username craftuser --parola --host localhost craftcms
Password:
psql (16.1)
Tastați „help” pentru ajutor.

craftcms =>

Ieșiți din shell tastând \q.

Pasul 7 – Instalați și configurați Redis

Rocky Linux 9 este livrat implicit cu Redis 6.2. Cu toate acestea, vom folosi Redis 7.0 pe care îl vom instala folosind Remi Repository.

Deoarece am instalat depozitul Remi în timpul instalării PHP, putem sări peste acea parte. Listați toate modulele Redis disponibile.

$ sudo dnf module list redis
Rocky Linux 9 - AppStream
Rezumatul profilurilor fluxului de nume
redis 7 comun [d] baza de date persistentă cheie-valoare Redis

Depozitul modular al lui Remi pentru Enterprise Linux 9 - x86_64
Rezumatul profilurilor fluxului de nume
redis remi-5.0 common [d] baza de date persistentă cheie-valoare Redis
redis remi-6.0 common [d] baza de date persistentă cheie-valoare Redis
redis remi-6.2 common [d] baza de date persistentă cheie-valoare Redis
redis remi-7.0 common [d] baza de date persistentă cheie-valoare Redis
redis remi-7.2 common [d] baza de date persistentă cheie-valoare Redis

Sugestie: [d]efectuat, [activat], [x]dezactivat, [instalat]

Activați cel mai recent modul Redis 7.2.

$ sudo dnf module enable -y redis:remi-7.2

Instalați Redis.

$ sudo dnf install redis

Verificați versiunea.

$ redis-server --version
Server Redis v=7.2.3 sha=00000000:0 malloc=jemalloc-5.3.0 biți=64 build=7bd3173e4e30c3e4

Activați serviciul Redis.

$ sudo systemctl enable redis

Porniți serviciul Redis.

$ sudo systemctl start redis

Verificați starea serviciului.

$ sudo systemctl status redis
? redis.service - baza de date persistentă cheie-valoare Redis
     Încărcat: încărcat (/usr/lib/systemd/system/redis.service; activat; presetat: dezactivat)
    Drop-in: /etc/systemd/system/redis.service.d
             ??limit.conf
     Activ: activ (în rulare) din Luni 2023-12-04 22:36:25 UTC; acum 1 min 32s
   PID principal: 72877 (server redis)
     Stare: „Pregătit să accepte conexiuni”
      Sarcini: 5 (limită: 10866)
     Memorie: 7,5 M
        CPU: 176 ms
     CGroup: /system.slice/redis.service
             ??72877 „/usr/bin/redis-server 127.0.0.1:6379”

04 decembrie 22:36:25 craftcms.nspeaks.com systemd[1]: Se pornește baza de date persistentă cheie-valoare Redis...
04 decembrie 22:36:25 craftcms.nspeaks.com systemd[1]: a început baza de date persistentă cheie-valoare Redis.

Următorul pas este să adăugați autentificare la serverul Redis. Începând cu Redis v6.0, cea mai bună modalitate de a adăuga autentificare este utilizarea ACL (liste de control acces). Deschideți /etc/redis/redis.conffișierul pentru editare.

$ sudo nano /etc/redis/redis.conf

Găsiți # aclfile /etc/redis/users.aclintrarea de linie și decomentați-o eliminând simbolul hash ( #) din fața ei.

aclfile /etc/redis/users.acl

Salvați fișierul apăsând Ctrl + X și introducând Y când vi se solicită.

Apoi, creați și deschideți /etc/redis/users.aclfișierul pentru editare.

$ sudo nano /etc/redis/users.acl

Adăugați următoarea linie la acesta.

user navjot pe +@all ~* >parola ta

Salvați fișierul apăsând Ctrl + X și introducând Y când vi se solicită.

Reporniți serverul Redis pentru a implementa modificarea.

$ sudo systemctl restart redis

Deschideți shell-ul Redis.

$ redis-cli

Utilizați PINGcomanda. Va da o eroare de autentificare.

127.0.0.1:6379> PING
(eroare) NOAUTH Este necesară autentificarea.

Utilizați AUTHcomanda pentru a vă autentifica.

127.0.0.1:6379> AUTH navjot parola ta
Bine

Folosiți PINGcomanda din nou.

127.0.0.1:6379> PING
Bine

Ieși din shell.

127.0.0.1:6379> ieșire

De asemenea, va trebui să instalați extensia PHP Redis.

$ sudo apt install php-redis

Pasul 8 – Instalați Craft CMS

Înainte de a instala Craft CMS, puteți verifica dacă îndepliniți toate cerințele de server pentru a-l rula folosind următoarea comandă.

$ curl -Lsf https://raw.githubusercontent.com/craftcms/server-check/HEAD/check.sh | bash

Veți obține următoarea ieșire.

Se execută verificarea serverului Craft...

Craft CMS Verificator de cerințe

Acest script verifică dacă configurația serverului dvs. web îndeplinește cerințele pentru rularea unei instalări Craft CMS.
Verifică dacă serverul rulează versiunea corectă de PHP, dacă au fost încărcate extensii PHP adecvate,
și dacă setările fișierului php.ini sunt corecte.

Rezultate:
--------

PHP 8.2+: OK

Extensia BCMath: OK

extensia ctype: OK

Extensia cURL: OK

Extensia DOM: OK

Extensia informațiilor fișierului: OK

Extensia GD sau extensia ImageMagick: OK

extensia iconv: OK

Extensie interna: OK

Extensie JSON: OK

Extensie șir multiocteți (cu supraîncărcarea funcției dezactivată): OK

Extensia OPcache (cu save_comments): OK

Extensia OpenSSL: OK

Extensie PCRE (cu suport UTF-8): OK

Extensie PDO: OK

Extensie de reflecție: OK

Extensie SPL: OK

Extensie zip: OK

ignore_user_abort(): OK

password_hash(): OK

proc_close(): OK

proc_get_status(): OK

proc_open(): OK

proc_terminate(): OK

allow_url_fopen: OK

apeluri ini_set: OK

Limită memorie: OK

-------------------------------------------
Erori: 0 Avertismente: 0 Total verificări: 27

Odată ce totul este în regulă, puteți continua. Creați directorul rădăcină web.

$ sudo mkdir /var/www/html/craftcms -p

Setați utilizatorul conectat în prezent ca proprietar al acestui director.

$ sudo chown -R $USER:$USER /var/www/html/craftcms

Comutați la director.

$ cd /var/www/html/craftcms

Descărcați și instalați Craft CMS folosind Composer. Punctul ( .) de la sfârșitul comenzii înseamnă că instalarea trebuie efectuată în directorul curent.

$ compozitor create-project craftcms/craft .

În timpul instalării, vi se vor cere mai multe detalii privind baza de date și contul de administrator. URL-ul site-ului și limba acestuia, după cum se arată mai jos.

> @php craft Configurare/bine ai venit

   ______ .______ ___ _______ .___________.
  / || _ \ / \ | ____|| |
 | ,----'| |_) | / ^ \ | |__ `---| |----`
 | | | / / /_\ \ | __| | |
 | `----.| |\ \----./ _____ \ | | | |
  \______|| _| `._____/__/ \__\ |__| |__|

     ANEWINSTALL
               ______ .___ ___. _______.
              / || \/ | / |
             | ,----'| \ / | | (----`
             | | | |\/| | \ \
             | `----.| | | | .----) |
              \______||__| |__| |_______/


Generarea unui ID de aplicație... gata (CraftCMS--923f03f1-9bea-4c3d-a7ca-1466645ce75d)
Generarea unei chei de securitate... gata (iMdcUi6wQyf9MshEda__vZcCwILbclxz)

Bun venit la Craft CMS!

Ești gata să începi configurarea? (da|nu) [nu]:da
Ce driver de bază de date folosești? (mysql sau pgsql) [mysql] pgsql
Numele serverului bazei de date sau adresa IP: [127.0.0.1]
Port baza de date: [5432]
Nume utilizator baza de date: [root] craftuser
Parola bazei de date:
Numele bazei de date: craftcms
Prefixul tabelului bazei de date:
Testarea acreditărilor bazei de date... succes!
Folosind schema implicită „publică”.
Salvarea acreditărilor bazei de date în fișierul .env... gata

Instalați Craft acum? (da|nu) [da]:da

Nume de utilizator: [admin] navjot
E-mail: navjot@example.com
Parolă:
Confirma:
Numele site-ului: tutoriale Howtoforge
Adresa URL a site-ului: https://craftcms.example.com
Limba site-ului: [en-US]
*** instalarea Craft

Faceți Redis să funcționeze cu Craft CMS

Instalați yiisoft/yii2-redispachetul.

$ composer require --prefer-dist yiisoft/yii2-redis:"~2.0.0"

Deschideți /var/www/html/craftcms/config/app.phpfișierul pentru editare.

$ nano config/app.php

Veți vedea următorul conținut în el.

use craft\helpers\App;

return [
    'id' => App::env('CRAFT_APP_ID') ?: 'CraftCMS',
];

Schimbați-l după cum urmează.

use craft\helpers\App;
return [
    'id' => App::env('CRAFT_APP_ID') ?: 'CraftCMS',
    'components' => [
        'cache' => function() {
            $config = [
                'class' => yii\redis\Cache::class,
                'keyPrefix' => Craft::$app->id,
                'defaultDuration' => Craft::$app->config->general->cacheDuration,

                // Full Redis connection details:
                'redis' => [
                    'hostname' => App::env('REDIS_HOSTNAME') ?: 'localhost',
                    'port' => 6379,
                    'username' => App::env('REDIS_USERNAME') ?: null,
                    'password' => App::env('REDIS_PASSWORD') ?: null,
                ],
            ];

            return Craft::createObject($config);
        },
    ],
];

Salvați fișierul apăsând Ctrl + X și introducând Y când vi se solicită. Acest lucru permite Redis ca stocare cache pentru Craft CMS. De asemenea, puteți utiliza Redis pentru stocarea datelor de sesiune PHP, coada de joburi și ca driver mutex. Puteți găsi configurația pentru aceasta în documentația Craft CMS .

De asemenea, trebuie să adăugați configurația Redis la .envfișier.

$ nano .env

Adăugați următorul cod la sfârșitul fișierului.

REDIS_HOSTNAME=localhost
REDIS_USERNAME=navjot
REDIS_PASSWORD=parola ta

Alegeți opțiunile așa cum se arată mai sus. După ce ați terminat, schimbați grupul directorului în nginx. În acest fel, atât utilizatorul conectat în prezent, cât și Nginx vor avea acces la Craft CMS.

$ sudo chgrp -R nginx /var/www/html/craftcms

Acordați nginxpermisiunea grupului de a scrie în director.

$ sudo chmod -R g+w /var/www/html/craftcms

De aici încolo, nu va trebui să schimbați din nou permisiunile și puteți face toate operațiunile fără a utiliza privilegiile root.

Pasul 9 – Instalați SSL

Trebuie să instalăm Certbot pentru a genera certificatul SSL. Vom folosi programul de instalare a pachetului Snapd pentru asta. Deoarece Rocky Linux nu este livrat cu acesta, instalați programul de instalare Snapd. Este necesar ca depozitul EPEL (Extra Packages for Enterprise Linux) să funcționeze. Dar, din moment ce l-am instalat deja la pasul 3, putem merge direct înainte.

Instalați Snapd.

$ sudo dnf install -y snapd

Activați și porniți serviciul Snap.

$ sudo systemctl enable snapd --now

Instalați pachetul de bază Snap și asigurați-vă că versiunea dvs. de Snapd este actualizată.

$ sudo snap install core && sudo snap refresh core

Creați linkurile necesare pentru ca Snapd să funcționeze.

$ sudo ln -s /var/lib/snapd/snap /snap
$ echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' | sudo tee -a /etc/profile.d/snapd.sh

Instalați Certbot.

$ sudo snap install --classic certbot

Utilizați următoarea comandă pentru a vă asigura că comanda Certbot poate fi rulată prin crearea unei legături simbolice către /usr/bindirector.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Verificați dacă Certbot funcționează corect.

$ certbot --versiune
certbot 2.7.4

Rulați următoarea comandă pentru a genera un certificat SSL.

$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m nume@example.com -d craftcms.example.com

Comanda de mai sus va descărca un certificat în /etc/letsencrypt/live/craftcms.example.comdirectorul de pe serverul dvs.

Generați un certificat de grup Diffie-Hellman .

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

Verificați serviciul de planificare a reînnoirii Certbot.

$ sudo systemctl list-timers

Veți găsi snap.certbot.renew.serviceunul dintre serviciile programate să ruleze.

URMĂTOAREA STÂNGA ULTIMA UNITATE A TRUCĂ SE ACTIVĂ     
------------------------------------------------------------ -------------------------------------------------------------               
Luni 2023-12-04 23:38:47 UTC 18min rămas Luni 2023-12-04 22:19:02 UTC Acum 1h 0min dnf-makecache.timer dnf-makecache.service
Mar 2023-12-05 00:00:00 UTC 40 min rămase - - logrotate.timer logrotate.service
Mar 2023-12-05 09:36:00 UTC Mai sunt 10 ore - - snap.certbot.renew.timer snap.certbot.renew.service

Faceți o rulare uscată a procesului pentru a verifica dacă reînnoirea SSL funcționează bine.

$ sudo certbot renew --dry-run

Dacă nu vedeți nicio eroare, sunteți gata. Certificatul dumneavoastră se va reînnoi automat.

Pasul 10 – Configurați SELinux

Schimbați contextul de securitate al fișierului pentru Craft CMS.

$ sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/craftcms(/.*)?"

Aplicați politica.

$ sudo restorecon -Rv /var/www/html/craftcms/

Aplicați politica pentru a permite Nginx să acorde acces la PostgreSQL.

$ sudo setsebool -P httpd_can_network_connect_db 1

Aplicați politica pentru a permite conexiunile cu gazde externe.

$ sudo setsebool -P httpd_can_network_connect 1

Cu MariaDB 10.11, te vei confrunta cu o altă problemă și anume că SELinux împiedică PHP-FPM să se conecteze la MariaDB. Acest lucru poate fi rezolvat prin instalarea unui modul SELinux. Primul pas este crearea unui type enforcementfișier.

Creați fișierul my-phpfpm.teîn directorul dvs. de acasă și deschideți-l pentru editare.

$ cd ~
$ nano my-phpfpm.te

Lipiți următorul cod în el.

module my-phpfpm 1.0;

require {
        type unconfined_service_t;
        type httpd_t;
        type httpd_sys_content_t;
        class dir write;
        class unix_stream_socket connectto;
}

#============= httpd_t ==============

#!!!! This avc is allowed in the current policy
allow httpd_t httpd_sys_content_t:dir write;

#!!!! This avc is allowed in the current policy
allow httpd_t unconfined_service_t:unix_stream_socket connectto;

Salvați fișierul apăsând Ctrl + X și introducând Y când vi se solicită.

Următorul pas este să îl convertiți într-un modul de politică folosind următoarea comandă. Nu modificați numele fișierului în comandă, altfel nu va funcționa. Modulul este numit my-phpfpmși numele fișierului ar trebui să fie același cu numele modulului.

$ sudo checkmodule -M -m -o my-phpfpm.mod my-phpfpm.te

Apoi, trebuie să compilam modulul de politici pentru a crea un pachet de politici.

$ sudo semodule_package -o my-phpfpm.pp -m my-phpfpm.mod

Pasul final este să încărcați pachetul de politici utilizând semodulecomanda care instalează politica de utilizat.

$ sudo semodule -i my-phpfpm.pp

Pasul 11 ​​- Configurați Nginx

Deschideți fișierul /etc/nginx/nginx.confpentru editare.

$ sudo nano /etc/nginx/nginx.conf

Adăugați următoarea linie înainte de linie include /etc/nginx/conf.d/*.conf;.

server_names_hash_bucket_size 64;

Salvați fișierul apăsând Ctrl + X și introducând Y când vi se solicită.

Creați și deschideți fișierul /etc/nginx/conf.d/craftcms.confpentru editare.

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

Lipiți următorul cod în el. Înlocuiește-l craftcms.example.comcu numele tău de domeniu. Asigurați-vă că valoarea client_max_body_sizeeste setată la 128MB, ceea ce am setat pentru Craft CMS în timp ce configurați PHP mai devreme.

server {

    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    server_name craftcms.example.com;
    root /var/www/html/craftcms/web;

    index index.php;
    client_max_body_size 128M;

    access_log  /var/log/nginx/craftcms.access.log;
    error_log   /var/log/nginx/craftcms.error.log;

    ssl_certificate      /etc/letsencrypt/live/craftcms.example.com/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/craftcms.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/craftcms.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;

    location / {
        try_files $uri/index.html $uri $uri/ /index.php?$query_string;
    }

    location ~ [^/]\.php(/|$) {
        try_files $uri $uri/ /index.php?$query_string;
        fastcgi_index index.php;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_keep_conn on;
        include fastcgi_params;
        fastcgi_pass unix:/run/php-fpm/www.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param HTTP_PROXY "";
    }
}
# enforce HTTPS
server {
    listen 80;
    listen [::]:80;
    server_name  craftcms.example.com;
    return 301   https://$host$request_uri;
}

Salvați fișierul apăsând Ctrl + X și introducând Y când vi se solicită.

Verificați configurația dvs. Nginx.

$ sudo nginx -t

Reporniți serverul Nginx.

$ sudo systemctl reporniți nginx

Pasul 12 – Accesați Craft CMS

Deschideți adresa URL https://craftcms.example.comîn browser și veți fi direcționat la următoarea pagină.

Pentru a accesa pagina de administrare, vizitați adresa URL https://craftcms.example.com/adminși veți fi direcționat către pagina de autentificare.

Introduceți acreditările dvs. de administrare și faceți click pe tasta Conectare pentru a vă conecta. Veți fi direcționat la următorul tablou de bord.

Acum puteți începe să utilizați Craft CMS pentru a vă construi site-ul web.

Pasul 13 – Backup și restaurare Craft CMS

Puteți face copii de rezervă ale bazei de date Craft CMS din interiorul panoului de administrare, vizitând Tabloul de bord de administrare >> Utilități >> Backup baze de date.

Faceți clic pe butonul Backup pentru a descărca backupul bazei de date. De asemenea, puteți crea backup folosind terminalul. Rulați următoarea comandă pentru a crea copia de rezervă. Introduceți parola când vi se solicită.

$ mysqldump -u craftcmsuser -p craftcms > ~/craftcms.database.sql

De asemenea, puteți crea copia de rezervă a bazei de date folosind utilitarul de linie de comandă Craft CMS. Avantajul acestui utilitar este că nu trebuie să treceți acreditările bazei de date. Citiți mai multe despre utilitarul consolei de comandă Craft CMS aici .

$ cd /var/www/html/craftcms
$ php craft db/backup ~/
Copierea de rezervă a bazei de date... gata
Fișier de rezervă: /home/navjot/craftcms.database.sql (200.019 KB)

Dacă nu specificați nicio locație în comanda de mai sus, fișierul de rezervă va fi scris în /var/www/html/craftcms/storage/backupsdirector.

Pentru a face backup la fișiere, copiați și salvați întregul /var/www/html/craftcmsfolder.

$ cd /var/www/html
$ tar -zcf ~/craftcms.tar.gz craftcms

Pentru a-l restaura pe un nou server, extrageți fișierele în /var/www/htmlfolder.

$ tar -xzf craftcms.tar.gz -C /var/www/html/

Creați o bază de date cu aceleași acreditări pe noul server și restaurați baza de date folosind următoarea comandă. Introduceți parola când vi se solicită.

$ mysqlimport -u craftcmsuser -p craftcms craftcms.database.sql

Pasul 14 – Actualizați CMS Craft

Există două moduri de a actualiza Craft CMS. Unul este din interiorul panoului de administrare. Când o actualizare este disponibilă, veți primi o notificare. Faceți clic pe notificare pentru a face upgrade. Craft CMS va face backup automat pentru baza de date înainte de a efectua o actualizare.

De asemenea, îl puteți actualiza prin terminal.

Pentru a verifica toate actualizările disponibile, executați următoarea comandă.

$ cd /var/www/html/craftcms/
$ php craft update

Dacă este disponibilă o actualizare, rulați următoarea comandă pentru a o aplica.

$ php craft update all
[mai mult...]

Cum se instalează și se utilizează Nessus Vulnerability Scanner pe Ubuntu 24.04

Pentru a instala Nessus pe un sistem Linux, puteți descărca cu ușurință pachetul (DEB sau RPM) și apoi îl puteți instala manual prin comanda „ dpkg ” pentru Debian sau „rpm” pentru sistemul de operare RedHat. În cele din urmă, puteți porni serviciul Nessus prin „ systemctl ”.

Descărcați fișierul Nessus DEB utilizând comanda „curl” de mai jos. Asigurați-vă că vizitați pagina de descărcare Nessus pentru a obține cea mai recentă versiune.

curl --request GET \ 
--url '<https://www.tenable.com/downloads/api/v2/pages/nessus/files/Nessus-10.8.3-ubuntu1604_amd64.deb>' \ 
--output 'Nessus-10.8.3-ubuntu1604_am'64.3-ubuntu1604_am'

Odată descărcat, rulați comanda „ dpkg ” de mai jos pentru a instala Nessus prin fișierul DEB.

sudo dpkg -i Nessus-10.8.3-ubuntu1604_amd64.deb


După finalizarea instalării, rulați următoarea comandă „ systemctl ” pentru a porni și a activa serviciul „ nessusd ”. Apoi, verificați-l pentru a vă asigura că serviciul funcționează.

sudo systemctl enable --acum nessusd 
sudo systemctl status nessusd

În rezultatul de mai jos, puteți vedea că „ nessusd ” este activat și rulează.

Configurarea UFW (Firewall necomplicat)

Acum că rulați Nessus, să configuram UFW (Uncomplicated Firewall) și să deschidem porturile pentru OpenSSH și portul „8834/tcp” pentru tabloul de bord Nessus.

Rulați comanda „ufw” de mai jos pentru a activa profilul „ OpenSSH ” pentru a permite accesul SSH, apoi deschideți portul „ 8834/tcp ” pentru aplicația web Nessus.

sudo ufw allow OpenSSH 
sudo ufw allow 8834/tcp

Acum rulați comanda de mai jos pentru a porni și activa UFW, apoi introduceți „y” pentru a confirma. Veți obține o ieșire precum „ Firewall-ul este activ și activat la pornirea sistemului ”.

sudo ufw enable


n cele din urmă, verificați UFW cu următoarea comandă. Veți vedea acel UFW cu starea „ activ ” și permis accesul la „ OpenSSH ” și portul „ 8834/tcp ”.

sudo ufw status


Expertul de instalare Nessus

Acum că ați deschis portul „8834/tcp”, sunteți gata să configurați asistentul de instalare Nessus din browserul dvs. web. Deschideți browserul web și vizitați https://192.168.10.60:8834 . Dacă instalarea Nessus are succes, veți primi asistentul de instalare Nessus.

Faceți click pe „ Continuați ” pentru a începe configurarea Nessus.

Înregistrați-vă la Tenable introducând numele și prenumele și adresa de e-mail. Codul de activare va fi trimis pe e-mailul dvs., așa că asigurați-vă că utilizați e-mailul corespunzător.

Când este activat, veți vedea următoarele:

Acum introduceți numele de utilizator și parola care vor fi folosite pentru a vă conecta la tabloul de bord Nessus.

În continuare, instalarea ar trebui să înceapă. Acest Nessus descarcă pluginurile necesare.

După finalizarea procesului, vi se va solicita pagina de autentificare Nessus. Introduceți numele de utilizator și parola, apoi faceți clic pe „ Conectați-vă”.

Dacă aveți acreditările corecte, veți vedea următorul tablou de bord Nessus.

Dacă instalarea pluginului eșuează, puteți instala plugin-uri Nessus prin utilitarul „ nessuscli ”.

cd /opt/nessus/sbin 
./nessuscli update

Adăugarea lui Nessus la System PATH

Implicit, Nessus este instalat în directorul „ /opt/nessus ”. Există, de asemenea, două directoare bin pentru comanda Nessus. În această secțiune, veți adăuga directorul bin Nessus la calea sistemului prin intermediul fișierului „ ~/.bashrc ”.

Deschideți fișierul „ ~/.bashrc ” cu editorul „vim”.

vim ~/.bashrc

Lipiți următoarea configurație pentru a adăuga calea binară Nessus „ /opt/nessus/bin ” și „/opt/nessus/sbin” la calea sistemului PATH .

export $PATH:/opt/nessus/bin:/opt/nessus/sbin

Salvați fișierul și ieșiți din editor.

Acum rulați comanda de mai jos pentru a reîncărca fișierul „ ~/.bashrc ” în sesiunea curentă și verificați calea sistemului . Veți vedea directoarele „ /opt/nessus/bin ” și „ /opt/nessus/sbin ” disponibile în PATH.

source ~/.bashrc 
echo $PATH

Acum puteți rula comanda „ nessuscli ” ca orice altă comandă. Comanda de mai jos va afișa calea completă a fișierelor binare „nessuscli” și „nessusd”.

which nessuscli
which nessusd


Scanează cu Nessus

În această secțiune, veți învăța cum să scanați cu Nessus și să generați rapoarte HTML pentru scanare. Această secțiune va folosi tabloul de bord de administrare Nessus.

  • Pe tabloul de bord Nessus, faceți clic pe butonul Scanare nouă
  • Selectați șablonul Basic Network Scan

  • Introduceți numele scanării, descrierea, folderul implicit pentru a salva rezultatul scanării și adresa IP țintă sau numele gazdei

  • Odată creat, faceți clic pe butonul de redare  pentru a începe scanarea

  • După scanare, puteți vedea următorul rezultat:

Faceți clic pe meniul „ Rapoarte ” pentru a genera un raport HTML al rezultatului scanării. Mai jos este rezultatul scanării noastre pe pagina HTML.

[mai mult...]