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:adminsys:sites:website [2020/02/14 15:13] – modification externe 127.0.0.1 | 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 | ||
- | ===== Sites existants ===== | + | ## Généralités |
- | * picasoft.net (dossier website) | + | Historiquement, |
- | * school.picasoft.net | + | |
- | * radio.picasoft.net | + | |
- | * doc.picasoft.net | + | |
- | ===== Généralités ===== | + | |
- | Les sites sont hébergés sur '' | + | > Deploy your applications in separate containers independently and in different languages. Reduce the risk of conflict between languages, libraries or frameworks. |
- | Le lancement d'un nouveau | + | Il faut donc créer |
- | ===== Procédure d' | + | Le lancement |
- | * Se connecter à '' | + | ## Modèle pour un nouveau site « statique » |
- | * Éditer le fichier ''/ | + | |
- | * Lancer le nouveau | + | |
- | * Le contenu du site doit être déposé dans son dossier personnel sur la machine | + | |
- | * Il est ensuite injecté dans le conteneur via la commande `docker cp . nom_conteneur:/ | + | |
- | * Il peut être nécessaire de mettre à jour les droits du site : `docker exec nom_conteneur chown -R www-data: | + | |
- | ===== Fichier docker-compose.yml ===== | + | Un site de base peut être déployé à partir de modèle de fichier Compose. |
+ | |||
+ | < | ||
+ | |||
+ | < | ||
```yaml | ```yaml | ||
+ | version: " | ||
volumes: | volumes: | ||
- | example: | + | monbeausite: |
+ | name: monbeausite | ||
+ | |||
+ | networks: | ||
+ | proxy: | ||
+ | external: true | ||
services: | 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 | ||
+ | ``` | ||
- | #################### | + | < |
- | ##### Example ##### | + | |
- | #################### | + | |
- | example: | + | ## Personnaliser la configuration |
- | | + | |
- | image: | + | 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: | volumes: | ||
- | | + | [...] |
- | labels: | + | |
- | - " | + | [...] |
- | - " | + | |
- | - " | + | |
- | restart: always | + | |
``` | ``` | ||
- | ===== Ajout du sous domaine example.picasoft.net ===== | + | ## Exemples de personnalisation |
- | Sur la machine de test, le site sera directement disponible (sous '' | + | < |
+ | Pour aller plus loin : | ||
- | | + | * [Documentation de référence pour les directives nginx](http://nginx.org/en/docs/) |
- | * Faire les modifications (cf après) sur une nouvelle branche : '' | + | * [Examples pédagogiques de configuration pour sites statiques](https://docs.nginx.com/nginx/admin-guide/web-server/serving-static-content/ |
- | * Valider les modifications sur le serveur Git : '' | + | |
- | * Faire une *merge request* (adressée aux responsables techniques) : https://gitlab.utc.fr/picasoft/projets/zonefile-picasoft/merge_requests | + | |
- | ===== Éditer le fichier de zone ===== | + | </ |
- | * Incrémenter | + | ### Changer la racine |
- | * Ajouter sous-domaine | + | |
+ | Par défaut, | ||
``` | ``` | ||
- | example IN A 91.224.148.60 ; Serveur web d' | + | worker_processes auto; |
- | | + | |
+ | error_log | ||
+ | pid / | ||
+ | |||
+ | events { | ||
+ | worker_connections | ||
+ | } | ||
+ | |||
+ | http { | ||
+ | include | ||
+ | | ||
+ | |||
+ | log_format | ||
+ | ' | ||
+ | '" | ||
+ | |||
+ | access_log | ||
+ | |||
+ | server { | ||
+ | listen 80; | ||
+ | |||
+ | root / | ||
+ | index index.html index.htm; | ||
+ | } | ||
+ | } | ||
``` | ``` | ||
- | ===== Si l'image Docker Ngnix est absente | + | < |
+ | |||
+ | 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' | ||
+ | |||
+ | < | ||
- | * Demander les accès au registry aux responsables techniques | + | ## Ajout du sous domaine |
- | * Se connecter au registry : '' | + | |
- | * Récupérer l' | + | |
- | ===== Mise à jour ===== | + | En filant l' |
- | * Placer le nouveau contenu du site dans son `Home` | + | Pour ce faire, on se référera à la [[technique:adminsys:dns: |
- | * `cd` dans ce dossier | + | |
- | * `docker cp . nom_conteneur:/ | + |