使用PM2+nginx部署python項(xiàng)目的方法示例
之前面我們使用uwsgi部署項(xiàng)目比較繁瑣,本章節(jié)介紹使用pm2+nginx一鍵部署django項(xiàng)目
PM2的主要特性:
- 內(nèi)建負(fù)載均衡(使用Node cluster 集群模塊)
- 后臺(tái)運(yùn)行
- 0秒停機(jī)重載,我理解大概意思是維護(hù)升級(jí)的時(shí)候不需要停機(jī).
- 具有Ubuntu和CentOS 的啟動(dòng)腳本
- 停止不穩(wěn)定的進(jìn)程(避免無限循環(huán))
- 控制臺(tái)檢測
- 提供 HTTP API
- 遠(yuǎn)程控制和實(shí)時(shí)的接口API ( Nodejs 模塊,允許和PM2進(jìn)程管理器交互 )
一、安裝PM2
1、安裝nodejs
sudo apt-get install -y nodejs
2、安裝pm2
sudo npm install pm2 -g
二、使用PM2部署django項(xiàng)目
1、在django的根目錄下創(chuàng)建一個(gè)start.sh文件
python manage.py runserver 0.0.0.0:9000
2、使用pm2啟動(dòng)本文件
pm2 start start.sh
3、查看服務(wù)啟動(dòng)情況pm2 list
(django_env) root@iZ941w016mwZ:/etc/nginx# pm2 list ┌───────┬────┬──────┬────────┬────────┬─────┬────────┬──────────┐ │ Name │ id │ mode │ status │ ↺ │ cpu │ memory │ ├───────┼────┼──────┼────────┼────────┼─────┼────────┼──────────┤ │ start │ 0 │ N/A │ fork │ online │ 690 │ 0% │ 2.7 MB │ └───────┴────┴──────┴────────┴────────┴─────┴────────┴──────────┘ Use `pm2 show <id|name>` to get more details about an app (django_env) root@iZ941w016mwZ:/etc/nginx#
4、客戶端連接ip地址:端口號(hào)(9000)
三、結(jié)合nginx設(shè)置代理到9000端口
1、先根據(jù)之前的方法安裝好nginx
2、進(jìn)入nginx的包文件(/etc/nginx)下修改nginx.conf
... server { listen 80; server_name www.yst168.cn yst168.cn http://www.yst168.cn; # 這里是你的域名 location / { proxy_pass http://localhost:9000; # 代理到你的本地項(xiàng)目 } } ...
3、重啟nginx服務(wù)器
sudo service nginx restart
四、關(guān)于pm2的基本命令補(bǔ)充
- pm2 start app.js # 啟動(dòng)app.js應(yīng)用程序
- pm2 start app.js -i 4 # cluster mode 模式啟動(dòng)4個(gè)app.js的應(yīng)用實(shí)例
- pm2 start app.js --name=“api” # 啟動(dòng)應(yīng)用程序并命名為 “api”
- pm2 start app.js --watch # 當(dāng)文件變化時(shí)自動(dòng)重啟應(yīng)用
- pm2 start script.sh # 啟動(dòng) bash 腳本
- pm2 list # 列表 PM2 啟動(dòng)的所有的應(yīng)用程序
- pm2 show [app-name] # 顯示應(yīng)用程序的所有信息
- pm2 logs # 顯示所有應(yīng)用程序的日志
- pm2 logs [app-name] # 顯示指定應(yīng)用程序的日志
- pm2 flush
- pm2 stop all # 停止所有的應(yīng)用程序
- pm2 stop 0 # 停止 id為 0的指定應(yīng)用程序
- pm2 restart all # 重啟所有應(yīng)用
- pm2 reload all # 重啟 cluster mode下的所有應(yīng)用
- pm2 gracefulReload all # Graceful reload all apps in cluster mode
- pm2 delete all # 關(guān)閉并刪除所有應(yīng)用
- pm2 delete 0 # 刪除指定應(yīng)用 id 0
- pm2 scale api 10 # 把名字叫api的應(yīng)用擴(kuò)展到10個(gè)實(shí)例
- pm2 reset [app-name] # 重置重啟數(shù)量
- pm2 startup # 創(chuàng)建開機(jī)自啟動(dòng)命令
- pm2 save # 保存當(dāng)前應(yīng)用列表
- pm2 resurrect # 重新加載保存的應(yīng)用列表
- pm2 update # Save processes, kill PM2 and restore processes
- pm2 generate # Generate a sample json configuration file
- pm2 start app.js --node-args="–max-old-space-size=1024"
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python對(duì)接PicGo實(shí)現(xiàn)圖片自動(dòng)加水印并上傳操作示例
這篇文章主要為大家介紹了Python對(duì)接PicGo實(shí)現(xiàn)圖片自動(dòng)加水印并上傳的操作示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2021-10-10使用python實(shí)現(xiàn)快速搭建簡易的FTP服務(wù)器
本文給大家推薦的是如何使用Python實(shí)現(xiàn)快速搭建簡易的FTP服務(wù)器的方法,非常的簡單,有需要的小伙伴可以參考下2018-09-09聊聊python中的load、loads實(shí)現(xiàn)反序列化的問題
在python自動(dòng)化中,我們傳遞一些參數(shù)是需要從文件中讀取過來的,讀取過來的字典并非python對(duì)象數(shù)據(jù)類型而是string類型。本文給大家分享python中的load、loads實(shí)現(xiàn)反序列化的問題,感興趣的朋友一起看看吧2021-10-10