[PYTHON] Déployez des applications Web en temps réel avec Swampdragon x Apache

(En général, si vous regardez comment écrire httpd.conf en bas, cela devrait être un déclencheur ...)

supposition

En supposant que vous utilisez le module python django, il peut y avoir plusieurs façons de réaliser le Web en temps réel, mais il y en a peu quand il s'agit de profiter de ces prérequis (= peut être utilisé comme une extension du module python ou Django). Ce qui ressort après un examen léger

Autour.

A cette époque, il a été mis à jour plus que les chaînes, et j'ai choisi swampdragon car il contient plus de documents japonais (exemples) (bien que les deux soient peu nombreux).

Actuellement (16/12/29), il semble que la mise à jour du site officiel soit déjà arrêtée, mais à ce moment-là (16/07 / xx) j'ai choisi cela (bien que le site officiel était fermé à ce moment-là) .. En conséquence, je vais résumer le processus de déploiement dur.

De plus, la procédure d'installation du module est omise et la discussion porte uniquement sur ce qui a été installé et comment il a été défini.

Ce que vous souhaitez déployer

L'environnement de développement de l'application que vous souhaitez déployer est

De plus, ce qui suit a été introduit en tant que module.

La destination du déploiement est CentOS 7, qui est configuré sur AWS et n'a pas de paramètres initiaux. Comme il était propre, je devais le saisir depuis apache pour le moment.

Préparation de la destination de déploiement

Créez une base pour exécuter des applications Web sur CentOS7. Cette fois, nous présenterons ce qui suit.

Si les deux sont les plus récents, il n'y a pas de problème (devrait). À propos, mod_wsgi est également introduit pour préparer l'environnement wsgi.

De plus, comme la version de Python qui était incluse dans CentOS 7 était 2.7, j'ai installé Python 3.5.1 afin qu'il puisse être utilisé avec des commandes de la forme `` python3.5 ''.

De plus, si redis est installé sans réfléchir, seules les versions 2.8 et antérieures seront incluses, donc je me suis référé à ici et je l'ai installé directement.

C'est le sujet principal du déploiement.

Deploy (procédure ordinaire pour django)

L'application que je voulais déployer a été placée sur github, je l'ai donc clonée dans le répertoire suivant et l'ai placée.

/var/www/cgi-bin/

L'emplacement est comme le paramètre par défaut d'apache.

Après cela, sans penser à rien de particulier, modifiez httpd.conf selon Document officiel de version différente.

Cependant, cela seul ne fonctionne pas.

Afin de réaliser le Web en temps réel, il était nécessaire de router swampdragon vers le serveur et de démarrer le serveur redis.

Déployer (procédure en cas de swampdragon)

Cette fois, les quatre serveurs suivants doivent être exécutés sur CentOS.

Parmi ceux-ci, les deux premiers peuvent être démarrés à partir des commandes suivantes.

systemctl start httpd
systemctl start postgresql

Puisqu'il fonctionne en arrière-plan, la console n'est pas débordée.

Le problème, ce sont les deux derniers. django lui-même fonctionne sur apache, mais swampdragon introduit car son module doit configurer un serveur séparément de django. Et lorsque redis démarre également le serveur, aucune autre opération ne peut être effectuée.

Par conséquent, tmux a été nouvellement introduit. En introduisant simplement tmux et en divisant la console, un démarrage simultané est possible.

Mais le problème demeure. C'est le routage d'Apache vers le serveur swampdragon. J'ai eu beaucoup de mal parce que je n'ai trouvé aucune documentation à ce sujet.

Le contenu des paramètres finaux d'Apache (httpd.conf) est le suivant (le chemin de l'application est flou).

Listen 80
Listen 443

<VirtualHost *:443>
ProxyPass /data ws://127.0.0.1:9999/data
ProxyPassReverse /data ws://127.0.0.1:9999/data
ProxyPass /settings.js http://127.0.0.1:9999/settings.js
ProxyPassReverse /settings.js http://127.0.0.1:9999/settings.js
ProxyPreserveHost On
ProxyRequests Off
ProxyVia On
</VirtualHost>

LoadModule wsgi_module /usr/lib64/httpd/modules/mod_wsgi.so
WSGIPythonPath /var/www/cgi-bin/path/to/app:/usr/local/bin/python3.5/site-packages
DocumentRoot "/var/www/cgi-bin/path/to/documentroot"
Alias /static/ /var/www/cgi-bin/path/to/static/

<Directory /var/www/cgi-bin/path/to/app/>
<Files wsgi.py>
Order deny,allow
Allow from all
</Files>
</Directory>
WSGIScriptAlias / /var/www/cgi-bin/path/to/wsgi.py

De plus, ~: //127.0.0.1:9999/~ est le paramètre par défaut (devrait être) lorsque swampdragon a été introduit.

Sous le module de chargement dans la moitié inférieure se trouve presque le contenu du site officiel de django.

Le foie est le cadre de 443 ports. swampdragon a deux communications à recevoir. / Données pour la communication via le socket Web et /settings.js pour http.

Si vous le définissez en tant qu'hôte virtuel et le transférez vers un serveur swampdragon séparé, il sera renvoyé vers le serveur redis et les informations de session seront enregistrées.

Résumé

Finalement, vous devriez pouvoir lancer une application Web en temps réel avec une commande comme celle-ci.

tmux
systemctl start postgresql
systemctl start httpd
sudo redis-server /etc/redis.conf

python3.5 server.py

Lors de l'utilisation de Swampdragon

  1. Apache et redis requis
  2. Vous devez spécifier respectivement le transfert de / data et /settings.js
  3. Probablement le moyen le plus rapide de configurer un serveur à l'aide de tmux.

Ce qui précède est l'histoire du premier déploiement manuel.

Recommended Posts

Déployez des applications Web en temps réel avec Swampdragon x Apache
Déployer une application Web créée avec Streamlit sur Heroku
Comment déployer une application Web créée avec Flask sur Heroku
(Échec) Déployer une application Web créée avec Flask avec heroku
Jouez comme une application Web avec ipywidgets
Démonisez une application Web Python avec Supervisor
Créez une application Web simple avec Flask
Déployer des applications Web Python 3.6 / Django / Postgres sur Azure
Déployer l'application Django créée avec PTVS sur Azure
Web en temps réel avec les chaînes Django
Configurer un serveur Web avec CentOS7 + Anaconda + Django + Apache
Lorsque je déploie une application Django sur Apache2 et qu'elle ne lit plus les fichiers statiques
Déployer l'application Django avec Docker
Créer une application Web avec Django
Pratique de développement d'applications Web: Créez une page de création d'équipe avec Django! (Introduction)
Diagnostic Machine Learning x Web App: reconnaissez CAPTCHA avec l'API Cloud Vision
Jusqu'à ce que l'application Web créée avec Bottle soit publiée (déployée) sur Heroku
Déployer l'application flask avec mod_wsgi (à l'aide de pipenv)
[Python] Une application web rapide avec Bottle!
Application Web facile avec Python + Flask + Heroku
Je ne peux plus déployer avec le moteur d'application Google
Exécutez une application Web Python avec Docker
Créez un framework Web avec Python! (1)
Créer un service Web avec Docker + Flask
Créez une application de bureau avec Python avec Electron
Créez un framework Web avec Python! (2)
J'ai fait une application WEB avec Django
Une application Web qui ne fait que Hello World avec le package net / http de Go
Connectez Scratch X et Digispark avec bouteille
Comment développer une application de panier avec Django
Gagnez l'application Web Python + Flask avec Jenkins
Automatisation de l'interface graphique avec le pilote d'application Python x Windows
Démarrez un serveur Web Python simple avec Docker
Lancer un serveur Web avec Python et Flask
Procédure de création d'application multi-plateforme avec kivy
Extraire des données d'une page Web avec Python
Pratique de développement d'applications Web: Créez une page de création d'équipe avec Django! (Ecrire un modèle de base)
Pratique de développement d'applications Web: Créez une page de création d'équipe avec Django! (Traitement d'authentification)
Compilez Apache2.4 + PHP7.4 avec Raspberry Pi et construisez un serveur Web --3. Utilisez MySQL
Pratique de développement d'applications Web: Créez une page de création d'équipe avec Django! (Expérience sur la page d'administration)