使用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编程-将Python程序转化为可执行程序[整理]
Apr 09 Python
python实现获取序列中最小的几个元素
Sep 25 Python
python3新特性函数注释Function Annotations用法分析
Jul 28 Python
python之django母板页面的使用
Jul 03 Python
python中sys.argv函数精简概括
Jul 08 Python
一百行python代码将图片转成字符画
Feb 19 Python
matplotlib实现热成像图colorbar和极坐标图的方法
Dec 13 Python
关于python之字典的嵌套,递归调用方法
Jan 21 Python
Python二元算术运算常用方法解析
Sep 15 Python
python 批量下载bilibili视频的gui程序
Nov 20 Python
Pandas||过滤缺失数据||pd.dropna()函数的用法说明
May 14 Python
基于Python实现nc批量转tif格式
Aug 14 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 array_search() 函数使用
2010/04/13 PHP
php邮件发送,php发送邮件的类
2011/03/24 PHP
php数组中包含中文的排序方法
2014/06/03 PHP
详解PHP执行定时任务的实现思路
2015/12/21 PHP
PHP设计模式之委托模式定义与用法简单示例
2018/08/13 PHP
javascript开发技术大全 第4章 直接量与字符集
2011/07/03 Javascript
jQuery-serialize()输出序列化form表单值的方法
2012/12/26 Javascript
JavaScript电子时钟倒计时
2016/01/09 Javascript
三分钟带你玩转jQuery.noConflict()
2016/02/15 Javascript
JS选取DOM元素的简单方法
2016/07/08 Javascript
详解Angular开发中的登陆与身份验证
2016/07/27 Javascript
浅析node应用的timing-attack安全漏洞
2018/02/28 Javascript
深入浅析Vue.js计算属性和侦听器
2018/05/05 Javascript
js中的 || 与 &amp;&amp; 运算符详解
2018/05/24 Javascript
微信小程序实现跑马灯效果完整代码(附效果图)
2018/05/30 Javascript
用JS实现选项卡
2020/03/23 Javascript
多页vue应用的单页面打包方法(内含打包模式的应用)
2020/06/11 Javascript
python通过zlib实现压缩与解压字符串的方法
2014/11/19 Python
Python中使用select模块实现非阻塞的IO
2015/02/03 Python
Python实现的购物车功能示例
2018/02/11 Python
对python模块中多个类的用法详解
2019/01/10 Python
Python class的继承方法代码实例
2020/02/14 Python
基于pygame实现童年掌机打砖块游戏
2020/02/25 Python
CSS3 input框的实现代码类似Google登录的动画效果
2020/08/04 HTML / CSS
解决HTML5中滚动到底部的事件问题
2019/08/22 HTML / CSS
领先的钻石和订婚戒指零售商:Diamonds-USA
2016/12/11 全球购物
意大利单身交友网站:Meetic
2020/07/12 全球购物
小学生作文评语大全
2014/04/21 职场文书
2014年秋季开学寄语
2014/08/02 职场文书
2014大学生党员评议个人总结
2014/09/22 职场文书
小学毕业感言100字
2015/07/30 职场文书
2016保送生自荐信范文
2016/01/29 职场文书
PHP设计模式(观察者模式)
2021/07/07 PHP
Python Flask搭建yolov3目标检测系统详解流程
2021/11/07 Python
MySQL实现配置主从复制项目实践
2022/03/31 MySQL
SQLServer常见数学函数梳理总结
2022/08/05 MySQL