使用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 15 Python
python通过线程实现定时器timer的方法
Mar 16 Python
python实现将内容分行输出
Nov 05 Python
Python中的左斜杠、右斜杠(正斜杠和反斜杠)
Aug 30 Python
python中实现字符串翻转的方法
Jul 11 Python
python 2.7.13 安装配置方法图文教程
Sep 18 Python
为什么从Python 3.6开始字典有序并效率更高
Jul 15 Python
python实现飞机大战小游戏
Nov 08 Python
Python抓包程序mitmproxy安装和使用过程图解
Mar 02 Python
Pandas的数据过滤实现
Jan 15 Python
Python深度学习之Pytorch初步使用
May 20 Python
python 爬取京东指定商品评论并进行情感分析
May 27 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存储过程
2007/02/14 PHP
php专用数组排序类ArraySortUtil用法实例
2015/04/03 PHP
浅谈PHP中关于foreach使用引用变量的坑
2016/11/14 PHP
PHP实现的折半查询算法示例
2017/10/09 PHP
php+lottery.js实现九宫格抽奖功能
2019/07/21 PHP
xml 与javascript结合的问题解决方法
2007/03/24 Javascript
javascript 打印内容方法小结
2009/11/04 Javascript
判断浏览器的javascript版本的代码
2010/09/03 Javascript
jquery解析JSON数据示例代码
2014/03/17 Javascript
浅谈JavaScript事件的属性列表
2015/03/01 Javascript
轻松实现javascript数据双向绑定
2015/11/11 Javascript
以JavaScript来实现WordPress中的二级导航菜单的方法
2015/12/14 Javascript
JavaScript绑定事件监听函数的通用方法
2016/05/14 Javascript
jQuery简单设置文本框回车事件的方法
2016/08/01 Javascript
Bootstrap模态框水平垂直居中与增加拖拽功能
2016/11/09 Javascript
Node.js安装配置图文教程
2017/05/10 Javascript
ES6 javascript中Class类继承用法实例详解
2017/10/30 Javascript
vue动态绑定组件子父组件多表单验证功能的实现代码
2018/05/14 Javascript
JS highcharts动态柱状图原理及实现
2020/10/16 Javascript
python list 合并连接字符串的方法
2013/03/09 Python
Python简单实现的代理服务器端口映射功能示例
2018/04/08 Python
TensorFlow的权值更新方法
2018/06/14 Python
使用python将大量数据导出到Excel中的小技巧分享
2018/06/14 Python
Django实现WebSSH操作物理机或虚拟机的方法
2019/11/06 Python
python列表推导式操作解析
2019/11/26 Python
Python Selenium实现无可视化界面过程解析
2020/08/25 Python
美国百年历史早餐食品供应商:Wolferman’s
2017/01/18 全球购物
意大利奢侈品购物网站:Deliberti
2019/10/08 全球购物
历史学专业毕业生求职信
2013/09/27 职场文书
数据管理员的自我评价分享
2013/11/15 职场文书
仓管岗位职责范本
2014/02/08 职场文书
2019年二手房买卖合同范本
2019/10/14 职场文书
Ajax异步刷新功能及简单案例
2021/11/20 Javascript
JavaScript实现优先级队列
2021/12/06 Javascript
Django基础CBV装饰器和中间件
2022/03/22 Python
Python中文分词库jieba(结巴分词)详细使用介绍
2022/04/07 Python