Comment utiliser le socket nginx + uwsgi pour déployer des projets Django sur ubuntu en détail

avant-propos

Comparé à l'apprentissage de Django, le déploiement devrait être un élément plus difficile dans tout le processus, surtout pour certains autodidactes.Pour ceux qui n'ont jamais contacté le serveur, je crois que cela a convaincu beaucoup de monde ! C'était pareil quand j'étudiais !
Aujourd'hui, Spicy Tiaojun vous donnera un démontage et une analyse détaillés, afin que vous puissiez éviter les détours et combler les trous ~

1 Test sur le serveur de développement

Exécutez le test du serveur de développement pour vous assurer que le site Web peut être ouvert normalement sous le serveur de développement.

cd 项目目录
python manage.py runserver

2 Installez nginx et les packages requis

sudo apt-get install python-dev nginx

3 Déployer avec uwsgi

installer uwsgi

sudo pip install uwsgi --upgrade

Exécutez le projet avec uwsgi

uwsgi --http :8001 --chdir /path/to/project --home=/path/to/env --module project.wsgi

Cela peut être exécuté, -home spécifie le chemin virtualenv, sinon, vous pouvez le supprimer. project.wsgi fait référence au fichier project/wsgi.py

Remarque : Si le port d'invite est occupé, nous pouvons d'abord connaître le numéro de processus correspondant au port, puis tuer le processus.

lsof -i :8001    # 根据端口后进行查询 查询结果中的PID就是进程号,如果相关进程有多个,那就杀多个
sudo kill -9 进程号   #根据进程号杀死进程

4 Utiliser le superviseur pour gérer les processus

Installer le package superviseur

(sudo) pip install supervisor

Générez le fichier de configuration par défaut du superviseur, par exemple, nous le mettons dans le chemin /etc/supervisord.conf :

(sudo) echo_supervisord_conf > /etc/supervisord.conf

Ouvrez superviseur.conf et ajoutez en bas (ne pas mettre d'espaces avant chaque ligne pour éviter les erreurs) :

[program:fmxm]
command=/path/to/uwsgi --http :8003 --chdir /path/to/fuxm --module fmxm.wsgi
directory=/path/to/fmxm
startsecs=0
stopwaitsecs=0
autostart=true
autorestart=true

Écrivez la commande correspondante dans commande, afin qu'elle puisse être gérée par le superviseur.

commencer le superviseur

(sudo) supervisord -c /etc/supervisord.conf

Redémarrez le projet :

(sudo) supervisorctl -c /etc/supervisord.conf restart fmxm

Démarrer, arrêter ou redémarrer un programme ou tous les programmes gérés par le superviseur :

(sudo) supervisorctl -c /etc/supervisord.conf [start|stop|restart] [program-name|all]

En prenant uwsgi comme exemple, la commande d'une ligne ci-dessus est trop longue. Nous utilisons le fichier de configuration ini pour le faire. Par exemple, le projet se trouve à l'emplacement /home/tu/fmxm.

Créez un nouveau fichier uwsgi.ini et le chemin complet est /home/tu/fmxm/uwsgi.ini

[uwsgi]
socket = /home/tu/fmxm/fmxm.sock
chdir = /home/tu/fmxm
wsgi-file = fmxm/wsgi.py
touch-reload = /home/tu/fmxm/reload
 
processes = 2
threads = 4
 
chmod-socket = 664
chown-socket = tu:www-data
 
vacuum = true

Notez le /home/tu/fmxm/fmxm.sock ci-dessus, nous l'associerons à nginx dans un instant.

Créez un nouveau fichier de rechargement vierge sur le projet, tant que vous touchez ce fichier (rechargement tactile), le projet redémarrera.

Remarque : Il n'est pas recommandé de placer les fichiers sock sous /tmp, comme /tmp/xxx.sock (non recommandé) !
Les fichiers temporaires de certains

sudo mkdir -p /tmp2/ && sudo chmod 777 /tmp2/  #然后可以用 /tmp2/fmxm.sock 这样的路径了

Modifiez la ligne de commande dans le fichier de configuration du superviseur :

[program:fmxm]
command=/path/to/uwsgi --ini /home/tu/fmxm/uwsgi.ini
directory=/path/to/fmxm
startsecs=0

Redémarrez ensuite le superviseur :

(sudo) supervisorctl -c /etc/supervisord.conf restart fmxm
或者
(sudo) supervisorctl -c /etc/supervisord.conf restart all

5 Configurer Nginx

Créer un nouveau fichier de configuration

sudo vim /etc/nginx/sites-available/fmxm.conf

écrire ce qui suit

server {
    
    
    listen      80;
    server_name www.ziqiangxuetang.com;
    charset     utf-8;
 
    client_max_body_size 75M;
 
    location /media  {
    
    
        alias /path/to/project/media;
    }
 
    location /static {
    
    
        alias /path/to/project/static;
    }
 
    location / {
    
    
        uwsgi_pass  unix:///home/tu/fmxm/fmxm.sock;
        include     /etc/nginx/uwsgi_params;
    }
}

Activer le site Web

sudo ln -s /etc/nginx/sites-available/fmxm.conf /etc/nginx/sites-enabled/fmxm.conf

Tester la syntaxe de configuration

sudo service nginx configtest 或 /path/to/nginx -t

Redémarrez le serveur nginx :

sudo service nginx reload 或 sudo service nginx restart 或 /path/to/nginx -s reload

Je suppose que tu aimes

Origine blog.csdn.net/AI19970205/article/details/124308995
conseillé
Classement