Auteur Sujet: retour utilisation serveur web caddy 2  (Lu 5739 fois)

0 Membres et 1 Invité sur ce sujet

LeNuageux

  • Abonné Free fibre
  • *
  • Messages: 153
  • Mulhouse (68)
retour utilisation serveur web caddy 2
« le: 05 mai 2020 à 21:10:14 »
Bonsoir,

Je fait un petit post sur l'utilisation sur une instance scaleway perso sous Debian 10 Buster avec le serveur web caddy 2  (qui vient de sortir en version finale ) avec PHP 7.4 et MariaDB  :)

La page de présentation de Caddy 2 : https://caddyserver.com/

La documentation est ici : https://caddyserver.com/docs/  ;)

C'est un serveur hébergeant la solution de documentation Bookstack et la config via caddy est d'une simplicité ! :o

J'utilise un fichier de configuration que je mets dans /etc/caddy

Le serveur web est configuré pour démarrer avec le système une fois que le réseau est établi et charge mon fichier "Caddyfile"  :D

Ce qui me donne un site web en HTTPS avec tls 1.3 et 1.2 avec un certificat let's encrypt renouvelé automatiquement

Voici le fichier de configuration que j'utilise elle est compatible avec les principaux projets utilisant du php ( wordpress, joomla, bookstack, glpi, ocs inventory etc...)

# On met le nom de domaine que l'on veut rendre public HTTPS est actif automatiquement via Let's Encrypt
mon-domaine.fr

# On met l'emplacement des fichier web
root * /var/www/bookstack/public
# On active la compression
encode zstd gzip
# On pointe vers le service PHP
php_fastcgi unix//run/php/php7.4-fpm.sock
# On sert des fichiers statiques ( dont le fameux index.html index.php etc... )
file_server

Contrairement à Nginx je n'ai pas à indiquer dans mon fichier de configuration la configuration TLS, les fichier certificats à charger, ou encore la liste des cypher à utiliser ou je me contente de copier sur le site  de générateur de config de mozillia https://ssl-config.mozilla.org/

Il est possible de monter un petit serveur de fichier via HTTPS avec une simple ligne de commande  :P

caddy start file-server --domain mon-domaine.fr --browse
« Modifié: 06 mai 2020 à 09:15:56 par TheNewbieNetwork »

DamienC

  • Abonné Sosh fibre
  • *
  • Messages: 2 217
  • FTTH ↓ 300Mbps ↑ 300 Mbps sur Brest (29)
retour utilisation serveur web caddy 2
« Réponse #1 le: 05 mai 2020 à 21:37:23 »
La diff de perf est énorme entre nginx et caddy2...

bruno29

  • Abonné Bbox fibre
  • *
  • Messages: 8
retour utilisation serveur web caddy 2
« Réponse #2 le: 22 août 2020 à 08:35:39 »
Bonjour à tous,
j'expérimente actuellement caddy2 pour un test d' auto hébergement sur debian10 , l'installation de caddy s 'est bien déroulé , le serveur web fonctionne.
par contre j'ai un peu de mal avec le rewrite,je souhaiterai faire des url propores
actuellement j 'ai
https://nom de domaine/?xxxx
que je voudrai afficher en Url Propre sans le point ?
https://nom de domaine/xxxx
comment le transcrire sur caddy ?
Merci d'avance pour votre aide
Bruno
 

bruno29

  • Abonné Bbox fibre
  • *
  • Messages: 8
retour utilisation serveur web caddy 2
« Réponse #3 le: 23 août 2020 à 09:49:38 »
Bonjour,
Pour être plus précis je souhaite faire la conversion ci dessous (Apache) en Caddy
auriez une proposition , par avance merci , bonne journée

<ifModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?$1 [L]
</ifModule>

LeNuageux

  • Abonné Free fibre
  • *
  • Messages: 153
  • Mulhouse (68)
retour utilisation serveur web caddy 2
« Réponse #4 le: 24 août 2020 à 08:33:43 »
Bonjour,

Si je dis pas de bêtise la directive php_fastcgi le fait déjà https://caddyserver.com/docs/caddyfile/directives/php_fastcgi

Ton site est un CMS connu tel que Wordpress ou Joomla ou c'est un site perso monté à la main ?

Cordialement,


bruno29

  • Abonné Bbox fibre
  • *
  • Messages: 8
retour utilisation serveur web caddy 2
« Réponse #5 le: 24 août 2020 à 09:14:14 »
Bonjour,
merci pour votre réponse
j'utilise le cms Zwii https://demo.zwiicms.fr/ en auto hébergement
j 'ai recherché une solution avec rewrite utilisé dans caddyfile, mais d'après ce que j 'ai pu comprendre sur la version 2 de caddy cela ne fonctionne pas
il faudrait passé par try_files
https://caddyserver.com/docs/caddyfile/directives/try_files
je suis un peu novice dans ces directives j 'ai essayé plusieurs solutions mais sans succès
mon fichier caddyfile est (dans sa plus simple expression)
nomdedomaine.eu
root * /var/www/html/nomdedomaine.eu
file_server
php_fastcgi unix//run/php/php7.3-fpm.sock
encode zstd gzip
merci encore pour votre aide
Bruno


LeNuageux

  • Abonné Free fibre
  • *
  • Messages: 153
  • Mulhouse (68)
retour utilisation serveur web caddy 2
« Réponse #6 le: 24 août 2020 à 09:45:39 »
Le fichier caddyfile me semble correct j'aurais mis file_server à la fin, tu peut t'inspirer de mon exemple. Je l'utilise pour un site de doc bookstack

Citer
# Nom de domaine a servir en HTTPS
Nom.De.Domaine.fr

# Envoie les notifications du fonctionnement du certificat Let's Encrypt à l'administrateur système
tls Sysadmin@mail.com

# Bloc log
# Garde les logs pendant 1 an conformément à la loi française
log {
        output file /var/log/caddy/access.json {
                roll_size 1gib
                roll_keep 5
                roll_keep_for 8760h
        }
}


# Definition du chemin racine Web
root * /var/www/bookstack/public
# Compression
encode zstd gzip
# Backend PHP 7.X
php_fastcgi unix//run/php/php7.X-fpm.sock
# Fichier web à servir
file_server

Qu'est ce qui ne fonctionne pas actuellement ? tu arrives à avoir une page web qui s'affiche ?

Il faut bien penser à mettre les bons droits sur les fichiers Web

Lors de l'installation via les dépôt des devs de caddy, l'utilisateur caddy et le groupe caddy sont crées

chown -R caddy:caddy /var/www/monsite
Pour PHP via caddy, il faut penser ( et ce n'est pas indiqué dans la doc officielle malheureusement ..) à changer la config de php-fpm

Dans  /etc/php/7.4/fpm/pool.d/www.conf

Extrait de la config, il faut rechercher listen.owner et listen.group

Citer
; Set permissions for unix socket, if one is used. In Linux, read/write
; permissions must be set in order to allow connections from a web server. Many
; BSD-derived systems allow connections regardless of permissions. The owner
; and group can be specified either by name or by their numeric IDs.
; Default Values: user and group are set as the running user
;                 mode is set to 0660
listen.owner = caddy
listen.group = caddy

Enfin si tu souhaite avoir des logs de caddy
Citer
systemctl status caddy
journalctl -u caddy



kgersen

  • Modérateur
  • Abonné Bbox fibre
  • *
  • Messages: 9 092
  • Paris (75)
retour utilisation serveur web caddy 2
« Réponse #7 le: 24 août 2020 à 11:33:21 »
Bonjour à tous,
j'expérimente actuellement caddy2 pour un test d' auto hébergement sur debian10 , l'installation de caddy s 'est bien déroulé , le serveur web fonctionne.
par contre j'ai un peu de mal avec le rewrite,je souhaiterai faire des url propores
actuellement j 'ai
https://nom de domaine/?xxxx
que je voudrai afficher en Url Propre sans le point ?
https://nom de domaine/xxxx
comment le transcrire sur caddy ?
Merci d'avance pour votre aide
Bruno

si tu veux un ordre de traitement il faut utiliser 'route'.
d'ailleurs php_fastcgi  est un 'route' pré-défini, voir: https://caddyserver.com/docs/caddyfile/directives/php_fastcgi#expanded-form

donc adapte ta propre version pour 'rewrite' /xxxx en /?xxxx avant le traitement fastcgi/php.

aussi il ne faut pas confondre la directive 'try_files' avec le test 'try_files'. La directive 'try_files' est un raccourci utilisant le test "try_files" (voir https://caddyserver.com/docs/caddyfile/directives/try_files#expanded-form )

la "route" php_fastcgi  expliquée:

route {
   # Add trailing slash for directory requests
   @canonicalPath { #fait le "ET" des 2 blocs suivants
      file {
         try_files {path}/index.php # si path/index.php existe
      }
      not path */ # ET si y'a pas '/' a la fin (= si le path n'est pas de la forme "*/")
   }
   redir @canonicalPath {path}/ 308 # alors  on redirige ce qui a matcher en ajoutant un '/'

   # If the requested file does not exist, try index files
   @indexFiles {
      file {
         try_files {path} {path}/index.php index.php # le 1er des 3 qui existe est utilisé dans le rewrite (A)
         split_path .php # ignore ce qu'il y a apres  le ".php" s'il y a un .php
      }
   }
   rewrite @indexFiles {http.matchers.file.relative} # change l'url a ce qui a matché

   # insere ici ton rewrite /... -> /?.... (B)


   # Proxy PHP files to the FastCGI responder
   @phpFiles {
      path *.php
   }
   reverse_proxy @phpFiles <php-fpm_gateway> {
      transport fastcgi {
         split .php
      }
   }
}



pour le rewrite /... -> /?... un matcher avec un https://caddyserver.com/docs/caddyfile/matchers#path-regexp devrait suffire ou meme le try_files (A) en ajoutant le pattern. J'ai pas assez d'info sur les urls réels pour faire un exemple plus précis.

bruno29

  • Abonné Bbox fibre
  • *
  • Messages: 8
retour utilisation serveur web caddy 2
« Réponse #8 le: 24 août 2020 à 14:52:59 »
Bonjour TheNewbieNetwork,
mon site fonctionne bien sauf quand j'active le mode URL propre (Url sans le ?)
j 'ai bien pensé à mettre les droits à caddy dans www.conf (dans user , group ainsi que le listen.owner et listen.group
et dans l 'espace serveur www.
merci pour ton exemple de Caddyfile , je vais m 'en inspirer.

Bonjour Kgersen,
merci pour ces précieux renseignements  , je vais essayer de les mettre en application, la tache ne sera pas simple pour moi , je vais essayer de comprendre ces directives.
par défaut sous Zwii les url sont du type
https://demo.zwiicms.fr/?blog
https://demo.zwiicms.fr/?user/login/contact
en activant le mode rewrite dans la config Zwii (sous apache) elle s 'affiche sans le point ? comme ci dessous
https://demo.zwiicms.fr/blog
https://demo.zwiicms.fr/user/login/contact

je vous tiendrai informé de mes avancées prochainement.

merci encore à tous les deux

Bruno

bruno29

  • Abonné Bbox fibre
  • *
  • Messages: 8
retour utilisation serveur web caddy 2
« Réponse #9 le: 24 août 2020 à 19:58:57 »
Bonsoir kgersen,

si je comprends bien la "route" ci dessous remplace  "php_fastcgi unix//run/php/php7.3-fpm.sock"
j' ai donc dans Caddyfile commenté php_fastcgi unix//run/php/php7.3-fpm.sock et remplacé dans un premier temps par le code ci dessous pour voir si cela fonctionnait
et j'ai une erreur d 'exécution
août 24 19:43:27 Pc-Debian systemd[1]: Reloading Caddy.
août 24 19:43:27 Pc-Debian caddy[7022]: {"level":"info","ts":1598291007.1604536,"msg":"using provided configuration","config_file":"/etc/caddy/Caddyfile","config_adapter":""}
août 24 19:43:27 Pc-Debian caddy[7022]: reload: adapting config using caddyfile: parsing caddyfile tokens for 'route': /etc/caddy/Caddyfile:20 - Error during parsing: unrecognized directive: @canonicalPath
août 24 19:43:27 Pc-Debian systemd[1]: caddy.service: Control process exited, code=exited, status=1/FAILURE
août 24 19:43:27 Pc-Debian systemd[1]: Reload failed for Caddy.

Pour info j’utilise php7.3 , peut être faut il installer php7.4 ?
merci d 'avance pour tes conseils


route {
# Add trailing slash for directory requests
@canonicalPath {
file {
try_files {path}/index.php
}
not path */
}
redir @canonicalPath {path}/ 308

# If the requested file does not exist, try index files
@indexFiles {
file {
try_files {path} {path}/index.php index.php
split_path .php
}
}
rewrite @indexFiles {http.matchers.file.relative}

# Proxy PHP files to the FastCGI responder
@phpFiles {
path *.php
}
reverse_proxy @phpFiles <php-fpm_gateway> {
transport fastcgi {
split .php
}
}
}

kgersen

  • Modérateur
  • Abonné Bbox fibre
  • *
  • Messages: 9 092
  • Paris (75)
retour utilisation serveur web caddy 2
« Réponse #10 le: 24 août 2020 à 22:33:53 »
hum la doc n'est pas a jour & précise.

Les 'matchers' qui ont un nom comme par exemple, @canonicalPath doivent être défini au top level du site, pas dans le bloc 'route':

# Add trailing slash for directory requests
@canonicalPath {
        file {
                try_files {path}/index.php
        }
        not path */
}
# If the requested file does not exist, try index files
@indexFiles {
        file {
                try_files {path} {path}/index.php index.php
                split_path .php
        }
}
# Proxy PHP files to the FastCGI responder
@phpFiles {
        path *.php
}
route {
        redir @canonicalPath {path}/ 308

        rewrite @indexFiles {http.matchers.file.relative}

        reverse_proxy @phpFiles unix//run/php/php7.3-fpm.sock {
                transport fastcgi {
                        split .php
                }
        }
}

7.3 devrait marcher. Il faut juste que la version indiquée dans le Caddyfile corresponde a celle qui tourne dans la machine (visible avec 'pgrep -a php' ou 'ps faux | grep php').

en pratique:
    Caddyfile : unix//run/php/php7.3-fpm.sock
    -->
    ls -l /var/run/php/php7.3-fpm.sock pour vérifier que le socket est présent.

bruno29

  • Abonné Bbox fibre
  • *
  • Messages: 8
retour utilisation serveur web caddy 2
« Réponse #11 le: 25 août 2020 à 09:45:51 »
Bonjour kgersen,
pas toujours facile de se retrouver dans cette documentation qui malheureusement n 'est pas forcement à jour
le dernier code de ton post ci dessus ne provoque plus d'erreur.
Maintenant il faut que je trouve (ce n'est pas gagné) la bonne directive et syntaxe pour avoir une URL propre
Bonne journée et merci encore pour ton aide
Bruno