vi /etc/nginx/sites-available/cms.conf
server { listen 80; listen [::]:80; server_name cms.<domaine-sinp>; location / { # ATTENTION : si le header HOST n'est pas renvoyé Wordpress utilise l'url 127.0.0.1:50080 pour les fichiers CSS, JS... proxy_set_header Host $http_host; proxy_set_header X-Real-IP $realip_remote_addr; proxy_set_header X-Forwarded-Host $host:$server_port; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_pass http://127.0.0.1:50080/;# ATTENTION : bien mettre un slash final ! Sinon => erreur 404 } }
cd /etc/nginx/sites-enabled/ ; ln -s ../sites-available/cms.conf cms.conf
nginx-reload
ou nginx -t && nginx -s reload
docker network ls
cd ~/docker/cms.silene.eu
docker-compose up
CTRL+C
docker-compose up -d
docker compose down
certbot --nginx -d cms.<domaine-sinp>
server { listen 443 ssl http2; # managed by Certbot listen [::]:443 ssl http2; # managed by Certbot server_name cms.<domaine-sinp>; location / { # ATTENTION : si le header HOST n'est pas renvoyé Wordpress utilise l'url 127.0.0.1:50080 pour les fichiers CSS, JS... proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Host $host:$server_port; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_pass http://127.0.0.1:50080/;# ATTENTION : bien mettre un slash final ! Sinon => erreur 404 } ssl_certificate /etc/letsencrypt/live/cms.<domaine-sinp>/fullchain.pem; # managed by Certbot ssl_certificate_key /etc/letsencrypt/live/cms.<domaine-sinp>/privkey.pem; # managed by Certbot include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot } server { listen 80; listen [::]:80; server_name cms.<domaine-sinp>; return 302 https://$host$request_uri; }
Par exemple, pour basculer le domaine cms.silene.eu vers silene.eu et en redirigeant www.silene.eu// vers silene.eu. Les étapes de la procédure à suivre sont : * au préalable, il est nécessaire de mettre à jour le certificat SSL pour inclure les nouveaux domaines www.silene.eu// et silene.eu. Ces domaines sont déjà attribué à un serveur en production. Il est donc nécessaire d'installer un plugin de Certbot : certbot-dns-ovh. Ce plugin, spécifique à OVH, va nous permettre de générer un certificat même si ces domaines ne pointent pas vers l'IP du nouveau serveur dans la zone DNS du domaine silene.eu.
aptitude install python3-certbot-dns-ovh
<domaine-sinp>
par le nom de domaine principal (Ex. : "silene.eu") :GET /domain/zone/ GET: /domain/zone/<domaine-sinp>/ GET /domain/zone/<domaine-sinp>/status GET /domain/zone/<domaine-sinp>/record GET /domain/zone/<domaine-sinp>/record/* POST /domain/zone/<domaine-sinp>/record POST /domain/zone/<domaine-sinp>/refresh DELETE /domain/zone/<domaine-sinp>/record/*
vi /root/.ovhapi
<…>
seront remplacées par celles obtenues précédemment : dns_ovh_endpoint = ovh-eu dns_ovh_application_key = <application-key> dns_ovh_application_secret = <application-secret> dns_ovh_consumer_key = <consumer-key>
chmod 600 /root/.ovhapi
--certname
a échouée : certbot certonly --dns-ovh --dns-ovh-credentials ~/.ovhapi --cert-name cms.silene.eu -d silene.eu,www.silene.eu,cms.silene.eu
certbot certonly --dns-ovh --dns-ovh-credentials ~/.ovhapi -d silene.eu,www.silene.eu,cms.silene.eu
Renew & replace the cert (limit ~5 per 7 days)
a été sélectionnée/etc/letsencrypt/renewal/cms.<domaine-sinp>
. Sous la section [renewalparams]
:dns_ovh_credentials
authenticator
par nginx
installer = nginx
server_name
ainsi : server_name <domaine-sinp> www.<domaine-sinp> cms.<domaine-sinp>;
server_name silene.eu www.silene.eu cms.silene.eu;
nginx-reload
server { listen 443 ssl http2; # managed by Certbot listen [::]:443 ssl http2; # managed by Certbot server_name <domaine-sinp> www.<domaine-sinp> cms.<domaine-sinp>; client_max_body_size 12M; location / { # ATTENTION : si le header HOST n'est pas renvoyé Wordpress utilise l'url 127.0.0.1:50080 pour les fichiers CSS, JS... proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Host $host:$server_port; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_pass http://127.0.0.1:50080/;# ATTENTION : bien mettre un slash final ! Sinon => erreur 404 } ssl_certificate /etc/letsencrypt/live/cms.<domaine-sinp>/fullchain.pem; # managed by Certbot ssl_certificate_key /etc/letsencrypt/live/cms.<domaine-sinp>/privkey.pem; # managed by Certbot include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot } server { listen 80; listen [::]:80; server_name <domaine-sinp> www.<domaine-sinp> cms.<domaine-sinp>; return 302 https://<domaine-sinp>$request_uri; }
La dernière étapes consiste à mettre à jour l'URL enregistrée pour Wordpress :
search-replace
: https://developer.wordpress.org/cli/commands/search-replace/#examplesSi vous souhaitez depuis votre ordinateur accéder à un site dont les entrées DNS publiques ne pointent pas vers le bon serveur, il est nécessaire de modifier son fichier /etc/hosts. Voici les manipulations à réaliser suivant votre système d'exploitation :
vi /etc/hosts
#
au début) contenant, par exemple : 51.91.137.130 silene.eu www.silene.eu cms.silene.eu
Windows
Notepad
dans le champ de recherchec:\Windows\System32\Drivers\etc\hosts
#
au début) contenant : 51.91.137.130 silene.eu www.silene.eu cms.silene.eu
C:\Windows\System32\Drivers\etc\hosts
#
au début) contenant : 51.91.137.130 silene.eu www.silene.eu cms.silene.eu
#
au début) au fichier /etc/hosts est : 51.91.137.130 silene.eu www.silene.eu cms.silene.eu
$phpmailer
avec son propre code.php.ini
du container contenant le Wordpress en y indiquant les paramètres suivant : file_uploads = On upload_max_filesize = 12M post_max_size = 12M
client_max_body_size 12M;
client_max_body_size
soit au niveau de la configuration globale du serveur soit au niveau de la section server
du domaine concerné.wp-config.php
du container cms-wordpress
(Voir comment modifier ce fichier). Modifier également la valeur dans le fichier .env
du dossier contenant le docker-compose.yml
. curl https://analytics.silene.eu
. Si Curl affiche "no route to host", le problème vient de Firewalld qui bloque l'accès depuis le container Docker.docker exec -it cms-volumerize /bin/bash
cd /opt/volumerize
CUR_DIR='/opt/volumerize
après la première ligne du fichier : vi /otp/volumerize/create_jobber.sh
./create_jobber.sh
vi /root/.jobber
jobber reload -a
jobber list
jobber test <nom-du-job>
/home/admin/docker/cms.<domaine-sinp>/backup
cms-volumerize
. Ce service lance le container blacklabelops/volumerize qui contient l'outil Duplicity. Ce dernier se charge des sauvegardes et restauration.docker-compose stop cms-volumerize
docker-compose -f docker-compose.restore.yml run cms-volumerize-restore-from-local verify
-t
et un tempsdocker-compose -f docker-compose.restore.yml run cms-volumerize-restore-from-local restore
-t
et un temps. Exemple pour restaurer l'état 3 jours avant : docker-compose -f docker-compose.restore.yml run cms-volumerize-restore-from-local restore -t 3D
docker-compose restart cms-nginx cms-wordpress cms-mariadb cms-adminer cms-volumerize
docker-compose -f docker-compose.restore.yml run cms-volumerize-restore-from-dropbox restore
docker-compose.yml
/wordpress/build/Dockerfile
.rsync -av ./ admin@web-<region>-sinp:~/docker/<dossier-docker-cms>/ --dry-run
cd ~/docker/cms.silene.eu/
docker-compose down
docker-compose up -d
/var/www/html/
a été placé dans un volume docker. Ainsi, la mise à jour de l'image ne met pas à jour le CMS… Cette seconde mise à jour met donc bien à jour le CMS et sa base de données.S'il est nécessaire de mettre à jour la configuration du Docker Wordpress, il faut :
ssh admin@<sinp-web>
docker exec -it cms-wordpress /bin/bash
vi /var/www/html/wp-config.php
exit
scp
. Ex. : scp ./mon_image.png admin@web-<region>-sinp:/home/admin/docker/cms.silene.eu/wordpress/home/
ssh admin@web-<region>-sinp
cd ~/docker/cms.silene.eu/wordpress/home/
docker cp ./mon_image.png cms-wordpress:/var/www/html/wp-content/uploads/2020/11/mon_image.png
docker exec -it --user root cms-nginx /bin/bash
docker exec -it cms-wordpress --user root /bin/bash
docker-compose down --volumes
docker-compose -f docker-compose.yml -f docker-compose.dev.yml config