使用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使用lxml模块和Requests模块抓取HTML页面的教程
May 16 Python
python批量添加zabbix Screens的两个脚本分享
Jan 16 Python
python dict 字典 以及 赋值 引用的一些实例(详解)
Jan 20 Python
基于python的图片修复程序(实现水印去除)
Jun 04 Python
Python txt文件加入字典并查询的方法
Jan 15 Python
python使用正则表达式(Regular Expression)方法超详细
Dec 30 Python
Python urlopen()和urlretrieve()用法解析
Jan 07 Python
Python并发concurrent.futures和asyncio实例
May 04 Python
Python无损压缩图片的示例代码
Aug 06 Python
python操作链表的示例代码
Sep 27 Python
详解python百行有效代码实现汉诺塔小游戏(简约版)
Oct 30 Python
python字符串拼接.join()和拆分.split()详解
Nov 23 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中利用XML技术构造远程服务(上)
2006/10/09 PHP
Mysql和网页显示乱码解决方法集锦
2008/03/27 PHP
php实现文件下载(支持中文文名)
2013/12/04 PHP
php绘制一个扇形的方法
2015/01/24 PHP
php简单实现多维数组排序的方法
2016/09/30 PHP
PHP CURL post数据报错 failed creating formpost data
2016/10/16 PHP
php curl简单采集图片生成base64编码(并附curl函数参数说明)
2019/02/15 PHP
TP5框架安全机制实例分析
2020/04/05 PHP
JavaScript的漂亮的代码片段
2013/06/05 Javascript
使用base64对图片的二进制进行编码并用ajax进行显示
2017/01/03 Javascript
js仿网易表单及时验证功能
2017/03/07 Javascript
JS 调试中常见的报错问题解决方法
2017/05/20 Javascript
通过构造函数实例化对象的方法
2017/06/28 Javascript
Bootstrap3.3.7导航栏下拉菜单鼠标滑过展开效果
2017/10/31 Javascript
详解webpack-dev-server使用方法
2018/09/14 Javascript
40行代码把Vue3的响应式集成进React做状态管理
2020/05/20 Javascript
浅谈vue中使用编辑器vue-quill-editor踩过的坑
2020/08/03 Javascript
Python语言的12个基础知识点小结
2014/07/10 Python
python在windows下实现ping操作并接收返回信息的方法
2015/03/20 Python
Python3 安装PyQt5及exe打包图文教程
2019/01/08 Python
python通过txt文件批量安装依赖包的实现步骤
2019/08/13 Python
python英语单词测试小程序代码实例
2019/09/09 Python
django ListView的使用 ListView中获取url中的参数值方式
2020/03/27 Python
对Matlab中共轭、转置和共轭装置的区别说明
2020/05/11 Python
python实现人工蜂群算法
2020/09/18 Python
一篇文章带你搞定Ubuntu中打开Pycharm总是卡顿崩溃
2020/11/02 Python
Bose加拿大官方网站:美国知名音响品牌
2019/03/21 全球购物
澳大利亚儿童鞋在线:The Trybe
2019/07/16 全球购物
电气工程及其自动化学生实习自我鉴定
2013/09/19 职场文书
电子信息专业学生自荐信
2013/11/09 职场文书
农村党支部先进事迹
2014/01/14 职场文书
2014年挂职干部工作总结
2014/12/06 职场文书
地道战观后感
2015/06/04 职场文书
经营场所证明范本
2015/06/19 职场文书
幼儿园小班教师随笔
2015/08/14 职场文书
MySQL系列之十 MySQL事务隔离实现并发控制
2021/07/02 MySQL