使用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 相关文章推荐
centos下更新Python版本的步骤
Feb 12 Python
Python书单 不将就
Jul 11 Python
Python XML转Json之XML2Dict的使用方法
Jan 15 Python
代码详解django中数据库设置
Jan 28 Python
Python socket模块实现的udp通信功能示例
Apr 10 Python
Django 响应数据response的返回源码详解
Aug 06 Python
如何通过Django使用本地css/js文件
Jan 20 Python
关于Keras模型可视化教程及关键问题的解决
Jan 24 Python
Python 中的pygame安装与配置教程详解
Feb 10 Python
Mac中PyCharm配置Anaconda环境的方法
Mar 04 Python
python简单的三元一次方程求解实例
Apr 02 Python
Python第三方库的几种安装方式(小结)
Apr 03 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
仿Aspnetpager的一个PHP分页类代码 附源码下载
2012/10/08 PHP
php文件上传的简单实例
2013/10/19 PHP
CI框架入门示例之数据库取数据完整实现方法
2014/11/05 PHP
php从数据库查询结果生成树形列表的方法
2015/04/17 PHP
CentOS下与Apache连接的PHP多版本共存方案实现详解
2015/12/19 PHP
php+ajax实现无刷新文件上传功能(ajaxuploadfile)
2018/02/11 PHP
Firefox window.close()的使用注意事项
2009/04/11 Javascript
javascript 写类方式之七
2009/07/05 Javascript
html中table数据排序的js代码
2011/08/09 Javascript
jQuery常见开发技巧详细整理
2013/01/02 Javascript
jquery实现类似EasyUI的页面布局可改变左右的宽度
2020/09/12 Javascript
jquery动画效果学习笔记(8种效果)
2015/11/13 Javascript
Bootstrap模块dropdown实现下拉框响应
2016/05/22 Javascript
用vue封装插件并发布到npm的方法步骤
2017/10/18 Javascript
Vue 实例事件简单示例
2019/09/19 Javascript
20多个小事例带你重温ES10新特性(小结)
2019/09/29 Javascript
微信小程序获取当前位置和城市名
2019/11/13 Javascript
[14:51]DOTA2 HEROS教学视频教你分分钟做大人-卓尔游侠
2014/06/13 DOTA
[38:42]完美世界DOTA2联赛循环赛 Matador vs Forest BO2第二场 11.05
2020/11/05 DOTA
Python3.2中Print函数用法实例详解
2015/05/19 Python
Python中几个比较常见的名词解释
2015/07/04 Python
Linux下多个Python版本安装教程
2018/08/15 Python
基于Django框架的权限组件rbac实例讲解
2019/08/31 Python
python 实现多维数组(array)排序
2020/02/28 Python
django 实现简单的插入视频
2020/04/07 Python
基于python连接oracle导并出数据文件
2020/04/28 Python
Python django框架 web端视频加密的实例详解
2020/11/20 Python
html5在移动端的屏幕适应问题示例探讨
2014/06/15 HTML / CSS
七年级生物教学反思
2014/01/30 职场文书
采购助理岗位职责
2014/02/16 职场文书
幼儿园小班教师寄语
2014/04/03 职场文书
领导欢迎词致辞
2015/01/23 职场文书
店长岗位职责
2015/02/11 职场文书
2015年学校办公室工作总结
2015/05/26 职场文书
鉴史问廉观后感
2015/06/10 职场文书
小程序自定义轮播图圆点组件
2022/06/25 Javascript