Synology [Complément] Installer Wordpress sur votre NAS Synology avec Docker

morgyann

Maître Jedi
2 Février 2023
618
117
78
BZH
Contrairement à l’installation de Wordpress (WP) sur un navigateur Web, il y a pas mal de tutos concernant l’installation de WP avec Docker.

Ce tuto sera plus un complément à ce tuto du Blog de Marius que j’ai sélectionné (étapes pas à pas et bien illustré) – pour l’installation de WP en Docker (plus particulièrement sur un Synology mais aussi valable sur un autre OS).

Je reprendrais donc les mêmes étapes de ce tuto en apportant quelques précisions ainsi que des compléments indispensables pour le bon fonctionnement du WP :


  • Étape 2 : Installer « Éditeur de texte »

  • Étape 3 : Installer Portainer (Indispensable pour la suite du tuto ainsi que pour la maintenance de votre pile WP)

  • Étape 4 : Obtenir un certificat SSL pour votre Nom de Domaine (NDD) ou un wildcard Syno

  • Étape 5, 6, 7, 8 : Configurer le Proxy Inversé (le port proposé est le 8195 mais vous pouvez mettre un autre dans la mesure qu’il n’est pas occupé par une autre application).
Important : Retournez à Panneau de conf -> Sécurité -> Certificat et mettez en correspondance Service et Certificat (NDD = NDD).
  • Étape 11 et 12 : Créer le dossier wordpress (que vous pouvez appeler différemment si vous avez plusieurs sites en WP). Créer les sous dossiers db et redis (si vous souhaitez l’installer – si ce n’est pas le cas, il ne faudra pas mettre le script concernant redis) – Aussi, vous pouvez créer un sous dossier html dans lequel vous pouvez regrouper WP (il faudra indiquer le chemin dans votre script)

  • Étape 13 : Créer un fichier upload.ini (avec l’éditeur de texte) avec le script suivant :
Code:
file_uploads = On
memory_limit = 256M
upload_max_filesize = 512M (ou mettez 1000M si vous souhaitez)
post_max_size = 512M (ou mettez 1000M si vous souhaitez)
max_execution_time = 600

Si votre thème le nécessite, vous pouvez aussi créer un fichier php.ini (il ne faudra pas oublier d’indiquer le chemin dans le script) :
Code:
max_input_vars = 7000

  • Étape 14 : Se connecter à Portainer et ajouter une pile

  • Étape 15 : Donnez un nom à la pile et modifier à votre convenance le script (explicatif dans les parenthèses - à enlever si vous utiliser ces scripts) :
Code:
version: '3.9'
services:
  wordpress:
    image: wordpress:latest (la version php8.3 a présentée des "bugs" pour certains de mes sites)
    container_name: Monsite (nom choisi)
    hostname: monsite (nom choisi)
    healthcheck:
     test: curl -f http://localhost:80/ || exit 1
    ports:
      - 8184:80 (port choisi lors de la config du Proxy Inversé)
    depends_on:
      db:
        condition: service_started
      redis:
        condition: service_healthy
      phpmyadmin:
        condition: service_healthy
    volumes:
      - /volume1/docker/mon site:/var/www/html:rw (si vous avez créez un sous dossier html le chemin sera /volume1/docker/html/mon site)
      - /volume1/docker/monsite/uploads.ini:/usr/local/etc/php/conf.d/upload.ini:rw (chemin du fichier upload)
      - /volume1/docker/monsite/php.ini:/usr/local/etc/php/conf.d/php.ini:rw (chemin du fichier php si besoin)
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: mapomme
      WORDPRESS_DB_PASSWORD: monmotdepasse
      WORDPRESS_DB_NAME: monsite_db
    restart: on-failure:5

  db:
    image: mariadb:latest
    container_name: Monsite-DB
    security_opt:
      - no-new-privileges:true
    hostname: monsite-db

    environment:
      MYSQL_DATABASE: monsite_db
      MYSQL_USER: mapomme
      MYSQL_PASSWORD: monmotdepasse
      MYSQL_ROOT_PASSWORD: monmotdepasse
      TZ: Europe/Paris
    volumes:
      - /volume1/docker/monsite/db:/var/lib/mysql:rw
    restart: on-failure:5

  redis: (optionnel si vous souhaitez installer Redis)
    image: redis
    hostname: monsite-redis
    container_name: Monsite-REDIS
    user: 1026:100 (à vérifier)
    healthcheck:
     test: ["CMD-SHELL", "redis-cli ping || exit 1"]
    volumes:
      - /volume1/docker/monsite/redis:/data:rw
    environment:
      TZ: Europe/Paris
    restart: on-failure:5
      
  phpmyadmin: (optionnel)
    image: phpmyadmin
    hostname: monsite-phpmyadmin
    healthcheck:
     test: curl -f http://localhost:80/ || exit 1
    container_name: Monsite-phpMyAdmin
    ports:
      - 2800:80
    environment:
     PMA_HOST: monsite-db
     PMA_PORT: 3306
    restart: on-failure:5

  • Étape 16 et 17 : Déployez la pile

Important : Depuis qques temps, les autorisations d’accès à votre dossier wordpress changent lors du déploiement de la pile – Avant de configurer, vous retournez dans File Station puis : ->docker->wordpress (ou nom donné si changement)->Propriétés (clic droit) et changer le propriétaire par votre id. Puis dans l'onglet -> Permissions (retirer les utilisateurs créés pendant le déploiement souvent des numéros) -> créer (si pas présent) -> votre id admin (control) + SYSTEM (lire+écrire) + Everyone (lire) -> Appliquer à ce dossier ... Valider.
  • Étape 19 et vous pouvez maintenant continuer le tuto référencé

CRON : Marius propose aussi en complément d'utiliser cette fonctionnalité via votre Syno plutôt que celle intégrée à WP - Cette méthode fonctionne en général bien - En revanche, certains plugins sont incompatibles avec cette manip et vous demanderont de réactiver cette fonction via le CMS WP.

Mise à jour d'images (Plus particulièrement WP et DB)
Les mises à jour d'images sont assez fréquentes sur ce type d'installation et génèrent des dysfonctionnements :

- Uploads non autorisés
-> Dans ce cas, il vous faut "re-sauvegarder" les autorisations (avec "appliquer à ce dossier ...") au niveau du dossier WP -> Propriétés -> Autorisations.

- Base de Données injoignable -> Dans ce cas, vous ouvrez Portainer -> Stacks -> wordpress -> (onglet) Editor -> (en bas de la page) Update the stack -> (sur le pop-up) repousser l'image - La pile va se redéployer et tout devrait redevenir à la normale :)
 
Dernière édition: