使用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 相关文章推荐
python解析文件示例
Jan 23 Python
Python中shutil模块的学习笔记教程
Apr 04 Python
Python判断两个对象相等的原理
Dec 12 Python
python基础教程项目二之画幅好画
Apr 02 Python
Python实现统计给定字符串中重复模式最高子串功能示例
May 16 Python
Python中存取文件的4种不同操作
Jul 02 Python
Selenium(Python web测试工具)基本用法详解
Aug 10 Python
实时获取Python的print输出流方法
Jan 07 Python
Python正则表达式匹配数字和小数的方法
Jul 03 Python
python zip,lambda,map函数代码实例
Apr 04 Python
python实现图片转字符画
Feb 19 Python
详解在OpenCV中如何使用图像像素
Mar 03 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
PHP 和 MySQL 基础教程(三)
2006/10/09 PHP
Codeigniter实现多文件上传并创建多个缩略图
2014/06/12 PHP
2款PHP无限级分类实例代码
2015/11/11 PHP
PHP动态地创建属性和方法, 对象的复制, 对象的比较,加载指定的文件,自动加载类文件,命名空间
2016/05/06 PHP
PHP7新特性foreach 修改示例介绍
2016/08/26 PHP
php之header的不同用法总结(实例讲解)
2017/11/28 PHP
javascript 操作Word和Excel的实现代码
2009/10/26 Javascript
JQUERY 实现窗口滚动搜索框停靠效果(类似滚动停靠)
2013/03/27 Javascript
等待指定时间后自动跳转或关闭当前页面的js代码
2013/07/09 Javascript
在JavaScript中实现类的方式探讨
2013/08/28 Javascript
js实现局部页面打印预览原理及示例代码
2014/07/03 Javascript
JavaScript中跨域调用Flash的方法
2014/08/11 Javascript
一段非常简单的js判断浏览器的内核
2014/08/17 Javascript
JS实现动态移动层及拖动浮层关闭的方法
2015/04/30 Javascript
jquery 全选、全不选、反选效果的实现代码【推荐】
2016/05/05 Javascript
js实现简易垂直滚动条
2017/02/22 Javascript
详解vue-router 2.0 常用基础知识点之router-link
2017/05/10 Javascript
JavaScript实现的超简单计算器功能示例
2017/12/23 Javascript
JS实现DOM删除节点操作示例
2018/04/04 Javascript
react中实现搜索结果中关键词高亮显示
2018/07/31 Javascript
对Vue table 动态表格td可编辑的方法详解
2018/08/28 Javascript
微信小程序基于movable-view实现滑动删除效果
2020/01/08 Javascript
使用element-ui +Vue 解决 table 里包含表单验证的问题
2020/07/17 Javascript
[01:01:18]VP vs NIP 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
OpenCV2从摄像头获取帧并写入视频文件的方法
2018/08/03 Python
python实现点击按钮修改数据的方法
2019/07/17 Python
QML实现钟表效果
2020/06/02 Python
Python使用OpenPyXL处理Excel表格
2020/07/02 Python
CSS3 简写animation
2012/05/10 HTML / CSS
计算机应用职专应届生求职信
2013/11/12 职场文书
2015新学期校长寄语(3篇)
2015/03/25 职场文书
催款函范本大全
2015/06/24 职场文书
初中军训感言
2015/08/01 职场文书
Flutter集成高德地图并添加自定义Maker的实践
2022/04/07 Java/Android
Go调用Rust方法及外部函数接口前置
2022/06/14 Golang
Java代码规范与质量检测插件SonarLint的使用
2022/08/05 Java/Android