Plataforma Drupal usada nos sites da FFLCH. Os módulos e bibliotecas estão em composer.json. Principais diretórios:
- web/profiles/contrib/fflchprofile: profile com módulos e configurações customizações
Biblioteca do php:
apt-get install php php-common php-cli php-gd php-curl php-xml php-mbstring php-zip php-sybase
Bancos de dados:
apt-get install mariadb-server php-mysql sqlite3 php-sqlite3
Instalação do composer:
curl -s https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
Download e instalação das dependências:
git clone [email protected]:SEU-USERNAME/drupal.git
cd drupal
composer install
Instalação usando o profile fflch com sqlite:
./vendor/bin/drush site-install fflchprofile \
--db-url=sqlite://sites/default/files/.ht.sqlite \
--site-name="fflch" \
--site-mail="fflch@localhost" \
--account-name="fflch" \
--account-pass="fflch" \
--account-mail="fflch@localhost" --yes
Servidor http básico:
cd drupal
./vendor/bin/drupal serve -vvv
Caso queira escolher ip e porta:
./vendor/bin/drupal serve 0.0.0.0:8000 -vvv
Criando nodes aleatórios:
./vendor/bin/drupal create:nodes
Deletando todos nodes:
./vendor/bin/drupal entity:delete node --all
Se quiser apagar o banco para fazer uma instalação zerada:
# mysql
./vendor/bin/drupal database:drop
# sqlite
rm web/core/default/files/.ht.sqlite
Exemplos de instalação de novos módulos:
cd drupal
composer require drupal/webform:5.1
composer require drupal/smtp:1.0-beta4
Libraries são instaladas usando assest-packgist, assim, consulte o nome da biblioteca em https://asset-packagist.org e depois instale desta forma:
composer require npm-asset/datetimepicker:0.1.38
Verificando se há atualizações para os módulos/temas/biliotecas:
composer outdated -D
Lembre-se que ao alterar a versão de um módulo deve-se verificar se há patches aplicados no mesmo na seção extra.patches do composer.json.
Módulos que estão em composer.json para avaliar:
composer show -D | tr -s ' ' | cut -d' ' -f1| grep ^drupal | cut -d'/' -f2
Removendo módulo:
- Remover do /web/profiles/contrib/fflchprofile/modules/fflch_configs/src/installed.txt caso lá ele esteja
- Remover do composer.json
- "A quente" remover da plataforma que está no ar em web/profiles/contrib/fflchprofile/modules/fflch_configs/src/installed.txt para ele não ser instalado novamente na rodada do cron
- com drush pm-uninstall desabilitar o módulos de todos sites que estão no ar
- subir nova plataforma já sem o módulo e migrar os sites
As vezes, novas configurações são incorporadas ao site modelo, para aplicar essa nova configuração pode-se fazer:
drush @cjc.fflch.usp.br config-set aegan.settings slideshow_display '0' --yes
O mesmo comando para todos sites na pasta sites:
for i in $(ls|grep fflch); do drush @$i config-set aegan.settings slideshow_display '0' --yes ;done
Situação contrária: configurações que precisaram ser removidas, algumas recorrentes:
drush @cea.fflch.usp.br config-delete languageicons.settings
drush @cea.fflch.usp.br config-delete captcha.captcha_point.user_pass
drush @cea.fflch.usp.br config-delete captcha.settings
drush @cea.fflch.usp.br config-delete captcha.captcha_point.user_login_form
Há dois tipos de configurações:
- instalação: aplicada somente na criação do site
- sincronização: aplicadas a cada rodada do cron
As configurações de instalação estão definidas em arquivos .yml no diretório fflchprofile/config/install.
As configurações de sincronização estão em fflchprofile/modules/fflch_configs/config/mandatory.
Passos para fazer modificações:
- Identificar os arquivos .yml que executam a modificação
- Salvar e commitar esses arquivos na pasta modules/fflch_configs/config/mandatory ou *fflchprofile/config/install
Dica para capturar os arquivos yml que estão relacionados as configurações:
./vendor/bin/drush config-export --destination="~/antes"
Fazer mudanças na interface do site e exportar nova configuração:
./vendor/bin/drush config-export --destination="~/depois"
Vejam os arquivos alterados:
diff -qr ~/antes/ ~/depois
Suponha que teve alteração em editor.editor.full_html.yml:
vimdiff ~/antes/editor.editor.full_html.yml ~/depois/editor.editor.full_html.yml
Usando o meld para fazer as comparações:
sudo apt install meld
meld ~/antes ~/depois
Modelo de como acrescentar patches no composer.json:
"extra": {
"patches": {
"drupal/editor_file": {
"3057895 - Uploaded files are not permanent":
"https://www.drupal.org/files/issues/2019-05-29/file-upload-marked-permanent-3057895-2.patch"
}
}
}
Essa correção dever ser feita no ambiente dev e depois transposta para produção. Aplicar o patch disponínel https://www.drupal.org/project/drupal/issues/3011276#comment-13228934 e depois rodar:
./vendor/bin/drush config-get language.pt-br:system.site
./vendor/bin/drush config-delete language.pt-br:system.site slogan
./vendor/bin/drush config-delete language.pt-br:system.site name
./vendor/bin/drush config-delete language.pt-br:system.site page.front home-pt-br
Para subir um dump na máquina local, algumas configurações devem ser deletadas:
./vendor/bin/drush config-delete system.file path
sites migrados do d7 contém um problema de campos não poderem ser traduzidos pois o langcode está com und (undefinided). Para corrigir:
drush @filosofia.fflch.usp.br config-set field.storage.node.field_banca langcode pt-br --yes
Muitos sites migrados do drupal 6 ou 7 estavam com o valor de path em locale.settings.yml como sites/default/files/translations. Para verificar todos:
for i in $(ls | grep fflch.usp.br);do drush @$i config-get locale.settings translation.path; done
Para corrigir todos:
for i in $(ls | grep fflch.usp.br);do drush @$i config-set locale.settings translation.path sites/$i/files/translations --yes; done