Creando un modelo VPS con Drupal 9 en Centos 8

Seguimos ampliando o noso mercado. Hai pouco dixémosche como fixo unha imaxe de Gitlab, e esta semana apareceu Drupal no noso mercado.

Contámosche por que o eliximos e como se creou a imaxe.

Creando un modelo VPS con Drupal 9 en Centos 8

Drupal — unha plataforma cómoda e potente para a creación de calquera tipo de sitio web: desde micrositios e blogs ata grandes proxectos sociais, tamén utilizados como base para aplicacións web, escritos en PHP e utilizando bases de datos relacionais como almacenamento de datos.

Drupal 9 inclúe todas as funcións introducidas na versión 8.9. A diferenza fundamental entre a versión 9 e a versión 8 é que a plataforma seguirá recibindo actualizacións e correccións de seguranza despois de novembro de 2021. A versión 9 tamén simplifica o proceso de actualización, facilitando aínda máis o proceso de actualización desde a versión 8.

Requisitos do servidor

Para usar Drupal, recoméndase utilizar 2 GB de RAM e 2 núcleos de CPU.

Os principais ficheiros de Drupal ocupan uns 100 MB, ademais necesitarás espazo para almacenar imaxes, bases de datos, temas, módulos adicionais e copias de seguridade, que dependerán do tamaño do teu sitio.

Drupal 9 require PHP 7.4 ou superior cunha limitación mínima (memory_limit) para 64 MB de memoria; se se usan módulos adicionais, recoméndase instalar 128 MB.

Drupal pode usar Apache ou Nginx como servidor web e MySQL, PostgreSQL ou SQLite como base de datos.

Instalaremos Drupal usando Nginx e MySQL.

Instalación

Actualicemos os paquetes instalados á última versión:

sudo dnf update -y

Engademos permiso permanente para o tráfico entrante aos portos http/80 e https/443:

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

Apliquemos as novas regras do firewall:

sudo systemctl reload firewalld

Imos instalar Nginx:

sudo dnf install nginx -y

Imos iniciar e habilitar o servidor Nginx:

sudo systemctl start nginx
sudo systemctl enable nginx

Dado que o repositorio principal de Centos actualmente usa PHP 7.2, imos engadir un repositorio REMI con PHP 7.4 (versión mínima para Drupal 9).
Para iso, engade o repositorio EPEL (requirido polo repositorio REMI):

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

Engadimos o repositorio REMI:

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

Imos habilitar o módulo php:remi-7.4 para instalar php 7.4:

sudo dnf module enable php:remi-7.4 -y

Instala php-fpm e php-cli:

sudo dnf install -y php-fpm php-cli

Imos instalar os módulos PHP necesarios para que Drupal funcione:

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

Tamén instalaremos os módulos PHP mbstring opcache recomendados:

sudo dnf install -y php-mbstring php-opcache

Imos instalar o servidor MySQL:

sudo dnf install mysql-server -y

Imos activar e iniciar o servidor MySQL:

sudo systemctl start mysqld
sudo systemctl enable mysqld

Dado que estamos a facer un modelo para VDS, e poden ser lentos, engadiremos un atraso de inicio de mysqld de 30 segundos, se non, pode haber problemas co inicio do servidor durante o arranque inicial do sistema:

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

Imos cambiar o grupo e o usuario no que se executará nginx facendo cambios en /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

Imos cambiar o propietario do directorio de sesións de PHP a nginx en consecuencia:

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

Imos eliminar as liñas con comentarios do ficheiro de configuración /etc/nginx/nginx.conf (para que non haxa disparadores dobres para sed):

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

Engade a configuración de compresión gzip a /etc/nginx/nginx.conf

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

Engademos a configuración do ficheiro de índice index.php a /etc/nginx/nginx.conf:

sudo sed -i '/        root         /usr/share/nginx/html;/a 
        index index.php index.html index.htm;
' /etc/nginx/nginx.conf

Engademos a configuración para o servidor predeterminado: procesamento PHP a través do socket php-fpm, desactiva o rexistro para ficheiros estáticos, aumenta o tempo de caducidade, desactiva o rexistro de acceso e erros para favicon.ico e robots.txt e denegue o acceso a .ht ficheiros para todos:

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

Instale wget necesario para instalar certbot:

sudo dnf install wget -y

Descarga o ficheiro executable de certbot desde fóra do sitio:

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

Mover certbot a /usr/local/bin/:

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

E imos asignar os dereitos como propietario para rootear:

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

Instalemos as dependencias de certbot e neste momento interrompamos o seu traballo (Respostas: Y, c):

certbot-auto

Descarguemos o arquivo coa última versión de Drupal 9 desde fóra do sitio:

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

Instala tar para desempaquetar o arquivo:

sudo dnf install tar -y

Imos eliminar os ficheiros predeterminados no directorio /usr/share/nginx/html/:

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

Descomprimimos os ficheiros no directorio do servidor web:

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

Movemos os ficheiros do subdirectorio ao directorio raíz do servidor web:

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

Imos eliminar o subdirectorio:

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

Imos eliminar o arquivo cos ficheiros de instalación:

rm -f ./tar.gz

Imos asignar o propietario dos ficheiros nginx:

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

Nesta fase apagaremos o servidor e tomaremos unha instantánea:

shutdown -h now

Despois de iniciar o VDS desde a instantánea, realizaremos a configuración inicial do servidor MySQL executando o script:

mysql_secure_installation

Imos habilitar o validador de contrasinal:

Would you like to setup VALIDATE PASSWORD component? : y

Imos establecer o contrasinal para o usuario root de MySQL:

New password:
Re-enter new password:

Eliminamos usuarios anónimos:

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

Evitemos que o root se conecte de forma remota:

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

Imos eliminar a base de datos de proba:

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

Recarguemos as táboas de privilexios:

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

Despois disto, para completar a instalación, podemos ir a enderezo_ip_vps
Neste enderezo veremos a páxina de instalación de Drupal.

Imos seleccionar o idioma a usar. Por exemplo: ruso. Fai clic en "Gardar e continuar"

Seleccione un perfil de instalación (a demostración úsase unicamente para familiarizarse co sistema). No noso caso, que sexa "estándar".

Na seguinte páxina daremos un nome á base de datos, por exemplo “drupal”. Imos indicar o nome de usuario root da base de datos e o contrasinal que se lle deu ao executar mysql_secure_installation. Fai clic en "Gardar e continuar".

Agardemos a que se complete a instalación e actualización das traducións (o proceso pode tardar varios minutos).

Indicaremos o nome do sitio, estableceremos o correo electrónico do sitio (en nome do que se enviarán as notificacións do sitio), o inicio de sesión, o contrasinal e o correo electrónico da conta do administrador de Drupal. Tamén estableceremos o país e a zona horaria na configuración rexional. E completa a instalación facendo clic en "Gardar e continuar".

Despois diso, pode ir ao panel de control co inicio de sesión e contrasinal do administrador de Drupal creados.

Configurar HTTPS (opcional)

Para configurar HTTPS, o VDS debe ter un nome DNS válido, especificalo en

/etc/nginx/nginx.conf

na sección do servidor o nome do servidor (por exemplo):

server_name  domainname.ru;

Reiniciemos nginx:

service nginx restart

Imos lanzar certbot:

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

Introduza o seu correo electrónico, acepte as condicións do servizo (A), Subscríbase ao boletín (opcional) (N), seleccione os nomes de dominio para os que desexa emitir un certificado (Introduza para todos).

Se todo saíu sen erros, veremos unha mensaxe sobre a emisión exitosa dos certificados e a configuración do servidor:

Congratulations! You have successfully enabled ...

Despois disto, as conexións ao porto 80 serán redirixidas ao 443 (https).

Engade a /etc/crontab para actualizar automaticamente os certificados:

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

Configuración de Trusted Host Security (recomendado)

Esta configuración pretende ser unha solución ao problema asociado coa determinación dinámica de base_url e está deseñada para evitar ataques de cabeceira HTTP HOST (cando o teu sitio pensa que é outra persoa).

Para iso, cómpre especificar nomes de dominio de confianza para o sitio no ficheiro de configuración.

En arquivo

/usr/share/nginx/html/sites/default/settings.php Deixemos comentarios ou engadamos unha configuración con patróns de nomes de sitios reais, por exemplo:

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

Instalación de PHP APCu (RECOMENDADO)

Drupal admite APCu - Alternative PHP User Cache, as versións 8 e 9 fan un maior uso de APCu como caché local a curto prazo que as versións anteriores. O tamaño da caché predeterminado (32 MB) é adecuado para a maioría dos sitios e non pode superar os 512 MB.

Para activalo, instale o módulo PHP APCu:

dnf -y install php-pecl-apcu

Reinicie nginx e php-fpm:

service nginx restart
service php-fpm restart

Se usas a lingua rusa e APCu co tamaño de memoria recomendado para a caché, podes ver unha advertencia no panel de control de que o tamaño da memoria asignada para a caché é diferente do recomendado, pero en realidade todo funciona correctamente. e o aviso incorrecto probablemente se corrixa nas próximas actualizacións.

Ou se o aviso che doe os ollos, podes usar parche correspondente desde fóra do sitio.

Lembrámosvos que tamén podedes facernos unha imaxe

Hai tres opcións de como participar.

Prepara a imaxe ti mesmo e obtén 3000 rublos ao teu saldo

Se estás preparado para lanzarte inmediatamente á batalla e crear a imaxe que che falta, abonarémosche 3000 rublos ao teu saldo interno, que podes gastar en servidores.

Como crear a túa propia imaxe:

  1. Crea unha conta connosco en On-line
  2. Infórmalle ao servizo de asistencia que vas crear e probar imaxes
  3. Acreditarémosche 3000 rublos e activaremos a posibilidade de crear instantáneas
  4. Solicite un servidor virtual cun sistema operativo limpo
  5. Instala o software neste VPS e configúrao
  6. Escribe instrucións ou script para a implantación de software
  7. Cree unha instantánea para o servidor configurado
  8. Solicite un novo servidor virtual seleccionando a instantánea creada anteriormente na lista despregable "Modelo de servidor".
  9. Se o servidor se crea correctamente, transfira os materiais recibidos na fase 6 ao soporte técnico
  10. Se hai un erro, pode comprobar o motivo co apoio e repetir a configuración

Para empresarios: ofrécelle o teu software

Se es un programador de software que se implanta e se usa en VPS, podemos incluílo no mercado. Así é como podemos axudarche a atraer novos clientes, tráfico e concienciación. Escríbenos

Cóntanos nos comentarios que imaxe che perdas?

E imos preparalo nós

Creando un modelo VPS con Drupal 9 en Centos 8

Creando un modelo VPS con Drupal 9 en Centos 8

Fonte: www.habr.com