autohebergement
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| autohebergement [2023/09/17 08:53] – guerdal | autohebergement [2023/12/08 22:37] (Version actuelle) – voir aussi + hiérarchie fred.th | ||
|---|---|---|---|
| Ligne 7: | Ligne 7: | ||
| - Une adresse sécurisée SSL | - Une adresse sécurisée SSL | ||
| - Une connexion SFTP/SSH | - Une connexion SFTP/SSH | ||
| + | - Une base de données | ||
| - | ===== Un hébergement sécurisé et compatible | + | ==== Un hébergement sécurisé et compatible ==== |
| La solution NoethysWeb fonctionne grâce au moteur [[https:// | La solution NoethysWeb fonctionne grâce au moteur [[https:// | ||
| - | Nous partirons du postulat que la machine fonctionne avec le système d' | + | Nous partirons du postulat que la machine fonctionne avec le système d' |
| - | ===== Une adresse sécurisée SSL ===== | + | ==== Une adresse sécurisée SSL ==== |
| Afin de permettre l' | Afin de permettre l' | ||
| - | //**Note de l' | + | //**Note de l' |
| - | ===== Une connexion SFTP/ | + | ==== Une connexion SFTP/SSH ==== |
| Afin d' | Afin d' | ||
| - | ====== Installation ====== | + | ==== Base de données |
| + | NoethysWeb fonctionne avec une base de données, celle-ci est de base sur le moteur sqlite3. On peut aussi utiliser d' | ||
| + | Nous partirons du postulat que le moteur sélectionné est Mysql. | ||
| + | |||
| + | ===== Installation (avec un serveur NGINX) ===== | ||
| + | |||
| + | Une fois le système d' | ||
| + | Pour l' | ||
| + | |||
| + | * Django étant basé sur Python, nous allons installer Python3 et son pendant Webserveur : Gunicorn. | ||
| + | <code bash> | ||
| + | apt install python3 python3-pip gunicorn | ||
| + | </ | ||
| + | * Le téléchargement de NoethysWeb et sa mise à jour se faisant via Git, on l' | ||
| + | <code bash> | ||
| + | apt install git | ||
| + | </ | ||
| + | * Nous aurons besoin d'un serveur Web avec certificat https pour fournir l' | ||
| + | <code bash> | ||
| + | apt install nginx certbot | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | ==== Installation de NoethysWeb ==== | ||
| + | |||
| + | On crée un espace qui va acceuillir le code de NoethysWeb, on va placer ça dans **/ | ||
| + | |||
| + | <code bash> | ||
| + | mkdir / | ||
| + | </ | ||
| + | |||
| + | On téléchargement le code source de NoethysWeb, on met à jour le système avec les pré-requis de l' | ||
| + | |||
| + | <code bash> | ||
| + | cd / | ||
| + | git clone https:// | ||
| + | pip3 install -r requirements.txt | ||
| + | </ | ||
| + | |||
| + | On recopie le fichier **settings_production_modele.py**, | ||
| + | |||
| + | [[settings_production_detail|Détails des paramètres du fichier settings_production.py]]. | ||
| + | |||
| + | On initialise ensuite la base de données et l' | ||
| + | |||
| + | <code bash> | ||
| + | python3 manage.py makemigrations | ||
| + | python3 manage.py migrate | ||
| + | python3 manage.py collectstatic | ||
| + | python3 manage.py createsuperuser | ||
| + | python3 manage.py update_permissions | ||
| + | </ | ||
| + | |||
| + | Si vous souhaitez commencer avec une base de données vide : | ||
| + | <code bash> | ||
| + | python3 manage.py import_defaut | ||
| + | </ | ||
| + | |||
| + | Ou si vous souhaitez importer la base de données d'un fichier Noethys - où xxx est le nom du fichier d' | ||
| + | <code bash> | ||
| + | python3 manage.py import_fichier xxx.nweb motdepasse | ||
| + | </ | ||
| + | |||
| + | Lancez enfin le serveur intégré pour tester si tout fonctionne jusque là. | ||
| + | <code bash> | ||
| + | python3 manage.py runserver | ||
| + | </ | ||
| + | |||
| + | Connectez vous via un navigateur Web à l' | ||
| + | * http:// | ||
| + | * http:// | ||
| + | * http:// | ||
| + | |||
| + | ==== Mise en production ==== | ||
| + | |||
| + | Une fois les tests effectués, on passe à la mise en production. | ||
| + | |||
| + | La mise en production va passer par la configuration à la fois de Gunicorn, applicatif qui va faire tourner la partie Web Python, et Nginx, applicatif qui va s' | ||
| + | |||
| + | Le démarrage de l' | ||
| + | <code bash> | ||
| + | [Unit] | ||
| + | Description=gunicorn daemon | ||
| + | # | ||
| + | After=network.target | ||
| + | [Service] | ||
| + | User=root | ||
| + | Group=www-data | ||
| + | WorkingDirectory=/ | ||
| + | ExecStart=gunicorn --access-logfile - --workers 3 --forwarded-allow-ips=" | ||
| + | |||
| + | [Install] | ||
| + | WantedBy=multi-user.target | ||
| + | </ | ||
| + | |||
| + | Puis on passe les commandes : | ||
| + | <code bash> | ||
| + | systemctl daemon-reload | ||
| + | systemctl restart gunicorn.service | ||
| + | </ | ||
| + | |||
| + | Ensuite, concernant Nginx, on va faire ça en deux étapes : | ||
| + | - Génération du certificat SSL avec certbot | ||
| + | - Configuration de Nginx pour gérer le SSL | ||
| + | |||
| + | === Gestion Certificat === | ||
| + | |||
| + | On va utiliser [[https:// | ||
| + | |||
| + | Pour ce faire nous allons configurer nginx en créant le fichier **/ | ||
| + | <code bash> | ||
| + | server { | ||
| + | listen 80 default_server; | ||
| + | listen [::]:80 default_server; | ||
| + | |||
| + | server_name nom_de_domaine; | ||
| + | |||
| + | # On va gérer les apples de Certbot | ||
| + | location / | ||
| + | root / | ||
| + | try_files $uri index.php; | ||
| + | } | ||
| + | |||
| + | # On redirige les appels vers la partie https du site | ||
| + | location / { | ||
| + | rewrite ^ https:// | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | On supprime le fichier **default** présent dans le répertoire **/ | ||
| + | On relance nginx avec la commande **systemctl restart nginx.service** | ||
| + | |||
| + | Puis on lance la commande certbot pour acquérir un certificat pour notre domaine | ||
| + | <code bash> | ||
| + | certbot --renew-by-default certonly --webroot -w / | ||
| + | </ | ||
| + | |||
| + | Une fois le certificat récupéré, | ||
| + | <code bash> | ||
| + | server { | ||
| + | listen 80 default_server; | ||
| + | listen [::]:80 default_server; | ||
| + | |||
| + | server_name nom_de_domaine; | ||
| + | |||
| + | # On va gérer les apples de Certbot | ||
| + | location / | ||
| + | root / | ||
| + | try_files $uri index.php; | ||
| + | } | ||
| + | |||
| + | # On redirige les appels vers la partie https du site | ||
| + | location / { | ||
| + | rewrite ^ https:// | ||
| + | } | ||
| + | } | ||
| + | |||
| + | server { | ||
| + | listen 443 default_server; | ||
| + | listen [::]:443 default_server; | ||
| + | |||
| + | server_name nom_de_domaine; | ||
| + | |||
| + | real_ip_header X-Forwarded-For; | ||
| + | real_ip_recursive on; | ||
| + | set_real_ip_from 0.0.0.0/0; | ||
| + | |||
| + | ssl_session_timeout | ||
| + | ssl_prefer_server_ciphers on; | ||
| + | |||
| + | ssl_protocols TLSv1 TLSv1.1 TLSv1.2; | ||
| + | |||
| + | ssl_ciphers ' | ||
| + | ssl_session_cache shared: | ||
| + | |||
| + | ssl_certificate / | ||
| + | ssl_certificate_key / | ||
| + | |||
| + | # Diffie-Hellman parameter for DHE ciphersuites, | ||
| + | ssl_dhparam / | ||
| + | |||
| + | ## verify chain of trust of OCSP response using Root CA and Intermediate certs | ||
| + | ssl_trusted_certificate / | ||
| + | |||
| + | resolver 8.8.8.8 8.8.4.4 valid=86400; | ||
| + | resolver_timeout 10; | ||
| + | |||
| + | port_in_redirect off; | ||
| + | proxy_buffering off; | ||
| + | proxy_http_version 1.1; # Properly proxy websocket connections | ||
| + | proxy_read_timeout 300s; # terminate websockets afer 5min of inactivity | ||
| + | proxy_set_header Host $http_host; | ||
| + | proxy_set_header X-Real-IP $remote_addr; | ||
| + | proxy_set_header X-Forwarded-Host $host; | ||
| + | proxy_set_header X-Forwarded-Server $host; | ||
| + | proxy_headers_hash_max_size 512; | ||
| + | proxy_headers_hash_bucket_size 128; | ||
| + | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | ||
| + | proxy_set_header X-Forwarded-Protocol $scheme; | ||
| + | proxy_set_header Upgrade $http_upgrade; | ||
| + | proxy_set_header Connection " | ||
| + | |||
| + | # On permet à Nginx de gérer les fichiers static de NoethysWeb | ||
| + | location /static/ { | ||
| + | root / | ||
| + | } | ||
| + | |||
| + | # On permet à Nginx de gérer les fichiers media de NoethysWeb | ||
| + | location /media/ { | ||
| + | root / | ||
| + | } | ||
| + | |||
| + | # On passe le reste à Gunicorn | ||
| + | location / { | ||
| + | include proxy_params; | ||
| + | proxy_redirect | ||
| + | client_max_body_size 200m; | ||
| + | proxy_pass http:// | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | On relance le service nginx (**systemctl restart nginx.service**) et on teste avec les urls : | ||
| + | * < | ||
| + | * < | ||
| + | * < | ||
| + | |||
| + | =====Voir aussi===== | ||
| + | Dans la rubrique installation-hébergement : | ||
| + | * [[autohebergement]] | ||
| + | * [[installation_apache]] | ||
| + | * [[settings_production_detail]] | ||
| + | * [[noethysweb_easy]] | ||
autohebergement.1694933592.txt.gz · Dernière modification : 2023/09/17 08:53 de guerdal