使用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中的True,False条件判断实例分析
Jan 12 Python
Python实现国外赌场热门游戏Craps(双骰子)
Mar 31 Python
使用Python脚本操作MongoDB的教程
Apr 16 Python
Python3写入文件常用方法实例分析
May 22 Python
python 读取竖线分隔符的文本方法
Dec 20 Python
使用PIL(Python-Imaging)反转图像的颜色方法
Jan 24 Python
python批量图片处理简单示例
Aug 06 Python
python多线程同步之文件读写控制
Feb 25 Python
Python使用Slider组件实现调整曲线参数功能示例
Sep 06 Python
Python如何爬取51cto数据并存入MySQL
Aug 25 Python
10个示例带你掌握python中的元组
Nov 23 Python
详解Python 中的 defaultdict 数据类型
Feb 22 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静态方法及普通方法的区别
2016/10/04 PHP
Laravel 自定命令以及生成文件的例子
2019/10/23 PHP
php中使用array_filter()函数过滤数组实例讲解
2021/03/03 PHP
关于js拖拽上传 [一个拖拽上传修改头像的流程]
2011/07/13 Javascript
js实现图片放大缩小功能后进行复杂排序的方法
2012/11/08 Javascript
jQuery怎么解析Json字符串(Json格式/Json对象)
2013/08/09 Javascript
JavaScript设计模式之策略模式实例
2014/10/10 Javascript
jQuery的text()方法用法分析
2014/12/20 Javascript
JavaScript跨浏览器获取页面中相同class节点的方法
2015/03/03 Javascript
node.js调用C++开发的模块实例
2015/07/03 Javascript
javascript发送短信验证码实现代码
2015/11/12 Javascript
JavaScript快速切换繁体中文和简体中文的方法及网站支持简繁体切换的绝招
2016/03/07 Javascript
JavaScript驾驭网页-CSS与DOM
2016/03/24 Javascript
javascript中利用柯里化函数实现bind方法
2016/04/29 Javascript
js弹出窗口返回值的简单实例
2016/05/28 Javascript
js实现非常棒的弹出div
2016/10/06 Javascript
jQuery插件ajaxFileUpload使用详解
2017/01/10 Javascript
vue2里面ref的具体使用方法
2017/10/27 Javascript
解决Linux无法正常安装与卸载Node.js的方法
2018/01/19 Javascript
纯JS实现可用于页码更换的飞页特效示例
2018/05/21 Javascript
VUE注册全局组件和局部组件过程解析
2019/10/10 Javascript
Python中你应该知道的一些内置函数
2017/03/31 Python
PyCharm安装第三方库如Requests的图文教程
2018/05/18 Python
浅谈Python中的bs4基础
2018/10/21 Python
ubuntu 16.04下python版本切换的方法
2019/06/14 Python
如何使用python进行pdf文件分割
2019/11/11 Python
如何向scrapy中的spider传递参数的几种方法
2020/11/18 Python
加拿大时尚潮流大码女装购物网站:Addition Elle
2018/04/02 全球购物
给水工程专业毕业生自荐信
2014/01/28 职场文书
小学生九一八纪念日83周年演讲稿500字
2014/09/17 职场文书
2014年银行员工工作总结
2014/11/12 职场文书
给女朋友的道歉短信
2015/05/12 职场文书
2015年大班保育员工作总结
2015/05/18 职场文书
MySQL kill不掉线程的原因
2021/05/07 MySQL
python 实现两个变量值进行交换的n种操作
2021/06/02 Python
利用nginx搭建RTMP视频点播、直播、HLS服务器
2022/05/25 Servers