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évisionLes deux révisions suivantes | ||
technique:adminserv:sites:website [2022/04/17 11:39] – qduchemi | technique:adminserv:sites:website [2022/04/17 12:18] – qduchemi | ||
---|---|---|---|
Ligne 12: | Ligne 12: | ||
Le lancement d'un nouveau site peut [[technique: | Le lancement d'un nouveau site peut [[technique: | ||
- | ## Déploiement d'un site de base | + | ## Modèle pour un nouveau |
- | Un site de base peut être déployé à partir de ce docker-compose | + | Un site de base peut être déployé à partir de modèle de fichier Compose. |
+ | |||
+ | < | ||
+ | |||
+ | < | ||
```yaml | ```yaml | ||
Ligne 30: | Ligne 34: | ||
web: | web: | ||
container_name: | container_name: | ||
- | image: nginx:1.21-alpine | + | image: nginx:< |
volumes: | volumes: | ||
- monbeausite:/ | - monbeausite:/ | ||
Ligne 42: | Ligne 46: | ||
restart: unless-stopped | restart: unless-stopped | ||
``` | ``` | ||
+ | |||
+ | < | ||
## Personnaliser la configuration | ## Personnaliser la configuration | ||
- | La configuration de Nginx se trouve dans le fichier `/ | + | La configuration de nginx se trouve dans le fichier `/ |
- | ```yaml | + | |
- | version: "3.7" | + | |
- | volumes: | + | Néanmoins, pour les configurations complexes, il est possible de monter son propre fichier de configuration. |
- | monbeausite: | + | |
- | name: monbeausite | + | |
- | networks: | + | < |
- | proxy: | + | |
- | external: true | + | |
+ | On rajoutera alors au fichier Compose présenté plus haut : | ||
+ | |||
+ | ```yaml | ||
+ | version: " | ||
+ | [...] | ||
services: | services: | ||
web: | web: | ||
- | container_name: | + | [...] |
- | image: nginx:1.21-alpine | + | |
- | 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 | + | |
``` | ``` | ||
- | Une première chose que nous pouvons faire, c' | + | ## Exemples |
+ | |||
+ | < | ||
+ | Pour aller plus loin : | ||
+ | |||
+ | * [Documentation | ||
+ | * [Examples pédagogiques de configuration pour sites statiques](https:// | ||
+ | |||
+ | </ | ||
+ | |||
+ | ### Changer | ||
+ | |||
+ | Par défaut, le contenu est servi depuis | ||
``` | ``` | ||
worker_processes auto; | worker_processes auto; | ||
Ligne 104: | Ligne 112: | ||
``` | ``` | ||
- | < | + | < |
- | Ici, la directive `root / | + | Ici, la directive |
### Activer la compression | ### Activer la compression | ||
- | La compression permet de réduire la taille des réponses du serveur web, cela permet donc d' | + | 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 { | http { | ||
- | | + | [...] |
- | default_type | + | |
- | + | ||
- | log_format | + | |
- | ' | + | |
- | '" | + | |
- | + | ||
- | access_log | + | |
gzip on; | gzip on; | ||
gzip_vary on; | gzip_vary on; | ||
Ligne 137: | Ligne 129: | ||
gzip_min_length 256; | gzip_min_length 256; | ||
gzip_types application/ | gzip_types application/ | ||
- | + | [...] | |
- | server { | + | |
- | listen 80; | + | |
- | + | ||
- | root / | + | |
- | index index.html index.htm; | + | |
- | } | + | |
} | } | ||
``` | ``` | ||
La directive `gzip on;` permet d' | La directive `gzip on;` permet d' | ||
+ | |||
+ | < | ||
### Activer l' | ### Activer l' | ||
- | Par défaut, 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 | ||
``` | ``` | ||
- | worker_processes auto; | + | [...] |
- | + | ||
- | error_log | + | |
- | pid / | + | |
- | + | ||
- | events { | + | |
- | worker_connections | + | |
- | } | + | |
http { | http { | ||
- | | + | [...] |
- | default_type | + | |
- | + | ||
- | log_format | + | |
- | ' | + | |
- | '" | + | |
- | + | ||
- | access_log | + | |
- | + | ||
- | gzip on; | + | |
- | gzip_vary on; | + | |
- | gzip_comp_level 4; | + | |
- | gzip_min_length 256; | + | |
- | gzip_types application/ | + | |
server { | server { | ||
- | listen 80; | ||
- | |||
autoindex on; | 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. | + | 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 | ## 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' | + | 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: | + | 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`. |
- | monbeausite: | + | |
- | name: monbeausite | + | |
+ | Le fichier Compose dans sa version statique est modifié comme suit : | ||
+ | |||
+ | ```yaml | ||
+ | [...] | ||
networks: | networks: | ||
app: | app: | ||
name: " | name: " | ||
- | proxy: | + | [...] |
- | external: true | + | |
services: | services: | ||
Ligne 219: | Ligne 182: | ||
web: | web: | ||
- | | + | |
- | image: nginx:1.21-alpine | + | |
- | volumes: | + | |
- | - ./nginx.conf:/ | + | |
- | - monbeausite:/ | + | |
- | labels: | + | |
- | traefik.http.routers.monbeausite.entrypoints: | + | |
- | traefik.http.routers.monbeausite.rule: | + | |
- | traefik.http.services.monbeausite.loadbalancer.server.port: | + | |
- | traefik.enable: | + | |
networks: | networks: | ||
- | | + | |
- app | - app | ||
- | restart: unless-stopped | ||
``` | ``` | ||
- | Il faut ensuite indiquer à Nginx qu'il faut contacter le serveur PHP lorsqu' | + | Il faut ensuite indiquer à Nginx qu'il faut contacter le serveur PHP lorsqu' |
- | ``` | + | |
- | worker_processes auto; | + | |
- | error_log | + | C'est en particulier les directives `http` et `server` qui seront modifiées : |
- | pid / | + | |
- | + | ||
- | events { | + | |
- | worker_connections | + | |
- | } | + | |
+ | ``` | ||
+ | [...] | ||
http { | http { | ||
- | | + | [...] |
- | 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 { | upstream php-handler { | ||
server monbeausite-app: | server monbeausite-app: | ||
Ligne 268: | Ligne 201: | ||
server { | server { | ||
- | | + | |
- | + | ||
- | root / | + | |
- | index index.php index.html index.htm; | + | |
- | + | ||
- | client_max_body_size 1M; | + | |
fastcgi_buffers 64 4K; | fastcgi_buffers 64 4K; | ||
Ligne 287: | Ligne 215: | ||
``` | ``` | ||
- | 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: | + | 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' | Finalement `location ~ \.php$` indique comment traiter tous les fichiers ayant l' | ||
- | ## Ajout du contenu | + | < |
- | On synchronise le contenu | + | ## Ajouter |
- | Ensuite, on copie simplement les fichiers dans le conteneur : | + | |
+ | Il suffit d' | ||
+ | |||
+ | La commande `docker cp` permet de copier des fichiers | ||
```bash | ```bash | ||
- | docker cp /tmp/site/* monbeausite: | + | docker cp < |
``` | ``` | ||
À ce stade, le site est prêt à être servi, il ne reste plus qu'à ajouter l' | À ce stade, le site est prêt à être servi, il ne reste plus qu'à ajouter l' | ||
+ | |||
+ | < | ||
## Ajout du sous domaine | ## Ajout du sous domaine |