• 生产环境部署node记录(二):pm2和nginx


    安装完node和npm ,接下来安装pm2

    首先简单介绍下pm2,官网的介绍是:

    pm2 是一个带有负载均衡功能的Node应用的进程管理器.
    当你要把你的独立代码利用全部的服务器上的所有CPU,并保证进程永远都活着,0秒的重载, PM2是完美的。它非常适合IaaS结构,但不要把它用于PaaS方案(随后将开发Paas的解决方案).

    备注:SaaS、PaaS和IaaS是云服务模式。
            SaaS 软件即服务,例如Google的 Gmail 邮箱服务.面向应用型用户.
            PaaS 平台即服务.例如Google的GAE,面向开发型用户
            IaaS 基础架构即服务,例如亚马逊的AWS,IaaS对于不知道新推出的应用程序/网站会有多成功的创业公司来说非常有用
     
    主要特性:

    内建负载均衡(使用Node cluster 集群模块)
    后台运行
    0秒停机重载,我理解大概意思是维护升级的时候不需要停机.
    具有Ubuntu和CentOS 的启动脚本
    停止不稳定的进程(避免无限循环)
    控制台检测
    提供 HTTP API
    远程控制和实时的接口API ( Nodejs 模块,允许和PM2进程管理器交互 )
     
    简单来说,安装完了node ,当你启动主机上已有的服务的时候执行node server.js,此时服务开启,当你ctrl+C关闭当前命令的时候,这个服务便停止了,pm2正是用来解决这个问题的,有了pm2,我们可以在主机上开启服务,并且当服务遇到错误或者其他情况的时候,pm2会帮我们重启这个服务,并且除非你杀掉这个服务,这个服务会一直启动着,同时,pm2还有日志和负载均衡的提供,很方便很强大。
     
    【安装pm2】
     
    npm install -g pm2
    

    这里我遇到了一些小问题,特地记录下来:

    全局安装pm2后在运行任意pm2命令的时候出现 not found,排查原因是因为

    这里

    这里使用which pm2命令查找pm2命令是否安装成功,提示在对应的几个目录里没有找到pm2,但是下载确实成功了,在 /root/node-v8.4.0-linux-x64/lib/node_modules/pm2/bin/ 下也确实有了pm2的文件,此时,需要做的是建立这个下载路径到系统执行路径的软连接:

    ln -s /root/node-v8.4.0-linux-x64/lib/node_modules/pm2/bin/pm2 /usr/local/bin/pm2
    

     再次运行 pm2命令

    搞定!

    现在你可以把你的node项目上传到你的主机上面,用git也行,用ftp也行。(以下以express项目为例)

      1。进入项目目录使用npm install下载项目依赖

      2。运行你的项目入口文件(以express项目为例): pm2 start bin/www

      3。查看已启动的服务: pm2 list  

      

    下面简单记录几种pm2的命令:

    用法
    $ npm install pm2 -g # 命令行安装 pm2
    $ pm2 start app.js -i 4 #后台运行pm2,启动4个app.js
                                    # 也可以把'max' 参数传递给 start
                                    # 正确的进程数目依赖于Cpu的核心数目
    $ pm2 start app.js --name my-api # 命名进程
    $ pm2 list # 显示所有进程状态
    $ pm2 monit # 监视所有进程
    $ pm2 logs # 显示所有进程日志
    $ pm2 stop all # 停止所有进程
    $ pm2 restart all # 重启所有进程
    $ pm2 reload all # 0秒停机重载进程 (用于 NETWORKED 进程)
    $ pm2 stop 0 # 停止指定的进程
    $ pm2 restart 0 # 重启指定的进程
    $ pm2 startup # 产生 init 脚本 保持进程活着
    $ pm2 web # 运行健壮的 computer API endpoint (http://localhost:9615)
    $ pm2 delete 0 # 杀死指定的进程
    $ pm2 delete all # 杀死全部进程

    运行进程的不同方式:
    $ pm2 start app.js -i max # 根据有效CPU数目启动最大进程数目
    $ pm2 start app.js -i 3 # 启动3个进程
    $ pm2 start app.js -x #用fork模式启动 app.js 而不是使用 cluster
    $ pm2 start app.js -x -- -a 23 # 用fork模式启动 app.js 并且传递参数 (-a 23)
    $ pm2 start app.js --name serverone # 启动一个进程并把它命名为 serverone
    $ pm2 stop serverone # 停止 serverone 进程
    $ pm2 start app.json # 启动进程, 在 app.json里设置选项
    $ pm2 start app.js -i max -- -a 23 #在--之后给 app.js 传递参数
    $ pm2 start app.js -i max -e err.log -o out.log # 启动 并 生成一个配置文件
    你也可以执行用其他语言编写的app ( fork 模式):
    $ pm2 start my-bash-script.sh -x --interpreter bash
    $ pm2 start my-python-script.py -x --interpreter python
     
     
     
    NGINX : (查于百度百科)
    Nginx (engine x) 是一个高性能的HTTP反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。
    其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。
    Nginx是一款轻量级Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东新浪网易腾讯淘宝等。
     
    Nginx作为负载均衡服务器:Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务,也可以支持作为 HTTP代理服务器对外进行服务。Nginx采用C进行编写,不论是系统资源开销还是CPU使用效率都比 Perlbal 要好很多。
    处理静态文件,索引文件以及自动索引;打开文件描述符缓冲。
    无缓存的反向代理加速,简单的负载均衡和容错。
    FastCGI,简单的负载均衡和容错。
    模块化的结构。包括 gzipping, byte ranges, chunked responses,以及 SSI-filter 等 filter。如果由 FastCG或其它代理服务器处理单页中存在的多个 SSI,则这项处理可以并行运行,而不需要相互等待。
     
    个人理解是 : nginx 是中介,没有它用户访问网站是 用户->服务器,有了nginx,用户访问是用户->nginx->服务器,所以我们可以设置过滤加强安全,设置些比如请求不到404页面,如此之类的东西
     
    【安装NGINX】
      使用Yum安装是推荐的方式,整体的流程非常的简单,也不容易出错,如果不需要什么特殊配置,建议使用Yum尽进行安装。
     
        1、安装epel-release源并进行安装
        
    yum install epel-release
    yum update
    yum install nginx
    

        2、执行相关的应用操作

    systemctl start nginx #启动
    systemctl stop nginx #停止
    systemctl restart nginx #重启
    systemctl status nginx #查看运行状态
    systemctl enable nginx #开机启动
    

         3、设置防火墙

    firewall-cmd --permanent --zone=public --add-service=http
    firewall-cmd --permanent --zone=public --add-service=https
    firewall-cmd --reload
    

    相关截图:

      第一步:

     安装过程中会有提示,输入y,回车:

    安装完毕,启动 nginx (centos 7.2系统):
     
    现在访问你服务的域名:
     
    打开xftp,将你的静态资源放到对应目录里,然后访问
     
    静态资源目录:  /usr/share/nginx/html
    配置文件目录:  /etc/nginx/nginx.conf
     
    然后访问你的页面,搞定!
     
     
     
     
     
  • 相关阅读:
    从头来之【图解针对虚拟机iOS开发环境搭建】 (转)
    换工作?请记得8、18、48与72这四个密码(转)
    php
    linux上svn连接visual svn server时ssl鉴权失败,问题解决(转)
    javamail发送邮件的简单实例(转)
    稀疏矩阵
    Redis11种Web应用场景
    说说ShellExecuteEx
    怎样从host之外连接到docker container
    hadoop日志分析
  • 原文地址:https://www.cnblogs.com/jasonwang2y60/p/7504623.html
Copyright © 2020-2023  润新知