[PYTHON] La route pour lutter contre la connexion entre Nginx, Django et uwsgi et gagner un peu

J'ai décidé de faire Django et Nginx sérieusement et j'ai finalement réussi à me connecter au serveur pendant deux semaines!

Je me suis connecté avec flask, wsgi et apache2, mais j'ai toujours détesté Django. Cependant, j'ai décidé de présenter Django et nginx parce que je voulais présenter WebSocket.

Même maintenant, il n'est pas affiché à moins que j'entre ** "http://example.com:9000" **, mais j'ai atteint le point où uwsgi est lancé en arrière-plan.

J'écrirai la partie avec laquelle j'ai lutté ci-dessous

environnement

Tout d'abord, l'installation du serveur nginx est déroutante

C'était bien jusqu'à ce que je démarre le serveur nginx

$sudo /etc/init.d/nginx restart

Peut ne pas démarrer. J'ai l'écran suivant

[....] Restarting nginx (via systemctl): nginx.serviceJob for nginx.service failed because the control process exited with error code.
See "systemctl status nginx.service" and "journalctl -xe" for details.
 failed!

Cela était dû au mauvais fichier de configuration dans ** / etc / nginx / sites-available / ** dans mon environnement Ubuntu. (Par exemple, le port a été dupliqué avec un autre serveur)

Je ne comprends pas comment uwsgi fonctionne et c'est un gros gâchis

C'était le début de la souffrance. J'ai eu du mal à souffrir d'uwsgi. Surtout, c'est ne pas penser que quelque chose peut être fait avec de la colle.

Considérez uwsgi comme un middleware qui agit comme un intermédiaire avec des paramètres pour connecter les applications nginx et Django. Comment coller mon fichier ini merdique. En passant, je présenterai également les sites qui ont été très utiles dans uwsgi. (Anglais)

Ceci est le site

Voici mes fichiers ini et leurs commentaires.

# open_dashboard_uwsgi.ini file
[uwsgi]
project = open_dashboard
base = /home/user/Python #← Chemin de mon projet Python

chdir = %(base)/%(project)
#home = %(base)/Env/%(project)
home = %(base)/env #← Chemin de mon environnement virtuel Python
module = %(project).wsgi:application

#uid = root
uid = user #← Mon nom d'utilisateur
master = true
processes = 2

socket = %(base)/%(project)/%(project).sock #← N'essayez pas de fabriquer vous-même cette prise
chmod-socket = 666
vacuum = true #← Il est assez important que le socket soit automatiquement supprimé lorsque le serveur est coupé.

Sur cette base, nous définissons le mode empereur, qui est un mode qui exécute uwsgi en arrière-plan (en fait, c'est un excellent mode qui peut démarrer plusieurs applications), mais dans la plupart des cas, il trébuche avec l'erreur suivante.

unix:///home/user/Python/open_dashboard/open_dashboard.sock failed (13: Permission denied)

C'est ennuyeux, mais vous pouvez le résoudre en utilisant uid et gid en mode empereur comme nom d'utilisateur. Également le fichier journal ** sudo chown user: user /var/log/uwsgi-emperor.log ** N'oubliez pas de définir comme.

Définissez .bashrc comme suit. (/etc/rc.local semble être bon, mais pour le moment, c'est sûr)

.bashrc


/usr/local/bin/uwsgi --emperor /etc/uwsgi/vassals --uid www-data --gid www-data --daemonize /var/log/uwsgi-emperor.log

La partie *** --emperor / etc / uwsgi / vassals *** du code ci-dessus est définie comme suit.

# create a directory for the vassals
sudo mkdir /etc/uwsgi
sudo mkdir /etc/uwsgi/vassals
# symlink from the default config directory to your config file
sudo ln -s /path/to/your/mysite/mysite_uwsgi.ini /etc/uwsgi/vassals/

Vous ne le comprenez peut-être pas parce que vous êtes pressé, mais pour le moment ** Pour ne plus me perdre ** J'ai écrit cet article.

[Je passais des jours sombres avec seulement 502 erreurs comme cet article](https://www.linode.com/community/questions/222/how-do-i-fix-this-502-bad- erreur-de-passerelle-lors-de-la-configuration-django-project-on-ubuntu)

_ Ensuite, je vais défier Docker! _

Historique des révisions

--2019 / 12/16 nouvellement créé --2020 / 1/1 Ajout de la façon d'installer et de reconfigurer à nouveau uwsgi pour Python3 en le faisant avec Python3

Recommended Posts

La route pour lutter contre la connexion entre Nginx, Django et uwsgi et gagner un peu
[Introduction à Python] Quelle est la différence entre une liste et un taple?
Comment compter le nombre d'éléments dans Django et sortir dans le modèle
Framework Django REST Un peu utile à savoir.
Comment configurer une passerelle VPN pour établir une connexion entre Alibaba Cloud et AWS
[Django] Test pour envoyer un fichier par POST et vérifier le contexte retourné [TDD]
De l'introduction de Flask sur CentOS au service sur Nginx et uWSGI
Visualisation de la connexion entre le malware et le serveur de rappel
Comment utiliser argparse et la différence entre optparse
Transition vers l'écran de mise à jour avec le Django a tag
Créer un environnement django avec docker-compose (MariaDB + Nginx + uWSGI)
La route vers Pythonista
La route vers Djangoist
Quelle est la différence entre les liens symboliques et les liens durs?
Comprendre la différence entre l'affectation cumulative aux variables et l'affectation cumulative aux objets
Comment générer une requête à l'aide de l'opérateur IN dans Django
Créer un environnement Python et transférer des données vers le serveur
Un résumé approximatif des différences entre Windows et Linux
J'ai essayé d'énumérer les différences entre java et python
Road to the Wizard: Étape 8 (Interpréter comment devenir un hacker)
Je veux obtenir des informations de fstab à la destination de la connexion ssh et exécuter la commande
J'ai essayé de trouver la différence entre A + = B et A = A + B en Python, alors notez