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:adminserv:sites:website [2020/11/08 22:30] – ↷ Page déplacée de technique:adminsys:sites:website à technique:adminserv: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 | ||
- | ===== Généralités | + | ## Généralités |
- | Les sites sont hébergés sur '' | + | Historiquement, |
- | Le lancement d'un nouveau site peut s' | + | > Deploy your applications in separate containers independently and in different languages. Reduce the risk of conflict between languages, libraries or frameworks. |
- | ===== Procédure d' | + | Il faut donc créer |
- | Mettre à jour le fichier | + | Le lancement d'un nouveau site peut [[technique:docker: |
+ | ## Déploiement d'un site de base | ||
- | ===== Ajout du sous domaine example.picasoft.net ===== | + | Un site de base peut être déployé à partir de ce docker-compose : |
- | Sur la machine de test, le site sera directement disponible (sous '' | + | ```yaml |
+ | version: "3.7" | ||
- | * Récupérer le fichier '' | + | volumes: |
- | | + | |
- | * Valider les modifications sur le serveur Git : '' | + | name: monbeausite |
- | * Faire une *merge request* (adressée aux responsables techniques) : https:// | + | |
- | ===== Éditer le fichier de zone ===== | + | networks: |
+ | proxy: | ||
+ | external: true | ||
- | * Incrémenter le numéro de version du fichier | + | services: |
- | * Ajouter sous-domaine | + | web: |
+ | container_name: | ||
+ | image: nginx: | ||
+ | volumes: | ||
+ | - monbeausite:/usr/share/ | ||
+ | labels: | ||
+ | traefik.http.routers.monbeausite.entrypoints: | ||
+ | traefik.http.routers.monbeausite.rule: | ||
+ | traefik.http.services.monbeausite.loadbalancer.server.port: 80 | ||
+ | | ||
+ | networks: | ||
+ | | ||
+ | restart: unless-stopped | ||
+ | ``` | ||
+ | ## Personnaliser la configuration | ||
+ | |||
+ | La configuration de Nginx se trouve dans le fichier `/ | ||
+ | ```yaml | ||
+ | version: " | ||
+ | |||
+ | volumes: | ||
+ | monbeausite: | ||
+ | name: monbeausite | ||
+ | |||
+ | networks: | ||
+ | proxy: | ||
+ | external: true | ||
+ | |||
+ | services: | ||
+ | web: | ||
+ | container_name: | ||
+ | image: nginx: | ||
+ | volumes: | ||
+ | - ./ | ||
+ | - culture:/ | ||
+ | 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 IN A 91.224.148.60 ; Serveur web d' | + | |
- | example IN AAAA 2a03:7220: | + | Une première chose que nous pouvons faire, c'est de changer l' |
``` | ``` | ||
+ | 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 `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 d' | ||
+ | |||
+ | ### 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: | ||
+ | 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:/ | ||
+ | ``` | ||
+ | |||
+ | À ce stade, le site est prêt à être servi, il ne reste plus qu'à ajouter l' | ||
- | Mettre ensuite à jour le serveur DNS sur Alice. | + | ## Ajout du sous domaine |
- | ===== 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:/ | + |