使用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 相关文章推荐
使用httplib模块来制作Python下HTTP客户端的方法
Jun 19 Python
Python中的数据对象持久化存储模块pickle的使用示例
Mar 03 Python
Python多进程同步简单实现代码
Apr 27 Python
Windows平台Python连接sqlite3数据库的方法分析
Jul 12 Python
Python程序退出方式小结
Dec 09 Python
解决Python requests库编码 socks5代理的问题
May 07 Python
python自动发邮件总结及实例说明【推荐】
May 31 Python
使用pytorch和torchtext进行文本分类的实例
Jan 08 Python
详解python 破解网站反爬虫的两种简单方法
Feb 09 Python
Python脚本去除文件的只读性操作
Mar 05 Python
python实现录制全屏和选择区域录屏功能
Feb 05 Python
python实现不同数据库间数据同步功能
Feb 25 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之curl设置超时实例
2014/11/03 PHP
java微信开发之上传下载多媒体文件
2016/06/24 PHP
php多文件打包下载的实例代码
2017/07/12 PHP
windows系统php环境安装swoole具体步骤
2021/03/04 PHP
JQuery 学习笔记 element属性控制
2009/07/23 Javascript
Mootools 1.2教程 事件处理
2009/09/15 Javascript
基于JQuery的Pager分页器实现代码
2010/07/17 Javascript
JavaScript之引用类型介绍
2012/08/10 Javascript
关于JavaScript的面向对象和继承有利新手学习
2013/01/11 Javascript
『jQuery』取指定url格式及分割函数应用
2013/04/22 Javascript
JS自定义对象实现Java中Map对象功能的方法
2015/01/20 Javascript
cocos2dx骨骼动画Armature源码剖析(三)
2015/09/08 Javascript
总结javascript中的六种迭代器
2016/08/16 Javascript
用js实现博客打赏功能
2016/10/24 Javascript
angular分页指令操作
2017/01/09 Javascript
jQuery插件form-validation-engine正则表达式操作示例
2017/02/09 Javascript
AngularJS实现的JSONP跨域访问数据传输功能详解
2017/07/20 Javascript
在小程序中使用Echart图表的示例代码
2018/08/02 Javascript
解决Vue.js应用回退或刷新界面时提示用户保存修改问题
2019/11/24 Javascript
python实现简单的单变量线性回归方法
2018/11/08 Python
朴素贝叶斯Python实例及解析
2018/11/19 Python
详解Python函数式编程—高阶函数
2019/03/29 Python
python防止随意修改类属性的实现方法
2019/08/21 Python
Python 网络编程之TCP客户端/服务端功能示例【基于socket套接字】
2019/10/12 Python
Python 限定函数参数的类型及默认值方式
2019/12/24 Python
python中实现栈的三种方法
2020/12/19 Python
一份报关员的职业规划范文
2014/01/08 职场文书
青年创业培训欢迎词
2014/01/10 职场文书
信息学院毕业生自荐信范文
2014/03/04 职场文书
贷款担保申请书
2014/05/20 职场文书
2014领导干部四风问题查摆思想汇报
2014/09/13 职场文书
骆驼祥子读书笔记
2015/06/26 职场文书
2016年学习贯彻十八届五中全会精神心得体会
2016/01/05 职场文书
使用canvas实现雪花飘动效果的示例代码
2021/03/30 HTML / CSS
Vue3.0写自定义指令的简单步骤记录
2021/06/27 Vue.js
小程序实现侧滑删除功能
2022/06/25 Javascript