Continuăm să ne extindem marketplace-ul. Recent, am povestit cum , iar în această săptămână, marketplace-ul nostru a inclus Drupal.
Îți spunem de ce l-am ales și cum a fost creată imaginea.
Drupal — o platformă convenabilă și puternică pentru crearea oricărui tip de site-uri: de la microsite-uri și bloguri până la mari proiecte sociale, utilizată de asemenea ca bază pentru aplicații web, scrisă în limba PHP și folosind bazele de date relaționale ca stocare de date.
Drupal 9 include toate caracteristicile implementate în versiunea 8.9. Diferența cheie între versiunea 9 și versiunea 8 este că actualizările și corecturile de securitate pentru platformă vor fi lansate și după noiembrie 2021. De asemenea, în versiunea 9, procesul de actualizare a fost simplificat, făcându-l și mai ușor de realizat de la versiunea 8.
Cerințe pentru server
Pentru a utiliza Drupal, se recomandă utilizarea a 2 GB RAM și 2 nuclee CPU.
Fișierele de bază Drupal ocupă aproximativ 100 MB, în plus, vei avea nevoie de spațiu pentru a stoca imagini, baze de date, teme, module suplimentare și backup-uri, care va depinde de dimensiunea site-ului tău.
Pentru Drupal 9 este necesar PHP 7.4 sau o versiune superioară, cu o limită minimă de (memory_limit) pentru memorie de 64 MB; în cazul utilizării modulelor suplimentare, se recomandă instalarea de 128 MB.
Ca server web, Drupal poate folosi Apache sau Nginx, iar ca bază de date, MySQL, PostgreSQL sau SQLite.
Vom instala Drupal folosind Nginx și MySQL.
Instalare
Vom actualiza pachetele instalate la cea mai recentă versiune:
sudo dnf update -yVom adăuga o permisiune permanentă pentru traficul de intrare pe porturile http/80 și https/443:
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=httpsAplicăm noile reguli ale firewall-ului:
sudo systemctl reload firewalldInstalăm Nginx:
sudo dnf install nginx -yVom porni și activa serverul Nginx:
sudo systemctl start nginx
sudo systemctl enable nginx Având în vedere că în prezent în repositoarele principale Centos este utilizată versiunea PHP 7.2, vom adăuga repositoul REMI cu PHP 7.4 (versiunea minimă pentru Drupal 9).
Pentru aceasta, vom adăuga repositoul EPEL (necesar pentru repositoul REMI):
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpmAdăugăm repositoul REMI:
sudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm
Activăm modulul php:remi-7.4 pentru a instala php 7.4:
sudo dnf module enable php:remi-7.4 -yInstalăm php-fpm și php-cli:
sudo dnf install -y php-fpm php-cliInstalăm modulele PHP necesare pentru funcționarea Drupal:
sudo dnf install -y php-mysqlnd php-date php-dom php-filter php-gd php-hash php-json php-pcre php-pdo php-session php-simplexml php-spl php-tokenizer php-xmlDe asemenea, vom instala modulele PHP recomandate mbstring opcache:
sudo dnf install -y php-mbstring php-opcacheSă instalăm serverul MySQL:
sudo dnf install mysql-server -ySă activăm și să pornim serverul MySQL:
sudo systemctl start mysqld
sudo systemctl enable mysqldDeoarece creăm un șablon pentru VDS, care ar putea fi lente, vom adăuga o întârziere de 30 de secunde pentru pornirea mysqld, altfel pot apărea probleme la pornirea serverului la încărcarea inițială a sistemului:
sudo sed -i 's/Group=mysql/Group=mysql
ExecStartPre=/bin/sleep 30/' /usr/lib/systemd/system/mysqld.serviceSă modificăm grupa și utilizatorul sub care va funcționa nginx, făcând modificări în /etc/php-fpm.d/www.conf:
sudo sed -i --follow-symlinks 's/user = apache/user = nginx/g' /etc/php-fpm.d/www.conf
sudo sed -i --follow-symlinks 's/group = apache/group = nginx/g' /etc/php-fpm.d/www.confSă schimbăm proprietarul directorului sesiunilor PHP pe nginx:
sudo chown -R nginx. /var/lib/php/sessionSă eliminăm liniile cu comentarii din fișierul de configurare /etc/nginx/nginx.conf (pentru a nu exista activări duble pentru sed):
sudo sed -i -e '/^[ \t]*#/d' /etc/nginx/nginx.confSă adăugăm în /etc/nginx/nginx.conf setările de compresie gzip:
sudo sed -i '/types_hash_max_size 2048;/a
gzip on;
gzip_static on;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript image/x-icon image/svg+xml application/x-font-ttf;
gzip_comp_level 9;
gzip_proxied any;
gzip_min_length 1000;
gzip_disable "msie6";
gzip_vary on;
' /etc/nginx/nginx.confSă adăugăm în /etc/nginx/nginx.conf setările pentru fișierul index index.php:
sudo sed -i '/ root /usr/share/nginx/html;/a
index index.php index.html index.htm;
' /etc/nginx/nginx.confSă adăugăm setări pentru serverul implicit, pentru a procesa php prin socket php-fpm, să dezactivăm logarea pentru fișierele statice, să creștem timpul de expirare, să dezactivăm logarea accesului și erorilor pentru favicon.ico și robots.txt și să interzicem accesul la fișierele .ht pentru toți:
sudo sed -i '/ location / {/a
try_files $uri $uri/ /index.php?q=$uri&$args;
}
location ~* ^.+\.(js|css|png|jpg|jpeg|gif|ico|woff)$ {
access_log off;
expires max;
}
location ~ .php$ {
try_files $uri =404;
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_intercept_errors on;
fastcgi_ignore_client_abort off;
fastcgi_connect_timeout 60;
fastcgi_send_timeout 180;
fastcgi_read_timeout 180;
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
}
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location ~ /.ht {
deny all;' /etc/nginx/nginx.confSă instalăm wget, necesar pentru instalarea certbot:
sudo dnf install wget -yVom descărca fișierul executabil certbot de pe site-ul oficial:
cd ~
wget https://dl.eff.org/certbot-autoVom muta certbot în /usr/local/bin/:
mv certbot-auto /usr/local/bin/certbot-autoȘi vom seta permisiunile și proprietarul root:
chown root /usr/local/bin/certbot-auto
chmod 0755 /usr/local/bin/certbot-autoVom instala dependențele certbot și în această etapă vom opri funcționarea acestuia (Răspunsuri: Y, c):
certbot-autoVom descărca de pe site-ul oficial arhiva cu ultima versiune Drupal 9:
cd ~
wget https://www.drupal.org/download-latest/tar.gzVom instala tar pentru a despacheta arhiva:
sudo dnf install tar -yVom șterge fișierele implicite din directorul /usr/share/nginx/html/:
rm -rf /usr/share/nginx/html/*Vom despacheta fișierele în directorul serverului web:
tar xf tar.gz -C /usr/share/nginx/html/Vom muta fișierele din subdirector în directorul rădăcină al serverului web:
mv /usr/share/nginx/html/drupal-9.0.7/* /usr/share/nginx/html/Vom șterge subdirectorul:
rm -rf /usr/share/nginx/html/drupal-9.0.7Vom șterge arhiva cu fișierele de instalare:
rm -f ./tar.gzVom seta ca proprietarul fișierelor nginx:
chown -R nginx. /usr/share/nginx/htmlÎn această etapă vom opri serverul și vom face un snapshot:
shutdown -h nowDupă repornirea VDS din snapshot, vom efectua configurația inițială a serverului MySQL rulând scriptul:
mysql_secure_installationVom activa validarea parolelor:
Would you like to setup VALIDATE PASSWORD component? : yVom seta parola pentru utilizatorul root MySQL:
New password:
Re-enter new password:Vom șterge utilizatorii anonimi:
Remove anonymous users? (Press y|Y for Yes, any other key for No) : yVom interzice conectarea root de la distanță:
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : yVom șterge baza de date de test:
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : yVom reîncărca tabelele de privilegii:
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y După aceasta, pentru a finaliza instalarea, putem accesa adresa
La această adresă vom vedea pagina de instalare Drupal.
Vom alege limba utilizată. De exemplu: română. Vom apăsa „Salvați și continuați”
Vom alege profilul de instalare (demo este folosit exclusiv pentru a familiariza utilizatorii cu sistemul). În cazul nostru, să fie „standard”.
Pe pagina următoare vom specifica numele bazei de date, de exemplu „drupal”. Vom indica numele utilizatorului DB root și parola setată în timpul rulării mysql_secure_installation. Vom apăsa „Salvați și continuați”.
Vom aștepta finalizarea instalării și actualizarea traducerilor (procesul poate dura câteva minute).
Vom specifica numele site-ului, vom introduce email-ul site-ului (de la care vor veni notificările site-ului), numele de utilizator, parola și email-ul contului de administrator Drupal. De asemenea, vom stabili țara și fusul orar în setările regionale. Și vom finaliza instalarea apăsând „Salvează și continuă”.
După aceasta, putem accesa panoul de control cu numele de utilizator și parola create pentru administratorul Drupal.
Configurarea HTTPS (opțional)
Pentru configurarea HTTPS, VDS trebuie să aibă un nume DNS valid, indicați în
/etc/nginx/nginx.confsecțiunea server numele serverului (de exemplu):
server_name domainname.ro;Să repornim nginx:
service nginx restartSă rulăm certbot:
sudo /usr/local/bin/certbot-auto --nginxIntroduceti email-ul dumneavoastră, acceptați termenii serviciului (A), Abonare la newsletter (opțional) (N), alegeți numele de domenii pentru care trebuie emis certificatul (Enter pentru toate).
În cazul în care totul a decurs fără erori, vom vedea un mesaj de succes privind emiterea certificatelor și configurarea serverului:
Felicitări! Ați activat cu succes ...După această conexiune, portul 80 va fi redirecționat către 443 (https).
Adăugați în /etc/crontab pentru actualizarea automată a certificatelor:
# Cert Renewal
30 2 * * * root /usr/local/bin/certbot-auto renew --post-hook "nginx -s reload"Configurați Securitatea Trusted Host (recomandat)
Această configurație este destinată rezolvării problemei legate de determinarea dinamică a base_url și este menită să prevină atacurile HTTP HOST Header (când site-ul dumneavoastră crede că este altcineva).
Pentru aceasta, trebuie să indicați numele de domenii de încredere ale site-ului în fișierul de configurare.
În fișierul
/usr/share/nginx/html/sites/default/settings.php dezmembrați sau adăugați configurația cu patternuri pentru numele curente ale site-ului, de exemplu:
$settings['trusted_host_patterns'] = [
'^www.mydomain.ro$',
];
Instalarea PHP APCu (RECOMANDAT)
Drupal suportă APCu — Alternative PHP User Cache, versiunile 8 și 9 utilizează mai intens APCu ca cache local pe termen scurt decât versiunile anterioare. Dimensiunea cache-ului implicit (32 MB) este potrivită pentru majoritatea site-urilor și nu poate depăși 512 MB.
Pentru activare, instalăm modulul PHP APCu:
dnf -y install php-pecl-apcuSă repornim nginx și php-fpm:
service nginx restart
service php-fpm restartÎn cazul în care utilizați limba română și APCu cu dimensiunea recomandată a memoriei pentru cache, în panoul de control puteți vedea un avertisment că dimensiunea memoriei alocate pentru cache diferă de cea recomandată, dar de fapt totul funcționează corect, iar avertizarea incorectă probabil va fi corectată în următoarele actualizări.
Sau, dacă avertismentul este deranjant, se poate utiliza .
Vrem să vă reamintim că și voi puteți crea o imagine pentru noi
Există trei modalități de a participa.
Pregătiți singuri imaginea și primiți 3000 de lei în cont
Dacă sunteți gata să săriți direct în luptă și să creați imaginea de care aveți nevoie, vă vom adăuga 3000 de lei în soldul intern — îi puteți folosi pentru servere.
Cum să creați propria imagine:
- Creează un cont la noi pe
- Informați suportul că intenționați să creați și să testați imagini
- Vă vom adăuga 3000 de lei și vom activa opțiunea de a crea snapshots
- Comandați un server virtual cu un sistem de operare curat
- Instalați software-ul pe acest VPS și configurați-l
- Elaborați o instrucțiune sau un script pentru desfășurarea software-ului
- Creează un snapshot pentru serverul configurat
- Comandați un nou server virtual, alegând din lista derulantă „Șablon server” snapshot-ul creat anterior
- În caz de creare reușită a serverului, trimiteți materialele obținute la etapa 6 echipei tehnice
- În caz de eroare, puteți verifica cu suportul motivul și repetați configurarea
Pentru proprietarii de afaceri: oferiți software-ul vostru
Dacă sunteți dezvoltator de software care este desfășurat și utilizat pe VPS, putem să vă includem în marketplace. Astfel, vă putem ajuta să aduceți noi clienți, trafic și recunoaștere.
Povestiți-ne în comentarii ce imagine vă lipsește?
Și noi o vom pregăti noi
Sursa: habr.com
