热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用PM2+nginx部署python项目的方法示例

这篇文章主要介绍了使用PM2+nginx部署python项目的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

之前面我们使用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 ` 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"

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


推荐阅读
  • 31.项目部署
    目录1一些概念1.1项目部署1.2WSGI1.3uWSGI1.4Nginx2安装环境与迁移项目2.1项目内容2.2项目配置2.2.1DEBUG2.2.2STAT ... [详细]
  • Python项目实战10.2:MySQL读写分离性能优化
    本文介绍了在Python项目实战中进行MySQL读写分离的性能优化,包括主从同步的配置和Django实现,以及在两台centos 7系统上安装和配置MySQL的步骤。同时还介绍了创建从数据库的用户和权限的方法。摘要长度为176字。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • svnWebUI:一款现代化的svn服务端管理软件
    svnWebUI是一款图形化管理服务端Subversion的配置工具,适用于非程序员使用。它解决了svn用户和权限配置繁琐且不便的问题,提供了现代化的web界面,让svn服务端管理变得轻松。演示地址:http://svn.nginxwebui.cn:6060。 ... [详细]
  • Node.js学习笔记(一)package.json及cnpm
    本文介绍了Node.js中包的概念,以及如何使用包来统一管理具有相互依赖关系的模块。同时还介绍了NPM(Node Package Manager)的基本介绍和使用方法,以及如何通过NPM下载第三方模块。 ... [详细]
  • LVS实现负载均衡的原理LVS负载均衡负载均衡集群是LoadBalance集群。是一种将网络上的访问流量分布于各个节点,以降低服务器压力,更好的向客户端 ... [详细]
  • Linux下部署Symfoy2对app/cache和app/logs目录的权限设置,symfoy2logs
    php教程|php手册xml文件php教程-php手册Linux下部署Symfoy2对appcache和applogs目录的权限设置,symfoy2logs黑色记事本源码,vsco ... [详细]
  • Django + Ansible 主机管理(有源码)
    本文给大家介绍如何利用DjangoAnsible进行Web项目管理。Django介绍一个可以使Web开发工作愉快并且高效的Web开发框架,能够以最小的代价构建和维护高 ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • Centos下安装memcached+memcached教程
    本文介绍了在Centos下安装memcached和使用memcached的教程,详细解释了memcached的工作原理,包括缓存数据和对象、减少数据库读取次数、提高网站速度等。同时,还对memcached的快速和高效率进行了解释,与传统的文件型数据库相比,memcached作为一个内存型数据库,具有更高的读取速度。 ... [详细]
  • Linux下安装免费杀毒软件ClamAV及使用方法
    本文介绍了在Linux系统下安装免费杀毒软件ClamAV的方法,并提供了使用该软件更新病毒库和进行病毒扫描的指令参数。同时还提供了官方安装文档和下载地址。 ... [详细]
  • 关键词: ... [详细]
  • 微信民众号商城/小顺序商城开源项目介绍及使用教程
    本文介绍了一个基于WeiPHP5.0开发的微信民众号商城/小顺序商城的开源项目,包括前端和后端的目录结构,以及所使用的技术栈。同时提供了项目的运行和打包方法,并分享了一些调试和开发经验。最后还附上了在线预览和GitHub商城源码的链接,以及加入前端交流QQ群的方式。 ... [详细]
  • loader资源模块加载器webpack资源模块加载webpack内部(内部loader)默认只会处理javascript文件,也就是说它会把打包过程中所有遇到的 ... [详细]
author-avatar
阿离说你是宝贝
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有