Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
technique:adminserv:sites:website [2022/04/17 08:35] – [Généralités] rdelaage | technique:adminserv:sites:website [2022/04/17 14:11] (Version actuelle) – [Personnaliser la configuration] ppom | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | {{indexmenu_n> | ||
+ | # Ajouter un site web sur le domaine Picasoft | ||
+ | ## Généralités | ||
+ | |||
+ | Historiquement, | ||
+ | |||
+ | > Deploy your applications in separate containers independently and in different languages. Reduce the risk of conflict between languages, libraries or frameworks. | ||
+ | |||
+ | Il faut donc créer un nouveau projet sur [le groupe Gitlab dédié aux sites statiques](https:// | ||
+ | |||
+ | Le lancement d'un nouveau site peut [[technique: | ||
+ | |||
+ | ## Modèle pour un nouveau site « statique » | ||
+ | |||
+ | Un site de base peut être déployé à partir de modèle de fichier Compose. | ||
+ | |||
+ | < | ||
+ | |||
+ | < | ||
+ | |||
+ | ```yaml | ||
+ | version: " | ||
+ | |||
+ | volumes: | ||
+ | monbeausite: | ||
+ | name: monbeausite | ||
+ | |||
+ | networks: | ||
+ | proxy: | ||
+ | external: true | ||
+ | |||
+ | services: | ||
+ | web: | ||
+ | container_name: | ||
+ | image: nginx:< | ||
+ | volumes: | ||
+ | - monbeausite:/ | ||
+ | labels: | ||
+ | traefik.http.routers.monbeausite.entrypoints: | ||
+ | traefik.http.routers.monbeausite.rule: | ||
+ | traefik.http.services.monbeausite.loadbalancer.server.port: | ||
+ | traefik.enable: | ||
+ | networks: | ||
+ | - proxy | ||
+ | restart: unless-stopped | ||
+ | ``` | ||
+ | |||
+ | < | ||
+ | |||
+ | ## Personnaliser la configuration | ||
+ | |||
+ | La configuration de nginx se trouve dans le fichier `/ | ||
+ | |||
+ | Néanmoins, pour les configurations complexes, il est possible de monter son propre fichier de configuration. | ||
+ | |||
+ | < | ||
+ | |||
+ | On rajoutera alors au fichier Compose présenté plus haut : | ||
+ | |||
+ | ```yaml | ||
+ | version: " | ||
+ | [...] | ||
+ | services: | ||
+ | web: | ||
+ | volumes: | ||
+ | [...] | ||
+ | - ./ | ||
+ | [...] | ||
+ | ``` | ||
+ | |||
+ | ## Exemples de personnalisation | ||
+ | |||
+ | < | ||
+ | Pour aller plus loin : | ||
+ | |||
+ | * [Documentation de référence pour les directives nginx](http:// | ||
+ | * [Examples pédagogiques de configuration pour sites statiques](https:// | ||
+ | |||
+ | </ | ||
+ | |||
+ | ### Changer la racine | ||
+ | |||
+ | Par défaut, le contenu est servi depuis `/ | ||
+ | |||
+ | ``` | ||
+ | worker_processes auto; | ||
+ | |||
+ | error_log | ||
+ | pid / | ||
+ | |||
+ | events { | ||
+ | worker_connections | ||
+ | } | ||
+ | |||
+ | http { | ||
+ | include | ||
+ | default_type | ||
+ | |||
+ | log_format | ||
+ | ' | ||
+ | '" | ||
+ | |||
+ | access_log | ||
+ | |||
+ | server { | ||
+ | listen 80; | ||
+ | |||
+ | root / | ||
+ | index index.html index.htm; | ||
+ | } | ||
+ | } | ||
+ | ``` | ||
+ | |||
+ | < | ||
+ | |||
+ | Ici, la directive à regarder est `root / | ||
+ | |||
+ | ### Activer la compression | ||
+ | |||
+ | La compression permet de réduire la taille des réponses du serveur web, cela permet donc d' | ||
+ | |||
+ | ``` | ||
+ | [...] | ||
+ | http { | ||
+ | [...] | ||
+ | gzip on; | ||
+ | gzip_vary on; | ||
+ | gzip_comp_level 4; | ||
+ | gzip_min_length 256; | ||
+ | gzip_types application/ | ||
+ | [...] | ||
+ | } | ||
+ | ``` | ||
+ | |||
+ | La directive `gzip on;` permet d' | ||
+ | |||
+ | < | ||
+ | |||
+ | ### Activer l' | ||
+ | |||
+ | Par défaut, l' | ||
+ | |||
+ | Nous pouvons néanmoins vouloir activer cette indexation pour un serveur offrant du contenu culturel par exemple. Dans ce cas nous pouvons modifier la section `server` comme suit : | ||
+ | |||
+ | ``` | ||
+ | [...] | ||
+ | http { | ||
+ | [...] | ||
+ | server { | ||
+ | autoindex on; | ||
+ | [...] | ||
+ | } | ||
+ | } | ||
+ | ``` | ||
+ | |||
+ | La directive `autoindex on;` permet de dire à nginx, que quand le client demande un dossier, il ne faut pas lui répondre que la demande est interdite mais lui afficher une liste du contenu disponible dans le dossier. | ||
+ | |||
+ | ## Configurer PHP | ||
+ | |||
+ | Finalement, il arrive que nous voulions servir des pages dynamiques avec PHP, pour cela il faut ajouter un conteneur qui se chargera d' | ||
+ | |||
+ | Ce conteneur doit pouvoir communiquer avec notre serveur web pour recevoir les demande et envoyer le contenu, il faut donc aussi créer un réseau qu'ils partageront. Enfin le conteneur PHP doit pouvoir accéder au code PHP à exécuter, dans ce cas il faut lui donner le contenu web et donc monter les fichiers servis par `nginx`. | ||
+ | |||
+ | Le fichier Compose dans sa version statique est modifié comme suit : | ||
+ | |||
+ | ```yaml | ||
+ | [...] | ||
+ | networks: | ||
+ | app: | ||
+ | name: " | ||
+ | [...] | ||
+ | |||
+ | services: | ||
+ | app: | ||
+ | container_name: | ||
+ | image: php: | ||
+ | volumes: | ||
+ | - monbeausite:/ | ||
+ | networks: | ||
+ | - app | ||
+ | restart: unless-stopped | ||
+ | |||
+ | web: | ||
+ | [...] | ||
+ | networks: | ||
+ | [...] | ||
+ | - app | ||
+ | ``` | ||
+ | |||
+ | Il faut ensuite indiquer à Nginx qu'il faut contacter le serveur PHP lorsqu' | ||
+ | |||
+ | C'est en particulier les directives `http` et `server` qui seront modifiées : | ||
+ | |||
+ | ``` | ||
+ | [...] | ||
+ | http { | ||
+ | [...] | ||
+ | upstream php-handler { | ||
+ | server monbeausite-app: | ||
+ | } | ||
+ | |||
+ | server { | ||
+ | [...] | ||
+ | fastcgi_buffers 64 4K; | ||
+ | |||
+ | location ~ \.php$ { | ||
+ | try_files $uri =404; | ||
+ | fastcgi_param SCRIPT_FILENAME / | ||
+ | include fastcgi_params; | ||
+ | fastcgi_index index.php; | ||
+ | fastcgi_pass php-handler; | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | ``` | ||
+ | |||
+ | La directive `upstream php-handler` définit le serveur qui peut être utilisé pour exécuter le code PHP (il peut en contenir plusieurs). Il contient la directive `server monbeausite-app: | ||
+ | |||
+ | Finalement `location ~ \.php$` indique comment traiter tous les fichiers ayant l' | ||
+ | |||
+ | < | ||
+ | |||
+ | ## Ajouter du contenu | ||
+ | |||
+ | Il suffit d' | ||
+ | |||
+ | La commande `docker cp` permet de copier des fichiers locaux dans un conteneur. Par exemple : | ||
+ | |||
+ | ```bash | ||
+ | docker cp < | ||
+ | ``` | ||
+ | |||
+ | À ce stade, le site est prêt à être servi, il ne reste plus qu'à ajouter l' | ||
+ | |||
+ | < | ||
+ | |||
+ | ## Ajout du sous domaine | ||
+ | |||
+ | En filant l' | ||
+ | |||
+ | Pour ce faire, on se référera à la [[technique: |