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 Prochaine révisionLes deux révisions suivantes | ||
technique:adminsys:sites:website [2020/02/06 16:28] – ↷ Page déplacée de adminsys:sites:website à technique:adminsys:sites:website qduchemi | technique:adminserv:sites:website [2022/04/17 11:39] – qduchemi | ||
---|---|---|---|
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 à '' | + | ## Déploiement |
- | * Éditer le fichier ''/ | + | |
- | * Lancer le nouveau container '' | + | |
- | * 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 | + | |
- | ===== Fichier | + | Un site de base peut être déployé à partir de ce docker-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 | ||
+ | ``` | ||
- | #################### | + | ## Personnaliser la configuration |
- | ##### Example ##### | + | |
- | #################### | + | |
- | example: | + | La configuration de Nginx se trouve dans le fichier `/ |
- | container_name: | + | ```yaml |
- | image: | + | version: " |
+ | |||
+ | volumes: | ||
+ | monbeausite: | ||
+ | name: monbeausite | ||
+ | |||
+ | networks: | ||
+ | proxy: | ||
+ | external: true | ||
+ | |||
+ | services: | ||
+ | web: | ||
+ | container_name: | ||
+ | image: nginx:1.21-alpine | ||
volumes: | volumes: | ||
- | - example:/ | + | - ./ |
+ | - culture:/ | ||
labels: | labels: | ||
- | | + | traefik.http.routers.monbeausite.entrypoints: |
- | | + | traefik.http.routers.monbeausite.rule: |
- | | + | traefik.http.services.monbeausite.loadbalancer.server.port: 80 |
- | restart: | + | traefik.enable: true |
+ | networks: | ||
+ | - proxy | ||
+ | restart: | ||
``` | ``` | ||
- | ===== Ajout du sous domaine example.picasoft.net ===== | + | Une première chose que nous pouvons faire, c'est de changer l' |
+ | ``` | ||
+ | worker_processes auto; | ||
- | Sur la machine de test, le site sera directement disponible (sous '' | + | error_log |
+ | pid / | ||
- | * Récupérer le fichier '' | + | events { |
- | | + | |
- | * Valider les modifications sur le serveur Git : '' | + | } |
- | * Faire une *merge request* (adressée aux responsables techniques) : https:// | + | |
- | ===== Éditer le fichier de zone ===== | + | http { |
+ | include | ||
+ | default_type | ||
- | * Incrémenter le numéro de version du fichier : cf https:// | + | log_format |
- | * Ajouter sous-domaine | + | ' |
+ | '" | ||
+ | access_log | ||
+ | |||
+ | server { | ||
+ | listen 80; | ||
+ | |||
+ | root / | ||
+ | index index.html index.htm; | ||
+ | } | ||
+ | } | ||
``` | ``` | ||
- | example IN A 91.224.148.60 ; Serveur web d' | + | |
- | | + | < |
+ | |||
+ | Ici, la directive `root / | ||
+ | |||
+ | ### Activer la compression | ||
+ | |||
+ | La compression permet de réduire la taille des réponses du serveur web, cela permet donc d' | ||
+ | |||
+ | ``` | ||
+ | worker_processes auto; | ||
+ | |||
+ | error_log | ||
+ | pid / | ||
+ | |||
+ | events { | ||
+ | worker_connections | ||
+ | } | ||
+ | |||
+ | http { | ||
+ | include | ||
+ | default_type | ||
+ | |||
+ | log_format | ||
+ | ' | ||
+ | '" | ||
+ | |||
+ | access_log | ||
+ | |||
+ | gzip on; | ||
+ | gzip_vary on; | ||
+ | gzip_comp_level 4; | ||
+ | gzip_min_length 256; | ||
+ | gzip_types application/ | ||
+ | |||
+ | server { | ||
+ | listen 80; | ||
+ | |||
+ | root / | ||
+ | index index.html index.htm; | ||
+ | } | ||
+ | } | ||
+ | ``` | ||
+ | |||
+ | La directive `gzip on;` permet | ||
+ | |||
+ | ### Activer l' | ||
+ | |||
+ | Par défaut, l' | ||
+ | |||
+ | ``` | ||
+ | worker_processes auto; | ||
+ | |||
+ | error_log | ||
+ | pid / | ||
+ | |||
+ | events { | ||
+ | worker_connections | ||
+ | } | ||
+ | |||
+ | http { | ||
+ | include | ||
+ | default_type | ||
+ | |||
+ | log_format | ||
+ | ' | ||
+ | '" | ||
+ | |||
+ | access_log | ||
+ | |||
+ | gzip on; | ||
+ | gzip_vary on; | ||
+ | gzip_comp_level 4; | ||
+ | gzip_min_length 256; | ||
+ | gzip_types application/ | ||
+ | |||
+ | server { | ||
+ | listen 80; | ||
+ | |||
+ | autoindex on; | ||
+ | |||
+ | root / | ||
+ | index index.html index.htm; | ||
+ | } | ||
+ | } | ||
+ | ``` | ||
+ | |||
+ | 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' | ||
+ | ```yaml | ||
+ | version: " | ||
+ | |||
+ | volumes: | ||
+ | monbeausite: | ||
+ | name: monbeausite | ||
+ | |||
+ | networks: | ||
+ | app: | ||
+ | name: " | ||
+ | proxy: | ||
+ | external: true | ||
+ | |||
+ | services: | ||
+ | app: | ||
+ | container_name: | ||
+ | image: php: | ||
+ | volumes: | ||
+ | - monbeausite:/ | ||
+ | networks: | ||
+ | - app | ||
+ | restart: unless-stopped | ||
+ | |||
+ | web: | ||
+ | container_name: | ||
+ | image: nginx:1.21-alpine | ||
+ | volumes: | ||
+ | - ./ | ||
+ | - monbeausite:/ | ||
+ | labels: | ||
+ | traefik.http.routers.monbeausite.entrypoints: | ||
+ | traefik.http.routers.monbeausite.rule: | ||
+ | traefik.http.services.monbeausite.loadbalancer.server.port: | ||
+ | traefik.enable: | ||
+ | networks: | ||
+ | - proxy | ||
+ | - app | ||
+ | restart: unless-stopped | ||
+ | ``` | ||
+ | |||
+ | Il faut ensuite indiquer à Nginx qu'il faut contacter le serveur PHP lorsqu' | ||
+ | ``` | ||
+ | worker_processes auto; | ||
+ | |||
+ | error_log | ||
+ | pid / | ||
+ | |||
+ | events { | ||
+ | worker_connections | ||
+ | } | ||
+ | |||
+ | http { | ||
+ | include | ||
+ | default_type | ||
+ | |||
+ | log_format | ||
+ | ' | ||
+ | '" | ||
+ | |||
+ | access_log | ||
+ | |||
+ | keepalive_timeout | ||
+ | |||
+ | set_real_ip_from | ||
+ | set_real_ip_from | ||
+ | set_real_ip_from | ||
+ | real_ip_header | ||
+ | |||
+ | upstream php-handler { | ||
+ | server monbeausite-app: | ||
+ | } | ||
+ | |||
+ | server { | ||
+ | listen 80; | ||
+ | |||
+ | root / | ||
+ | index index.php index.html index.htm; | ||
+ | |||
+ | client_max_body_size 1M; | ||
+ | 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' | ||
+ | |||
+ | ## Ajout du contenu | ||
+ | |||
+ | On synchronise le contenu du site dans `/ | ||
+ | Ensuite, on copie simplement les fichiers dans le conteneur : | ||
+ | |||
+ | ```bash | ||
+ | docker cp /tmp/site/* monbeausite:/ | ||
``` | ``` | ||
- | ===== Si l'image Docker Ngnix est absente de la machine ===== | + | À ce stade, le site est prêt à être servi, il ne reste plus qu'à ajouter |
- | * 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:/ | + |