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 ~
teneur
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