使用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的ORM框架中SQLAlchemy庫的查詢操作的教程
這篇文章主要介紹了Python的ORM框架中SQLAlchemy庫的查詢操作的教程,SQLAlchemy用來操作數(shù)據(jù)庫十分方便,需要的朋友可以參考下2015-04-04
Python中獲取網(wǎng)頁狀態(tài)碼的兩個(gè)方法
這篇文章主要介紹了Python中獲取網(wǎng)頁狀態(tài)碼的兩個(gè)方法,分別使用urllib模塊和requests模塊實(shí)現(xiàn),需要的朋友可以參考下2014-11-11
python實(shí)現(xiàn)遞歸查找某個(gè)路徑下所有文件中的中文字符
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)遞歸查找某個(gè)路徑下所有文件中的中文字符,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-08-08
python3使用urllib示例取googletranslate(谷歌翻譯)
這篇文章主要介紹了使用urllib取googletranslate(谷歌翻譯)的示例,通過這個(gè)谷歌翻譯示例學(xué)習(xí)python3中urllib的使用方法,2014-01-01
PyQt5實(shí)現(xiàn)QLineEdit添加clicked信號(hào)的方法
今天小編就為大家分享一篇PyQt5實(shí)現(xiàn)QLineEdit添加clicked信號(hào)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-06-06
Python如何管理多個(gè)PostgreSQL數(shù)據(jù)庫的連接
這篇文章主要為大家詳細(xì)介紹了Python如何通過讀取配置文件中的PostgreSQL服務(wù)信息,連接到相應(yīng)的PostgreSQL數(shù)據(jù)庫,感興趣的小伙伴可以了解下2024-11-11
python庫JsonSchema驗(yàn)證JSON數(shù)據(jù)結(jié)構(gòu)使用詳解
這篇文章主要為大家介紹了python庫JsonSchema驗(yàn)證JSON數(shù)據(jù)結(jié)構(gòu)的使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05

