使用PM2+nginx部署python项目的方法示例


Posted in Python onNovember 07, 2018

之前面我们使用uwsgi部署项目比较繁琐,本章节介绍使用pm2+nginx一键部署django项目

PM2的主要特性:

  • 内建负载均衡(使用Node cluster 集群模块)
  • 后台运行
  • 0秒停机重载,我理解大概意思是维护升级的时候不需要停机.
  • 具有Ubuntu和CentOS 的启动脚本
  • 停止不稳定的进程(避免无限循环)
  • 控制台检测
  • 提供 HTTP API
  • 远程控制和实时的接口API ( Nodejs 模块,允许和PM2进程管理器交互 )

一、安装PM2

1、安装nodejs

sudo apt-get install -y nodejs

2、安装pm2

sudo npm install pm2 -g

二、使用PM2部署django项目

1、在django的根目录下创建一个start.sh文件

python manage.py runserver 0.0.0.0:9000

2、使用pm2启动本文件

pm2 start start.sh

3、查看服务启动情况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地址:端口号(9000)

三、结合nginx设置代理到9000端口

1、先根据之前的方法安装好nginx

2、进入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; # 代理到你的本地项目
  }
}
...

3、重启nginx服务器

sudo service nginx restart

四、关于pm2的基本命令补充

  • pm2 start app.js # 启动app.js应用程序
  • pm2 start app.js -i 4 # cluster mode 模式启动4个app.js的应用实例
  • pm2 start app.js --name=“api” # 启动应用程序并命名为 “api”
  • pm2 start app.js --watch # 当文件变化时自动重启应用
  • pm2 start script.sh # 启动 bash 脚本
  • pm2 list # 列表 PM2 启动的所有的应用程序
  • pm2 show [app-name] # 显示应用程序的所有信息
  • pm2 logs # 显示所有应用程序的日志
  • pm2 logs [app-name] # 显示指定应用程序的日志
  • pm2 flush
  • pm2 stop all # 停止所有的应用程序
  • pm2 stop 0 # 停止 id为 0的指定应用程序
  • pm2 restart all # 重启所有应用
  • pm2 reload all # 重启 cluster mode下的所有应用
  • pm2 gracefulReload all # Graceful reload all apps in cluster mode
  • pm2 delete all # 关闭并删除所有应用
  • pm2 delete 0 # 删除指定应用 id 0
  • pm2 scale api 10 # 把名字叫api的应用扩展到10个实例
  • pm2 reset [app-name] # 重置重启数量
  • pm2 startup # 创建开机自启动命令
  • pm2 save # 保存当前应用列表
  • pm2 resurrect # 重新加载保存的应用列表
  • 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"

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
在windows下快速搭建web.py开发框架方法
Apr 22 Python
遍历python字典几种方法总结(推荐)
Sep 11 Python
python模块之paramiko实例代码
Jan 31 Python
PyQt5实现下载进度条效果
Apr 19 Python
用TensorFlow实现多类支持向量机的示例代码
Apr 28 Python
python+OpenCV实现车牌号码识别
Nov 08 Python
django-xadmin根据当前登录用户动态设置表单字段默认值方式
Mar 13 Python
Python生成器实现简单&quot;生产者消费者&quot;模型代码实例
Mar 27 Python
Python pytesseract验证码识别库用法解析
Jun 29 Python
Python爬虫抓取论坛关键字过程解析
Oct 19 Python
python openCV自制绘画板
Oct 27 Python
Python字典dict常用方法函数实例
Nov 09 Python
python读取word文档,插入mysql数据库的示例代码
Nov 07 #Python
pandas.DataFrame删除/选取含有特定数值的行或列实例
Nov 07 #Python
python 返回列表中某个值的索引方法
Nov 07 #Python
pandas 根据列的值选取所有行的示例
Nov 07 #Python
Pandas过滤dataframe中包含特定字符串的数据方法
Nov 07 #Python
pandas筛选某列出现编码错误的解决方法
Nov 07 #Python
python绘制中国大陆人口热力图
Nov 07 #Python
You might like
通过5个php实例细致说明传值与传引用的区别
2012/08/08 PHP
ThinkPHP3.1新特性之多层MVC的支持
2014/06/19 PHP
PHP使用逆波兰式计算工资的方法
2015/07/29 PHP
利用PHP如何统计Nginx日志的User Agent数据
2019/03/06 PHP
基于ThinkPHP删除目录及目录文件函数
2020/10/28 PHP
javascript 判断数组是否已包含了某个元素的函数
2010/05/30 Javascript
js中 关于undefined和null的区别介绍
2013/04/16 Javascript
extjs中form与grid交互数据(record)的方法
2013/08/29 Javascript
代码分析jQuery四种静态方法使用
2015/07/23 Javascript
jQuery弹层插件jquery.fancybox.js用法实例
2016/01/22 Javascript
浅谈Sticky组件的改进实现
2016/03/22 Javascript
vue项目中引入noVNC远程桌面的方法
2018/03/05 Javascript
详解bootstrap-fileinput文件上传控件的亲身实践
2019/03/21 Javascript
微信小程序如何获取群聊的openGid以及名称详解
2019/07/17 Javascript
解决Layui当中的导航条动态添加后渲染失败的问题
2019/09/25 Javascript
JQuery基于FormData异步提交数据文件
2020/09/01 jQuery
vue 验证两次输入的密码是否一致的方法示例
2020/09/29 Javascript
es5 类与es6中class的区别小结
2020/11/09 Javascript
[33:28]完美世界DOTA2联赛PWL S3 PXG vs GXR 第三场 12.19
2020/12/24 DOTA
深入浅析python定时杀进程
2016/06/06 Python
为什么入门大数据选择Python而不是Java?
2018/03/07 Python
python 截取XML中bndbox的坐标中的图像,另存为jpg的实例
2020/03/10 Python
python pyqtgraph 保存图片到本地的实例
2020/03/14 Python
python 动态绘制爱心的示例
2020/09/27 Python
Python脚本调试工具安装过程
2021/01/11 Python
葡萄牙航空官方网站:TAP Air Portugal
2019/10/31 全球购物
房地产开发计划书
2014/01/10 职场文书
《谁的本领大》教后反思
2014/04/25 职场文书
升职自我推荐信范文
2015/03/25 职场文书
前台接待员岗位职责
2015/04/15 职场文书
2015年仓管员工作总结
2015/04/21 职场文书
讲文明倡议书
2015/04/29 职场文书
使用pytorch实现线性回归
2021/04/11 Python
深入理解python协程
2021/06/15 Python
eval(cmd)与eval($cmd)的区别与联系
2021/07/07 PHP
Python+pyaudio实现音频控制示例详解
2022/07/23 Python