使用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模拟登录验证码(代码简单)
Feb 06 Python
python 读写txt文件 json文件的实现方法
Oct 22 Python
Python基础中所出现的异常报错总结
Nov 19 Python
Pycharm 操作Django Model的简单运用方法
May 23 Python
Python连接Mssql基础教程之Python库pymssql
Sep 16 Python
Django migrations 默认目录修改的方法教程
Sep 28 Python
图文详解Django使用Pycharm连接MySQL数据库
Aug 09 Python
Flask框架学习笔记之模板操作实例详解
Aug 15 Python
Win10里python3创建虚拟环境的步骤
Jan 31 Python
Python类的绑定方法和非绑定方法实例解析
Mar 04 Python
django 利用Q对象与F对象进行查询的实现
May 15 Python
python 代码实现k-means聚类分析的思路(不使用现成聚类库)
Jun 01 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
mysql4.1以上版本连接时出现Client does not support authentication protocol问题解决办法
2007/03/15 PHP
Eclipse中php插件安装及Xdebug配置的使用详解
2013/04/25 PHP
Yii使用Captcha验证码的方法
2015/12/28 PHP
在Mac OS下搭建LNMP开发环境的步骤详解
2017/03/10 PHP
关于php开启错误提示的总结
2019/09/24 PHP
javascript编程起步(第四课)
2007/02/27 Javascript
网易JS面试题与Javascript词法作用域说明
2010/11/09 Javascript
Windows系统中安装nodejs图文教程
2015/02/28 NodeJs
Yii2使用Bootbox插件实现自定义弹窗
2015/04/02 Javascript
JS使用parseInt解析数字实现求和的方法
2015/08/05 Javascript
Javascript实现检测客户端类型代码封包
2015/12/03 Javascript
关于网页中的无缝滚动的js代码
2016/06/09 Javascript
bootstrap实现图片自动轮播
2016/12/21 Javascript
jQuery实现拖拽可编辑模块功能代码
2017/01/12 Javascript
bootstrap按钮插件(Button)使用方法解析
2017/01/13 Javascript
js点击时关闭该范围下拉菜单之外的菜单方法
2018/01/11 Javascript
浅谈js获取ModelAndView值的问题
2018/03/28 Javascript
详解jQuery如何实现模糊搜索
2019/05/10 jQuery
在Python的框架中为MySQL实现restful接口的教程
2015/04/08 Python
python中实现迭代器(iterator)的方法示例
2017/01/19 Python
详解Python连接MySQL数据库的多种方式
2019/04/16 Python
python3正则模块re的使用方法详解
2020/02/11 Python
python+selenium+chrome批量文件下载并自动创建文件夹实例
2020/04/27 Python
分享一个页面平滑滚动小技巧(推荐)
2019/10/23 HTML / CSS
卡骆驰新加坡官网:Crocs新加坡
2018/06/12 全球购物
捷克家电和家具购物网站:OKAY.cz
2020/07/23 全球购物
学校三八妇女节活动情况总结
2014/03/09 职场文书
小学生竞选班干部演讲稿
2014/04/24 职场文书
党的群众路线教育实践活动个人承诺书
2014/05/22 职场文书
无子女夫妻离婚协议书(4篇)
2014/10/20 职场文书
2014年学校食堂工作总结
2014/11/25 职场文书
会议接待欢迎词范文
2015/01/26 职场文书
会计专业自荐信范文
2015/03/05 职场文书
2015年前台接待工作总结
2015/05/04 职场文书
golang三种设计模式之简单工厂、方法工厂和抽象工厂
2022/04/10 Golang
PyCharm 配置SSH和SFTP连接远程服务器
2022/05/11 Python