Oppretting av VPS-mal med Drupal 9 pÄ Centos 8

Vi fortsetter Ä utvide vÄr markedsplass. Nylig fortalte vi hvordan vi laget Gitlab-bildet, og denne uken har vÄr markedsplass fÄtt Drupal.

Vi forklarer hvorfor vi valgte nettopp dette, og hvordan bildet ble laget.

Oppretting av VPS-mal med Drupal 9 pÄ Centos 8

Drupal — en brukervennlig og kraftig plattform for Ă„ lage alle typer nettsteder: fra mikrosider og blogger til store sosiale prosjekter, og som ogsĂ„ brukes som grunnlag for webapplikasjoner, skrevet i PHP og som benytter relasjonsdatabaser for datalagring.

Drupal 9 inkluderer alle funksjonene som ble introdusert i versjon 8.9. Det viktigste skillet mellom versjon 9 og 8 er at det vil bli gitt oppdateringer og sikkerhetsfikser for plattformen etter november 2021. I tillegg er oppdateringsprosessen i versjon 9 forenklet, noe som gjĂžr oppdatering fra versjon 8 enda enklere.

Serverkrav

For Ă„ bruke Drupal anbefales det Ă„ ha 2 GB RAM og 2 CPU-kjerner.

De grunnleggende filene til Drupal tar omtrent 100 MB, i tillegg trenger du plass til bilder, databaser, temaer, tilleggmoduler og sikkerhetskopier, avhengig av stÞrrelsen pÄ nettstedet ditt.

For Drupal 9 kreves PHP 7.4 eller hÞyere med et minimumsgrense (memory_limit) pÄ 64 MB, og i tilfelle du bruker tilleggmoduler, anbefales 128 MB.

Som webserver kan Drupal bruke Apache eller Nginx, og som database MySQL, PostgreSQL eller SQLite.

Vi vil installere Drupal ved hjelp av Nginx og MySQL.

Installasjon

Vi oppdaterer de installerte pakkene til den nyeste versjonen:

sudo dnf update -y

Legg til permanent tillatelse for innkommende trafik til http/80 og https/443 porter:

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https

Bruk de nye brannmurreglene:

sudo systemctl reload firewalld

Installer Nginx:

sudo dnf install nginx -y

Start og aktiver Nginx-serveren:

sudo systemctl start nginx
sudo systemctl enable nginx

Siden den nÄvÊrende hovedarkivet for CentOS bruker PHP 7.2, legger vi til REMI-arkivet med PHP 7.4 (minimum versjon for Drupal 9).
For dette legger vi til EPEL-arkivet (som kreves av REMI-arkivet):

rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

Legg til REMI-arkivet:

sudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm

Aktiver php:remi-7.4-modulen for Ă„ installere php 7.4:

sudo dnf module enable php:remi-7.4 -y

Installer php-fpm og php-cli:

sudo dnf install -y php-fpm php-cli

Installer PHP-modulene som kreves for Ä fÄ Drupal til Ä fungere:

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-xml

Vi vil ogsÄ installere de anbefalte PHP-moduler mbstring og opcache:

sudo dnf install -y php-mbstring php-opcache

Vi installerer MySQL-serveren:

sudo dnf install mysql-server -y

Vi aktiverer og starter MySQL-serveren:

sudo systemctl start mysqld
sudo systemctl enable mysqld

Siden vi lager en mal for VDS, som kan vÊre trege, legger vi inn en startforsinkelse pÄ mysqld pÄ 30 sekunder, ellers kan det oppstÄ problemer med serverstart ved systemets fÞrste oppstart:

sudo sed -i '\/Group=mysql\/a \nExecStartPre=\/bin\/sleep 30\n' \/usr\/lib\/systemd\/system\/mysqld.service

Vi endrer gruppen og brukeren som nginx vil kjĂžre under ved Ă„ gjĂžre endringer i \/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.conf

Vi endrer eieren av PHP-sessionkatalogen til nginx:

sudo chown -R nginx. \/var\/lib\/php\/session

Vi fjerner kommentarlinjene fra konfigurasjonsfilen \/etc\/nginx\/nginx.conf (for Ä unngÄ dobbeltrigging med sed):

sudo sed -i -e '\/^[ t]*#\/d'  \/etc\/nginx\/nginx.conf

Vi legger til gzip-kompresjonsinnstillinger i \/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.conf

Vi legger til innstillinger for indeksfilen index.php i \/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.conf

Vi legger til innstillinger for standardserveren for php-behandling via php-fpm-socket, deaktiverer logg for statiske filer, Ăžker utlĂžpstiden, deaktiverer logg over tilgang og feil for favicon.ico og robots.txt og nekter tilgang til .ht-filer:

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.conf

Vi installerer wget som er nĂždvendig for Ă„ installere certbot:

sudo dnf install wget -y

Vi laster ned den kjĂžrbare filen certbot fra nettstedet:

cd ~
wget https://dl.eff.org/certbot-auto

Vi flytter certbot til /usr/local/bin/:

mv certbot-auto /usr/local/bin/certbot-auto

Og setter eierne til root:

chown root /usr/local/bin/certbot-auto
chmod 0755 /usr/local/bin/certbot-auto

Vi installerer avhengigheter for certbot og stopper det pÄ dette stadiet (Svar: Y, c):

certbot-auto

Vi laster ned arkivet med den nyeste versjonen av Drupal 9 fra nettstedet:

cd ~
wget https://www.drupal.org/download-latest/tar.gz

Vi installerer tar for Ă„ pakke ut arkivet:

sudo dnf install tar -y

Vi fjerner standardfiler fra katalogen /usr/share/nginx/html/:

rm -rf /usr/share/nginx/html/*

Vi pakker ut filene til webserverkatalogen:

tar xf tar.gz -C /usr/share/nginx/html/

Vi flytter filene fra underkatalogen til rotkatalogen til webserveren:

mv /usr/share/nginx/html/drupal-9.0.7/* /usr/share/nginx/html/

Vi sletter underkatalogen:

rm -rf /usr/share/nginx/html/drupal-9.0.7

Vi fjerner arkivet med installasjonsfilene:

rm -f ./tar.gz

Vi setter nginx som eier av filene:

chown -R nginx. /usr/share/nginx/html

PÄ dette stadiet slÄr vi av serveren og tar en snapshot:

shutdown -h now

Etter Ă„ ha startet VDS fra snapshot, utfĂžrer vi den fĂžrste konfigurasjonen av MySQL-serveren ved Ă„ kjĂžre skriptet:

mysql_secure_installation

Vi aktiverer passordvalidereren:

Would you like to setup VALIDATE PASSWORD component? : y

Vi setter password for MySQL-brukeren root:

New password:
Re-enter new password:

Vi fjerner anonyme brukere:

Remove anonymous users? (Press y|Y for Yes, any other key for No) : y

Vi forbyr root tilgang eksternt:

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y

Vi fjerner testdatabasen:

Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y

Vi laster inn privilegietabellene pÄ nytt:

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y

Etter dette, for Ä fullfÞre installasjonen, kan vi gÄ til adressen vps_ip_address
PĂ„ denne adressen vil vi se installasjonssiden for Drupal.

Vi velger sprĂ„k som skal brukes. For eksempel: norsk. Vi klikker pĂ„ ‘Lagre og fortsette’

Vi velger installasjonsprofilen (demoen brukes kun for Ä bli kjent med systemet). I vÄrt tilfelle velger vi 'standard'.

PÄ den neste siden angir vi navnet pÄ databasen, for eksempel 'drupal'. Vi oppgir brukernavnet til databasen root og passordet som ble satt under kjÞringen av mysql_secure_installation. Vi klikker pÄ 'Lagre og fortsette'.

Vi venter pÄ at installasjonen og oversettelsesoppdateringene skal fullfÞres (prosessen kan ta noen minutter).

Vi spesifiserer nettstedets navn, angir nettstedets e-post (fra hvilken varsler vil bli sendt), brukernavn, passord og e-post for Drupal-administratorens konto. Vi vil ogsÄ angi landet og tidssonen i de regionale innstillingene. Vi avslutter installasjonen ved Ä klikke pÄ «Lagre og fortsett».

Etter dette kan du gÄ til kontrollpanelet med det opprettede administratorbrukernavnet og passordet til Drupal.

Konfigurering av HTTPS (valgfritt)

For Ä konfigurere HTTPS mÄ VDS ha et gyldig DNS-navn, spesifiser i

/etc/nginx/nginx.conf

under server navnet pÄ serveren (for eksempel):

server_name domainname.ru;

La oss starte nginx pÄ nytt:

service nginx restart

La oss starte certbot:

sudo /usr/local/bin/certbot-auto --nginx

Oppgi e-posten din, godta vilkÄrene for tjenesten (A), abonnement pÄ nyhetsbrev (valgfritt) (N), velg domenenavnene det skal utstedes sertifikat for (Enter for alle).

Hvis alt gikk bra uten feil, vil vi se en melding om vellykket utstedelse av sertifikater og konfigurasjon av serveren:

Congratulations! You have successfully enabled ...

Etter dette vil tilkoblinger pÄ port 80 bli videresendt til 443 (https).

Legg til i /etc/crontab for automatisk oppdatering av sertifikater:

# Cert Renewal
30 2 * * * root /usr/local/bin/certbot-auto renew --post-hook "nginx -s reload"

Konfigurering av Trusted Host Security (anbefalt)

Denne innstillingen er ment som en lÞsning pÄ problemet med dynamisk bestemmelse av base_url, og tar sikte pÄ Ä forhindre HTTP HOST Header-angrep (nÄr nettstedet ditt tror det er noen annen).

For dette mÄ du angi de pÄlitelige domenenavnene til nettstedet i innstillingsfilen.

I filen

/usr/share/nginx/html/sites/default/settings.php avkommenter eller legg til innstillingen med mĂžnstre for aktuelle domenenavn, for eksempel:

$settings['trusted_host_patterns'] = [
  '^www.mydomain.ru$',
];

Installasjon av PHP APCu (ANBEFALES)

Drupal stþtter APCu — Alternative PHP User Cache, versjoner 8 og 9 bruker APCu mer intensivt som en kortvarig lokal cache enn tidligere versjoner. Standard cache-stþrrelse (32 MB) passer for de fleste nettsteder, og kan ikke overstige 512 MB.

For Ă„ aktivere det, installer PHP APCu-modulen:

dnf -y install php-pecl-apcu

La oss starte nginx og php-fpm pÄ nytt:

service nginx restart
service php-fpm restart

I tilfelle du bruker russisk sprÄk og APCu med anbefalt minnestÞrrelse for cachen, kan du se en advarsel i kontrollpanelet om at den tildelte minnestÞrrelsen for cachen avviker fra anbefalt verdi, men alt fungerer riktig, og den feilaktige advarselen vil sannsynligvis bli rettet i kommende oppdateringer.

Eller hvis advarselen er plagsom, kan du bruke den aktuelle patch fra offside.

Vi vil gjerne minne om at du ogsÄ kan lage en image for oss

Det finnes tre alternativer for deltakelse.

Lag bildet selv og fÄ 3000 kroner pÄ balansen

Hvis du er klar til Ă„ kaste deg inn i det og lage bildet som mangler, vil vi kreditere deg 3000 kroner pĂ„ den interne balansen — du kan bruke dette pĂ„ serverne.

Slik lager du ditt eget bilde:

  1. Opprett en konto hos oss pÄ nettsiden
  2. Gi beskjed til supporten at du planlegger Ă„ lage og teste bilder
  3. Vi vil kreditere deg 3000 kroner og aktivere muligheten for Ă„ lage snapshots
  4. Bestill en virtuell server med et rent operativsystem
  5. Installer programvaren pÄ denne VPS-en og konfigurer den
  6. Lag en instruksjon eller skript for distribusjon av programvaren
  7. Lag et snapshot for den konfigurerte serveren
  8. Bestill en ny virtuell server, ved Ă„ velge 'Servermal' fra rullegardinmenyen med den tidligere opprettede snapshot-en
  9. Ved vellykket oppretting av serveren, gi materiell fra trinn 6 til teknisk stĂžtte
  10. Ved feil kan du spÞrre supporten om Ärsaken og gjenta oppsettet

For bedrifts eiere: tilby programvaren din

Hvis du er en programvareutvikler som distribueres og brukes pÄ VPS, kan vi inkludere deg i markedsplassen. PÄ denne mÄten kan vi hjelpe deg med Ä fÄ nye kunder, trafikk og synlighet. Skriv til oss

Fortell i kommentarene hvilket bilde du mangler?

Og vi vil lage det selv

Oppretting av VPS-mal med Drupal 9 pÄ Centos 8

Oppretting av VPS-mal med Drupal 9 pÄ Centos 8

Kilde: habr.com

KjĂžp pĂ„litelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere đŸ”„ KjĂžp pĂ„litelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere | ProHoster