使用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 相关文章推荐
以Flask为例讲解Python的框架的使用方法
Apr 29 Python
Python的randrange()方法使用教程
May 15 Python
python实现简单ftp客户端的方法
Jun 28 Python
python开发之IDEL(Python GUI)的使用方法图文详解
Nov 12 Python
python使用pymysql实现操作mysql
Sep 13 Python
Python中模块string.py详解
Mar 12 Python
Python2.7基于淘宝接口获取IP地址所在地理位置的方法【测试可用】
Jun 07 Python
python3之微信文章爬虫实例讲解
Jul 12 Python
python实现批量图片格式转换
Jun 16 Python
python读取图片任意范围区域
Jan 23 Python
Python数据存储之 h5py详解
Dec 26 Python
keras .h5转移动端的.tflite文件实现方式
May 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安装攻略:常见问题解答(一)
2006/10/09 PHP
php二分法在IP地址查询中的应用
2008/08/12 PHP
从手册去理解分析PHP session机制
2011/07/17 PHP
用PHP实现 上一篇、下一篇的代码
2012/09/29 PHP
PHP使用正则表达式清除超链接文本
2013/11/12 PHP
PHP Filter过滤器全面解析
2016/08/09 PHP
Javascript实例教程(19) 使用HoTMetal(2)
2006/12/23 Javascript
关于js类的定义
2011/06/28 Javascript
jQuery调用AJAX时Get和post公用的乱码解决方法实例说明
2013/06/04 Javascript
jQuery Mobile 导航栏代码
2013/11/01 Javascript
Jquery使用Firefox FireBug插件调试Ajax步骤讲解
2013/12/02 Javascript
基于jquery实现日历签到功能
2020/09/11 Javascript
vue-cli项目中使用Mockjs详解
2018/05/14 Javascript
微信小程序开发的基本流程步骤
2019/01/31 Javascript
[50:29]2014 DOTA2华西杯精英邀请赛 5 24 DK VS iG
2014/05/26 DOTA
[01:46]辉夜杯—打造中国DOTA新格局
2015/12/25 DOTA
Python基于twisted实现简单的web服务器
2014/09/29 Python
利用Fn.py库在Python中进行函数式编程
2015/04/22 Python
深入讲解Python函数中参数的使用及默认参数的陷阱
2016/03/13 Python
对Python3中bytes和HexStr之间的转换详解
2018/12/04 Python
Python中查看变量的类型内存地址所占字节的大小
2019/06/26 Python
详解Pandas之容易让人混淆的行选择和列选择
2019/07/10 Python
python删除列表元素的三种方法(remove,pop,del)
2019/07/22 Python
TensorFlow 多元函数的极值实例
2020/02/10 Python
加拿大当代时尚服饰、配饰和鞋类专业零售商和制造商:LE CHÂTEAU
2017/10/06 全球购物
员工自我鉴定
2013/10/09 职场文书
音乐学院硕士生的自我评价分享
2013/11/01 职场文书
播音主持女孩的自我评价分享
2013/11/20 职场文书
《池塘边的叫声》教学反思
2014/04/12 职场文书
2014年国庆节演讲稿精选范文1500字
2014/09/25 职场文书
继续教育个人总结
2015/03/03 职场文书
环保主题班会教案
2015/08/13 职场文书
大学生创业计划书
2019/06/24 职场文书
SpringBoot读取Resource下文件的4种方法
2021/07/02 Java/Android
MySQL数据库完全卸载的方法
2022/03/03 MySQL
SQL试题 使用窗口函数选出连续3天登录的用户
2022/04/24 Oracle