使用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统计cpu利用率的方法
Jun 02 Python
Python中map和列表推导效率比较实例分析
Jun 17 Python
理解生产者消费者模型及在Python编程中的运用实例
Jun 26 Python
Python爬虫包 BeautifulSoup  递归抓取实例详解
Jan 28 Python
python+selenium 定位到元素,无法点击的解决方法
Jan 30 Python
详解Python3注释知识点
Feb 19 Python
django rest framework vue 实现用户登录详解
Jul 29 Python
Python 中的 import 机制之实现远程导入模块
Oct 29 Python
python获取引用对象的个数方式
Dec 20 Python
Python拼接字符串的7种方式详解
Mar 19 Python
使用OpenCV获取图像某点的颜色值,并设置某点的颜色
Jun 02 Python
Python实现简单得递归下降Parser
May 02 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中文乱码
2009/11/26 PHP
php中get_headers函数的作用及用法的详细介绍
2013/04/27 PHP
PHP 获取文件权限函数介绍
2013/07/11 PHP
php自定义的格式化时间示例代码
2013/12/05 PHP
PHP获取指定日期是星期几的实现方法
2016/11/30 PHP
laravel 根据不同组织加载不同视图的实现
2019/10/14 PHP
Javascript与vbscript数据共享
2007/01/09 Javascript
基于jquery打造的百分比动态色彩条插件
2012/09/19 Javascript
Knockoutjs的环境搭建教程
2012/11/26 Javascript
JavaScript 判断用户输入的邮箱及手机格式是否正确
2013/12/08 Javascript
js图片闪动特效可以控制间隔时间如几分钟闪动一下
2014/08/12 Javascript
JavaScript中合并数组的N种方法
2014/09/16 Javascript
原生js仿jquery animate动画效果
2016/07/13 Javascript
jQuery+正则+文本框只能输入数字的实现方法
2016/10/07 Javascript
浅谈jquery页面初始化的4种方式
2016/11/27 Javascript
关于JS Lodop打印插件打印Bootstrap样式错乱问题的解决方案
2016/12/23 Javascript
一个小时快速搭建微信小程序的方法步骤
2019/04/15 Javascript
让IDE识别webpack的别名alias的实现方法
2020/05/06 Javascript
解决echarts数据二次渲染不成功的问题
2020/07/20 Javascript
python3爬取各类天气信息
2018/02/24 Python
Python中偏函数用法示例
2018/06/07 Python
Window 64位下python3.6.2环境搭建图文教程
2018/09/19 Python
python requests抓取one推送文字和图片代码实例
2019/11/04 Python
python飞机大战pygame游戏框架搭建操作详解
2019/12/17 Python
pytorch中的卷积和池化计算方式详解
2020/01/03 Python
python如何变换环境
2020/07/21 Python
小白教你PyCharm从下载到安装再到科学使用PyCharm2020最新激活码
2020/09/25 Python
python3代码输出嵌套式对象实例详解
2020/12/03 Python
C语言如何决定使用那种整数类型
2016/11/26 面试题
优秀团员个人的自我评价
2013/10/02 职场文书
单位工作证明格式模板
2014/10/04 职场文书
高考学习决心书
2015/02/04 职场文书
通知格式
2015/04/27 职场文书
十七岁的单车观后感
2015/06/12 职场文书
MySQL常见优化方案汇总
2022/01/18 MySQL
TV动画《间谍过家家》公开PV
2022/03/20 日漫