Stiamo continuando ad espandere il nostro marketplace. Recentemente abbiamo parlato di come , mentre questa settimana nel nostro marketplace è apparso Drupal.
Spiegando perché lo abbiamo scelto e come è stata creata l'immagine.
Drupal — una piattaforma comoda e potente per la creazione di qualsiasi tipo di sito: da micrositi e blog a grandi progetti sociali, utilizzata anche come base per applicazioni web, scritta in PHP e che utilizza database relazionali come sistema di archiviazione.
Drupal 9 include tutte le funzionalità implementate nella versione 8.9. La principale differenza tra la versione 9 e la versione 8 è che per la piattaforma verranno rilasciati aggiornamenti e correzioni di sicurezza anche dopo novembre 2021. Inoltre, nella versione 9 è stato semplificato il processo di aggiornamento, rendendo l'aggiornamento dalla versione 8 ancora più facile.
Requisiti del server
Per utilizzare Drupal si raccomanda di avere 2 GB di RAM e 2 core CPU.
I file principali di Drupal occupano circa 100 MB, e avrai bisogno di ulteriore spazio per memorizzare immagini, database, temi, moduli aggiuntivi e backup, che dipenderà dalle dimensioni del tuo sito.
Per Drupal 9 è richiesto PHP 7.4 o superiore con un limite minimo dimemory_limitimposta a 64 MB; nel caso vengano utilizzati moduli aggiuntivi, si consiglia di impostare 128 MB.
Come server web, Drupal può utilizzare Apache o Nginx, e come database MySQL, PostgreSQL o SQLite.
Installeremo Drupal utilizzando Nginx e MySQL.
Installazione
Aggiorneremo i pacchetti installati all'ultima versione:
sudo dnf update -yAggiungeremo una regola permanente per il traffico in entrata sulle porte http/80 e https/443:
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=httpsApplicheremo le nuove regole del firewall:
sudo systemctl reload firewalldInstalleremo Nginx:
sudo dnf install nginx -yAvvieremo e attiveremo il server Nginx:
sudo systemctl start nginx
sudo systemctl enable nginx Poiché al momento nel repository principale di CentOS è utilizzata la versione PHP 7.2, aggiungeremo il repository REMI con PHP 7.4 (versione minima per Drupal 9).
Per questo, aggiungeremo il repository EPEL (richiesto dal repository REMI):
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpmAggiungeremo il repository REMI:
sudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm
Attiveremo il modulo php:remi-7.4 per installare php 7.4:
sudo dnf module enable php:remi-7.4 -yInstalleremo php-fpm e php-cli:
sudo dnf install -y php-fpm php-cliInstalleremo i moduli PHP richiesti per il corretto funzionamento di 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-xmlInstalleremo anche i moduli PHP consigliati mbstring opcache:
sudo dnf install -y php-mbstring php-opcacheInstalleremo il server MySQL:
sudo dnf install mysql-server -yAttiveremo e avvieremo il server MySQL:
sudo systemctl start mysqld
sudo systemctl enable mysqldPoiché stiamo creando un template per VDS, e questi possono essere lenti, aggiungeremo un ritardo di avvio di mysqld di 30 secondi, altrimenti potrebbero esserci problemi con l'avvio del server all'accensione del sistema:
sudo sed -i '"/Group=mysql/a \nExecStartPre=/bin/sleep 30\n' /usr/lib/systemd/system/mysqld.serviceModificheremo il gruppo e l'utente con cui nginx lavorerà apportando modifiche a /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.confModificheremo anche il proprietario della directory delle sessioni PHP in modo che sia corrispondente a nginx:
sudo chown -R nginx. /var/lib/php/sessionRimuoveremo le righe con i commenti dal file di configurazione /etc/nginx/nginx.conf (per evitare doppi attivazioni per sed):
sudo sed -i -e '/^[ t]*#/d' /etc/nginx/nginx.confAggiungeremo impostazioni di compressione gzip a /etc/nginx/nginx.conf
sudo sed -i '/types_hash_max_size 2048;/a \n\ngzip on;\ngzip_static on;\ngzip_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;\ngzip_comp_level 9;\ngzip_proxied any;\ngzip_min_length 1000;\ngzip_disable 'msie6';\ngzip_vary on; \n' /etc/nginx/nginx.confAggiungeremo impostazioni per il file indice index.php a /etc/nginx/nginx.conf:
sudo sed -i '/ root /usr/share/nginx/html;/a \n index index.php index.html index.htm;\n' /etc/nginx/nginx.confAggiungeremo impostazioni per il server predefinito per l'elaborazione php tramite socket php-fpm, disabiliteremo il log per i file statici, aumenteremo il tempo di scadenza, disabiliteremo il log degli accessi e degli errori per favicon.ico e robots.txt e negheremo l'accesso ai file .ht per tutti:
sudo sed -i '/ location / {/a \n\t\ttry_files $uri $uri/ /index.php?q=$uri&$args;\n }\n\n location ~* ^.+\.(js|css|png|jpg|jpeg|gif|ico|woff)$ {\n access_log off;\n expires max;\n }\n\n location ~ .php$ {\n try_files $uri =404;\n fastcgi_pass unix:/run/php-fpm/www.sock;\n fastcgi_index index.php;\n include fastcgi_params;\n fastcgi_intercept_errors on;\n fastcgi_ignore_client_abort off;\n fastcgi_connect_timeout 60;\n fastcgi_send_timeout 180;\n fastcgi_read_timeout 180;\n fastcgi_buffer_size 128k;\n fastcgi_buffers 4 256k;\n fastcgi_busy_buffers_size 256k;\n fastcgi_temp_file_write_size 256k;\n }\n\n location = /favicon.ico {\n log_not_found off;\n access_log off;\n }\n\n location = /robots.txt {\n allow all;\n log_not_found off;\n access_log off;\n }\n\n location ~ /.ht {\n deny all;' /etc/nginx/nginx.confInstalleremo wget necessario per l'installazione di certbot:
sudo dnf install wget -yScarichiamo il file eseguibile certbot dal sito ufficiale:
cd ~
wget https://dl.eff.org/certbot-autoSpostiamo certbot in /usr/local/bin/:
mv certbot-auto /usr/local/bin/certbot-autoE assegniamo i diritti e il proprietario root:
chown root /usr/local/bin/certbot-auto
chmod 0755 /usr/local/bin/certbot-autoInstalliamo le dipendenze di certbot e a questo punto interromperemo il suo funzionamento (Risposte: Y, c):
certbot-autoScarichiamo dal sito ufficiale l'archivio con l'ultima versione di Drupal 9:
cd ~
wget https://www.drupal.org/download-latest/tar.gzInstalleremo tar per estrarre l'archivio:
sudo dnf install tar -yEliminiamo i file di default nella cartella /usr/share/nginx/html/:
rm -rf /usr/share/nginx/html/*Estraiamo i file nella cartella del server web:
tar xf tar.gz -C /usr/share/nginx/html/Spostiamo i file dalla sottocartella nella cartella principale del server web:
mv /usr/share/nginx/html/drupal-9.0.7/* /usr/share/nginx/html/Eliminiamo la sottocartella:
rm -rf /usr/share/nginx/html/drupal-9.0.7Eliminiamo l'archivio con i file di installazione:
rm -f ./tar.gzAssegniamo il proprietario dei file a nginx:
chown -R nginx. /usr/share/nginx/htmlA questo punto spegneremo il server e creeremo uno snapshot:
shutdown -h nowDopo aver avviato VDS dallo snapshot, eseguiremo la configurazione iniziale del server MySQL avviando lo script:
mysql_secure_installationAttiveremo il validatore delle password:
Would you like to setup VALIDATE PASSWORD component? : yImposteremo la password per l'utente root di MySQL:
New password:
Re-enter new password:Eliminiamo gli utenti anonimi:
Remove anonymous users? (Press y|Y for Yes, any other key for No) : yVietiamo il login remoto per root:
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : yEliminiamo il database di test:
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : yRicarichiamo le tabelle dei privilegi:
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y Dopo di che, per completare l'installazione, possiamo andare all'indirizzo
A questo indirizzo vedremo la pagina di installazione di Drupal.
Selezioniamo la lingua da utilizzare. Ad esempio: russo. Clicchiamo su "Salva e continua"
Selezioniamo il profilo di installazione (la demo è utilizzata solo per conoscere il sistema). Nel nostro caso scegliamo "standard".
Nella prossima pagina, inseriremo il nome del database, ad esempio "drupal". Indicheremo il nome utente del DB root e la password impostata durante l'esecuzione di mysql_secure_installation. Clicchiamo su "Salva e continua".
Attendiamo il completamento dell'installazione e l'aggiornamento delle traduzioni (il processo potrebbe richiedere alcuni minuti).
Indichiamo il nome del sito, impostiamo l'email del sito (da cui verranno inviate le notifiche del sito), il login, la password e l'email dell'account amministratore di Drupal. Impostiamo anche il paese e il fuso orario nelle impostazioni regionali. E concludiamo l'installazione facendo clic su «Salva e continua».
Dopo questo, sarà possibile accedere al pannello di controllo con il login e la password creati per l'amministratore di Drupal.
Impostazione di HTTPS (opzionale)
Per configurare HTTPS, il VDS deve avere un nome DNS valido, da indicare nella
/etc/nginx/nginx.confnella sezione server il nome del server (ad esempio):
server_name domainname.ru;Riavviamo nginx:
service nginx restartAvviamo certbot:
sudo /usr/local/bin/certbot-auto --nginxInseriamo la nostra email, accettiamo le condizioni del servizio (A), Iscrizione alla newsletter (opzionale) (N), selezioniamo i nomi di dominio per i quali è necessario emettere il certificato (Invio per tutti).
Se tutto è andato a buon fine, vedremo un messaggio di emissione riuscita dei certificati e della configurazione del server:
Congratulazioni! Hai abilitato con successo ...Dopo questa connessione, le richieste sulla porta 80 verranno reindirizzate alla 443 (https).
Aggiungiamo in /etc/crontab per l'aggiornamento automatico dei certificati:
# Cert Renewal
30 2 * * * root /usr/local/bin/certbot-auto renew --post-hook "nginx -s reload"Impostazione della Sicurezza Host Fidato (raccomandata)
Questa impostazione è pensata come una soluzione al problema legato alla definizione dinamica di base_url, e mira a prevenire attacchi HTTP HOST Header (quando il tuo sito pensa di essere qualcun altro).
Per questo è necessario specificare i nomi di dominio fidati del sito nel file di configurazione.
Nel file
/usr/share/nginx/html/sites/default/settings.php decommentiamo o aggiungiamo la configurazione con i pattern dei nomi di dominio attuali, ad esempio:
$settings['trusted_host_patterns'] = [
'^www.mydomain.ru$',
];
Installazione di PHP APCu (RACCOMANDATO)
Drupal supporta APCu — Alternative PHP User Cache, le versioni 8 e 9 utilizzano maggiormente APCu come cache locale a breve termine rispetto alle versioni precedenti. La dimensione della cache per impostazione predefinita (32 MB) è adatta alla maggior parte dei siti e non può superare i 512 MB.
Per attivarlo, installiamo il modulo PHP APCu:
dnf -y install php-pecl-apcuRiavviamo nginx e php-fpm:
service nginx restart
service php-fpm restartSe utilizzi la lingua russa e APCu con la dimensione della memoria consigliata per la cache, nel pannello di controllo potresti vedere un avviso che indica che la dimensione della memoria allocata per la cache è diversa da quella consigliata, ma in effetti tutto funziona correttamente, e l'avviso avrà probabilmente una correzione nelle prossime versioni.
Oppure, se l'avviso è fastidioso, si può utilizzare .
Vogliamo ricordarvi che anche voi potete creare un'immagine per noi
Ci sono tre modi per partecipare.
Preparate l'immagine voi stessi e riceverete 3000 rubli sul saldo
Se siete pronti a lanciarvi subito in azione e creare voi stessi l'immagine di cui avete bisogno, vi accrediteremo 3000 rubli sul saldo interno — che potrete spendere per i server.
Come creare la vostra immagine:
- Create un account sul nostro
- Comunicate al supporto che intendete creare e testare immagini
- Vi accrediteremo 3000 rubli e abiliteremo la possibilità di creare snapshot
- Richiedete un server virtuale con un sistema operativo pulito
- Installate il software su questo VPS e configuratelo
- Elaborate un'istruzione o uno script per il deployment del software
- Create uno snapshot per il server configurato
- Richiedete un nuovo server virtuale, selezionando dallo stato a discesa il ‘Modello server’ che avete creato in precedenza
- In caso di successo nella creazione del server, inviate al supporto tecnico il materiale ottenuto al punto 6
- In caso di errore, potete chiedere al supporto la causa e ripetere la configurazione
Per i proprietari di attività: proponete il vostro software
Se siete sviluppatori di software che viene distribuito e utilizzato su VPS, possiamo includervi nel marketplace. Così possiamo aiutarvi ad attrarre nuovi clienti, traffico e riconoscibilità.
Raccontateci nei commenti quale immagine vi manca?
E la creeremo noi
Fonte: habr.com
