Configurar o Drupal como un multisite

Submitted by martin on Mar, 06/11/2019 - 11:34

1. Non noso proveedor de dominio, creamos o subdomino que apunte á IP do noso hosting. No meu caso creo un subdominio chamado linux que apunta á IP

domion

 

2. Creamos unha base de datos específica para o drupal que formará parte do subdominio. No meu caso tamén o chamo linux

database

 

3. Creamos un cartafol  dentro da carpeta /drupal/sites. Dentro do mesmo creamos a súa vez dentro de sites as carpetas files, modules, themes, tmp

cd  ....drupal/sites/linux

mkdir files modules themes tmp

A súa vez dentro de files, debemos de crear o cartafol translations

cd files

mkdir translations

Dámoslle premisos para poder escribir no cartafol files

cd ..

chown -R 777 files

4.Copiamos da carpeta /www/drupal/sites/default, os ficheiros settings.php e default.services.yml na carpeta do novo sitio creado. No caso de default.services.yml cambiámoslle o nome por services.yml no novo cartafol.

cd ~/www/drupal/sites/default

cp settings.php ../linux

cp default.services.yml ../linux/services.yml

Modificamos settings.php, engando:

$databases['default']['default'] = array (
  'database' => 'linux',
  'username' => 'usuario',
  'password' => 'contrasinal',
  'prefix' => '',
  'host' => 'localhost',
  'port' => '3306',
  'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql',
  'driver' => 'mysql',
);

5. Dentro de /www/drupal/sites hai un ficheiro chamado example.sites.php. Renomeámolo por sites.php

cd ~/www/drupal/sites/

mv example.sites.php sites.php

Modificamos o fichieros sites.php, engandindo o nome dos subdominios

$sites = array(
      'linux.atio.es' => 'linux',
      'rdp.atio.es' => 'rdp',
      'blog.atio.es' => 'blog',
);

7. Accedemos ao subdomino e procedemos coa instalación de Drupal

novositio

8. Despois de instalar o Drupal, deberemos de retirar o permiso de escritura do ficheiro settings.php situado dentro do cartafol linux (neste caso en concreto)

 

Actualización a Drupal 8.4.2 - PHP7 con Drush

Submitted by martin on Lun, 06/10/2019 - 23:27
drupal

1. INSTALACIÓN DE COMPOSER

mv composer.phar ~/bin/composer.phar

mkdir ~/bin

cd ~/

Creamos un alias as composer. Para iso creamos o profile de bash

touch .bash_profile

nano ~/.bash_profile

alias composer="php -d suhosin.executor.include.whitelist=phar ~/bin/composer.phar"

source ~/.bash_profile

comprobamos que funciona:

composer

 

2. INSTALACIÓN DE DRUSH

cd ~/bin

mkdir drush

descargamos a última versión de drush

git clone https://github.com/drush-ops/drush.git ~/bin/drush

cd ~/bin/drush

composer install  

Cando executaba a sentencia anterior o sistema imprimía un erro de memoria con un "Allocated Memory". Para solventar esta paso observei que o meu vps non dispón de memoria suficiente (512 mb) e non dispoñía de swap. Engadín 1 GB de memoria á Swap. Para iso seguín este titorial

composer install

Se neste punto comprobamos a versión de drush, obtemos que estamos coa versión 9.x-dev. Pero esta versión non nos vale, xa que da erros ao executar as sentencias de actualización da base de datos de Drupal, escribindo un deprecated instruction. Para a actualización do Drupal 8.4.2, precisamos a versión de Drush 8.1.15

mkdir ~/bin/drush8

cd ~/bin/drush8

composer require "drush/drush:8.*"

Creamos un alias á version drush8

alias drush='~/bin/drush8/vendor/bin/drush'

Este alias debemos de metelo no .bash_profile, senón ao reiniciar o servidor perderanse os cambios

nano ~/.bash_profile

engadimos:

alias drush='~/bin/drush8/vendor/bin/drush'

e actualizamos

source ~/.bash_profile

comprobamos que funciona

drush --version

Agora obtemos a versión de drush 8.1.15 precisa

 

3. PROCESO DE ACTUALIZACIÓN

Antes de nada facemos copia de seguidade da base de datos de Drupal e do cartafol no que teñamos instalado o Drupal.

a. Poñemos o sitios en modo mantemento

cd /var/www/html/drupal

drush  sset system.maintenance_mode 1

(Tamén o podemos facer sen ir ao cartafol empregando sentencias deste xeito:

drush --root=/var/www/html/drupal/ --uri=blog.atio.es sset system.maintenance_mode 1)

b. Reconstruímos a caché

drush cr

c. Actualizamos as dependencias de composer:

Seguimos en: cd /var/www/html/tic/drupal

composer update

d. Actualizar Drupal

composer require drupal/core:8.4.2 --update-with-dependencies

drush updb

Sen embargo aquí atopei moitos fallos. Por exemplo o seguinte:

root@debian:/var/www/html/drupal# drush pm-uninstall mbase
Drupal\Core\Extension\InfoParserException: Unable to parse themes/mbase/mbase.info.yml The reserved indicator "@" cannot   [error]

Neste caso dirixinme ao cartafol dos temas e eliminei a carpeta mbase

Tamén se presentaron fallos co módulo imce a co tagadelic. Neste caso elimineinos da base de datos coas seguintes instrucións:

drush sql-query "DELETE FROM key_value WHERE collection='system.schema' AND name='imce';"
drush sql-query "DELETE FROM key_value WHERE collection='system.schema' AND name='tagadelic';"

Aínda así non resolvín o erro tagadelic_list. Sen embargo executoume correctamente as dúas sentencias seguintes de actualización:

drush updb

drush pm-update

e. Quitamos o modo mantemento do sitio:

drush sset system.maintenance_mode 0

f. Reconstruímos a caché

drush cr

Con isto xa accedemos ao sitio e visualizase ben, sen embargo ao crear contidos, imprimía un erro inesperado. Ao dirixirme a Informes -> Mensaxes recentes de rexisto e filtrando os erros obtiña o seguinte:

Drupal\Component\Plugin\Exception\PluginNotFoundException: The "php_code" plugin does not exist. in Drupal\Core\Plugin\DefaultPluginManager->doGetDefinition() (line 52 of
/var/www/html/tic/drupal/core/lib/Drupal/Component/Plugin/Discovery/DiscoveryTrait.php).

Polo que parecía o erro estábao dando o módulo PHP Filter, pois estaba desactivado. Sen embargo cando o intentaba activar, o drupal non me deixaba, pois decíame que tiña un ficheiro de configuración activo. Poiden solucionalo instalando o módulo Easy Install que podemos atopar no seguinte enderezo:

https://www.drupal.org/project/easy_install

Con este módulo, ao pinchar en extend, aparece unha nova pestana que indica "Purge configurations", eleximos o módulo php_filter e eliminamos todas as configuracións

Seguidamente vamos a módulos, e activamos novamente o PHP FILTER

4. ERROS

Se despois de facer todo o proceso, aparece esta mensaxe

O sitio web atopou un erro inesperado.
Por favor, inténteo de novo máis tarde.

Podemos revisar o erros de php, para visualizar que módulos están dando fallos.

admin/reports/dblog (log de php)

Ese módulo debemos de desinstalalo, eliminar toda a configuración (co módulo easy install)e proceder a instalalo novamente.

 

 

Engadir follas de estilo CSS a Drupal 8

Submitted by martin on Lun, 06/10/2019 - 23:26
drupal_8

 

Procedo a explicar o procedemento para engadir CSS en Drupal 8 co tema bootstrap, pero entendo que se fai de maneira análoga con calquera outro tema:

Accedemos á carpeta do tema, neste caso bootstrap

cd /var/www/html/drupal/web/themes/bootstrap

Editamos o seguinte fichiero:

nano bootstrap.info.yml

Na sección libraries, engadimos o nome da nosa librería personalizada, que no paso seguinte editaremos (bootstrap.libraries.yml). No meu caso engado a librería bootstrap/martin

libraries:
  - 'bootstrap/theme'
  -  bootstrap/martin

Editamos seguidamente o ficheiro das librerías:

nano bootstrap.libraries.yml

E creamos unha sección ao final do ficheiro. No meu caso chameille martin

martin:
  version: VERSION
  css:
    base:
       css/base/atio.css: {}


E por último teño que crear o ficheiro atio.css en ruta /drupal/themes/bootstrap/css/base/atio.css. E neste css engado as regras CSS desexadas.

Pero, falta un paso importante. Deberemos de ir a Configuración. Neste apartado, e concretamente en Rendemento debemo de valeirar a caché, para que se cargue o novo ficheiro CSS

CSS NUN DRUPAL MULTISITE

No caso dun Drupal multisite, antes de nada deberemos de facer unha copia do tema no site correspondente

cd /var/www/html/drupal/web/themes/

cp -rp bootstrap /var/www/html/drupal/sites/blog/themes

E tal e como expliquei desde o principio, seguir os mesmos pasos, pero iso si, coa nova ruta específica para o site correspondente, neste caso blog (/var/www/html/drupal/sites/blog/themes)

CSS EXTERNO

Se desexamos ter un ficheiro CSS externo, que nos poida servir para varios sitios con Drupal, cambiamos na librería bootstrap.libraries.yml

martin:
  version: VERSION
  css:
    base:
      https://atio.es/pub/blog_atio.css: { type: external, minified: true}

 

 

Engadir cifrado https con certbot nun servidor Apache

Submitted by martin on Lun, 06/10/2019 - 22:26
certbot

1. Instalar certbot e python-cerbot-apache

apt-get install -t certbot
apt-get install -t python-certbot-apache

2. Activamos módolos ssl

sudo a2enmod ssl

pero se ao reiniciar o servizo de apache, é posible que falle.

systemctl restart apache2

Solución

Non conseguía que arrancara o Apache, daba erro. O problema era debido a que outro programa está  empregando o porto 443. Coa seguinte instrucción pódese averiguar de cal se trata, moi probablemente sexa o sshd. Debemos de paralo, e seguidamente iniciamos de novo o servizo de Apache. No meu caso tiven que reinstalar posteriormente o ssh-server.

netstat -tlpn | grep 443

service sshd stop

systemctl restart apache2

 

3. Creamos os ficheiros coas chaves públicas e privadas. Unha vez creadoos, aparecerán na seguinte ruta: /etc/letsencrypt/live/

certbot certonly --webroot -w /var/www/html/tic -d blog.atio.es

Se ao final aparece a seguinte mensaxe, fixémolo ben

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/www.atio.es/fullchain.pem. Your cert will
   expire on 2018-05-16. To obtain a new or tweaked version of this
   certificate in the future, simply run certbot again. To
   non-interactively renew *all* of your certificates, run "certbot
   renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

 

4. Debemos de configurar o virtual host /etc/apache2/site-avaliable

#Páxina web do servidor do centro
<VirtualHost 128.199.58.55:80>
ServerAdmin martindetecnoloxia@gmail.com
ServerName  http://www.atio.es
ServerAlias blog.atio.es
# Indexes + Directory Root.
DirectoryIndex index.php
DocumentRoot /var/www/html/drupal
Options FollowSymLinks
<Directory "/var/www/html/drupal">
      AllowOverride All
</Directory>
 RewriteEngine On
  RewriteCond %{HTTPS} off
  RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>
<VirtualHost 128.199.58.55:443>
ServerAdmin martindetecnoloxia@gmail.com
ServerName  http://www.atio.es
ServerAlias blog.atio.es
# Indexes + Directory Root.
DirectoryIndex index.php
DocumentRoot /var/www/html/drupal
Options FollowSymLinks
<Directory "/var/www/html/drupal">
      AllowOverride All
</Directory>
SSLEngine on
       SSLCertificateFile /etc/letsencrypt/live/blog.atio.es/cert.pem
       SSLCertificateKeyFile /etc/letsencrypt/live/blog.atio.es/privkey.pem
       SSLCertificateChainFile /etc/letsencrypt/live/blog.atio.es/chain.pem
</VirtualHost>

Co seguinte código engadido no código que acabamos de visualizar forzamos a visualización da páxina en https

 RewriteEngine On
  RewriteCond %{HTTPS} off
  RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

Borramos /etc/apache2/site-enabled/atio.es.conf

Volemos a /etc/apache2/site-avaliable

a2ensite atio.es.conf

systemctl reload apache2

 

5. Abrimos o cortafuegos. No meu caso engadín as seguintes instrucións

sudo ufw allow 'WWW Full'

sudo ufw allow 'SSH' 

sudo iptables -I INPUT -p tcp --dport 443 -j ACCEPT

 

6. Engadimos unha tarefa cron para que nos renove os certificados, pois caducan aos 90 días

Crontab -e

30 1 * * 1 /usr/bin/certbot renew >> /var/log/le-renew.log

 

Instalar colorbox en Drupal 8

Submitted by martin on Lun, 06/10/2019 - 11:02

O módulo ColorBox no Drupal 8 substitúe ao módulo Lightbox nas versións anteriores de Drupal.

1. Procedemos a instalar a librería

a. Descargar a librería

b. Descomprimir o ficheiro e renomealo como "colorbox"

c. Subilo cartafol á ruta: drupal/libraries

d. Fixarnos que a ruta ao ficheiro jquery.colorbox-min.js, queda do seguinte xeito:

drupal/libraries/colorbox/jquery.colorbox-min.js"

2. Instalación do módulo colorbox

https://www.drupal.org/project/colorbox

Acelerar Drupal

Submitted by martin on Lun, 06/10/2019 - 08:48

Podemos acelerar un pouco Drupal empregando o módulo memcache. Antes de nada debemos de instalar o módulo memcached de php

apt install php-memcached (para php versión 7)

apt install php5-memcached (para php versión 5)

Reiniciamos o servizo Apache2

systemctl restart apache2

En Drupal engadimos o módulo memcache:

https://www.drupal.org/project/memcache

 

Subscribe to configuración