使用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 读写XML文件的实例
Aug 02 Python
python按时间排序目录下的文件实现方法
Oct 17 Python
python实现嵌套列表平铺的两种方法
Nov 08 Python
Python进阶之自定义对象实现切片功能
Jan 07 Python
python3.6数独问题的解决
Jan 21 Python
Python实现的栈、队列、文件目录遍历操作示例
May 06 Python
Django中的用户身份验证示例详解
Aug 07 Python
Python基础之高级变量类型实例详解
Jan 03 Python
python剪切视频与合并视频的实现
Mar 03 Python
利用Python自动化操作AutoCAD的实现
Apr 01 Python
Python使用for生成列表实现过程解析
Sep 22 Python
python单例模式的应用场景实例讲解
Feb 24 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数据库导出为.sql文件实例(仿PHPMyadmin导出功能)
2014/05/10 PHP
PHP+MySQL删除操作实例
2015/01/21 PHP
php实现图片上传并进行替换操作
2016/03/15 PHP
thinkPHP微信分享接口JSSDK用法实例
2017/07/07 PHP
PHP全局使用Laravel辅助函数dd
2019/12/26 PHP
javascript检测页面是否缩放的小例子
2013/05/16 Javascript
JS实现的一个简单的Autocomplete自动完成例子
2014/04/16 Javascript
javascript实现字符串反转的方法
2015/02/05 Javascript
js获取html的span标签的值方法(超简单)
2016/07/26 Javascript
js中class的点击事件没有效果的解决方法
2016/10/13 Javascript
基于JavaScript实现随机颜色输入框
2016/12/10 Javascript
JavaScript数组操作详解
2017/02/04 Javascript
详解angularJS+Ionic移动端图片上传的解决办法
2017/09/13 Javascript
JS数组方法reduce的用法实例分析
2020/03/03 Javascript
解决vue项目运行npm run serve报错的问题
2020/10/26 Javascript
[02:23]完美世界全国高校联赛街访DOTA2第一期
2019/11/28 DOTA
讲解python参数和作用域的使用
2013/11/01 Python
python3+PyQt5图形项的自定义和交互 python3实现page Designer应用程序
2020/07/20 Python
Python操作json的方法实例分析
2018/12/06 Python
解决python中画图时x,y轴名称出现中文乱码的问题
2019/01/29 Python
如何在Django中添加没有微秒的 DateTimeField 属性详解
2019/01/30 Python
开启Django博客的RSS功能的实现方法
2020/02/17 Python
python 将列表里的字典元素合并为一个字典实例
2020/09/01 Python
python super()函数的基本使用
2020/09/10 Python
Django解决frame拒绝问题的方法
2020/12/18 Python
纯CSS3实现的阴影效果
2014/12/24 HTML / CSS
世界顶级户外运动品牌折扣网站:LeftLane Sports
2019/06/12 全球购物
TALLY WEiJL法国网上商店:服装、时装及配饰
2019/08/31 全球购物
西安启天科技有限公司网络工程师面试题笔试题
2016/06/12 面试题
Linux Interview Questions For software testers
2013/05/17 面试题
社区活动邀请函范文
2014/01/29 职场文书
名企HR怎样看待求职信
2014/02/23 职场文书
会计工作岗位职责
2015/02/03 职场文书
2015年教师节感言
2015/08/03 职场文书
MySQL中的全表扫描和索引树扫描
2022/05/15 MySQL
python热力图实现的完整实例
2022/06/25 Python