使用pm2+nginx部署koa2(https)

使用pm2+nginx部署koa2(https)

今天先来写一下关于 koa2 网站运行部署以及 https 配置。
目前网站的大致结构是: koa2 的应用跑在 1113 端口,然后 nginx 反向代理到 443 (https) 端口, 同时 nginx 将 80 (http) 端口转发到 443 (https) 端口。

pm2 配置

pm2 是开源的基于Nodejs的进程管理器,包括守护进程,监控,日志的一整套完整的功能,基本是Nodejs应用程序不二的守护进程选择,事实上它并不仅仅可以启动Nodejs的程序,只要是一般的脚本的程序它同样可以胜任。

pm2 是一个带有负载均衡功能的 Node 应用的进程管理器。使用 pm2 可以保持我们的node应用进程永远运行在后台。此外 pm2 还有个非常强大的deploy功能,可以从本地直接部署线上网站。下面我来说一下具体的操作

1: 服务端安装软件

在服务端需要安装的有 git 、node 、pm2 、nginx 等。
安装完这些之后需要在服务端生成 ssh key ,然后将生成的 pub key 添加到相应的 git 仓库里的 setting 里的 Deploy Keys 里。

2: 本地安装软件

本地需要安装的有 git 、node 、pm2 等。

3: pm2 deploy 配置

使用 pm2 ecosystem 生成配置示例文件,然后打开配置生成的配置文件,下面是生成的示例配置文件。

module.exports = {
 /**
  * Application configuration section
  * http://pm2.keymetrics.io/docs/usage/application-declaration/
  */
 apps: [

     // First application
     {
         name: 'API',
         script: 'app.js',
         env: {
             COMMON_VARIABLE: 'true'
         },
         env_production: {
             NODE_ENV: 'production'
         }
     },

     // Second application
     {
         name: 'WEB',
         script: 'web.js'
     }
 ],

 /**
  * Deployment section
  * http://pm2.keymetrics.io/docs/usage/deployment/
  */
 deploy: {
     production: {
         user: 'node',
         host: '212.83.163.1',
         ref: 'origin/master',
         repo: 'git@github.com:repo.git',
         path: '/var/www/production',
         'post-deploy': 'npm install && pm2 reload ecosystem.config.js --env production'
     },
     dev: {
         user: 'node',
         host: '212.83.163.1',
         ref: 'origin/master',
         repo: 'git@github.com:repo.git',
         path: '/var/www/development',
         'post-deploy': 'npm install && pm2 reload ecosystem.config.js --env dev',
         env: {
             NODE_ENV: 'dev'
         }
     }
 }
};

在 apps 里可以配置多个应用,然后deploy是配置不同的环境所用的配置,有了示例而配置之后,你可以根据自己的真实情况进行相应的修改。

有了配置文件之后执行 pm2 deploy ecosystem.config.js production setup 命令进行初始化设置,运行完成之后,再运行 pm2 deploy ecosystem.config.js production 这个命令,以后更新部署应用都可以通过这个命令。(为了方便可以将这两条命令配置到 package.json 里的 scripts 里)。’

命令运行完之后,如果没出意外,出现 Success 字样就表示部署成功。这时候在浏览器输入相应的服务器 ip以及你设置的端口号就可以打开你部署的网站。同时在服务器上,可以通过 pm2 list 查看当前运行的应用。

nginx 配置


1:配置 http

在服务端安装完nginx之后,打开 /etc/nginx/sites-enabled 目录(默认的配置文件目录)(划掉划掉,经朋友指正,nginx的配置应该放置在/etc/nginx/sites-available 这个目录下,在此目录下可以配置多个站点,然后选择需要开启的网站软链到 sites-enabled 下开启相应的网站),在该目录下新建一个配置文件比如 blog.conf ,然后就可以打开该配置文件进行配置,将已经运行的 node 服务反向代理到 80 端口下。我的配置如下:


server {
     listen 80;
     server_name blog.zhaofinger.com zhaofinger.com www.zhaofinger.com;
     access_log /var/www/log/blog-access.log;
     error_log  /var/www/log/blog-error.log;

     location / {
             proxy_set_header X-Real-IP $remote_addr;
             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
             proxy_set_header Host $http_host;
             proxy_set_header X-NginX-Proxy true;
             proxy_pass http://127.0.0.1:1113/;
             proxy_redirect off;
     }
}

proxy_pass 对应的就是 node 服务所运行的端口。文件写好之后保存退出,然后重启 nginx 服务,service nginx restart,重服务成功(如果错误可以打开 nginx 的日志查看相应的错误)之后就可以打开对应的域名访问网站。

2: 配置 https

配置 https ,首先需要购买 https 证书,我是在阿里云上买的免费的证书,打开网站点击购买证书,然后选择‘免费型DV SSL’,然后点击 ‘立即购买’。购买证书之后打开证书控制台补全信息。
根据提示将两个证书文件下载下来上传到服务器上。然后打开刚才的 blog.conf 进行 https 配置。我的配置如下:

server {
     listen 443;
     server_name blog.zhaofinger.com zhaofinger.com www.zhaofinger.com;
     access_log /var/www/log/blog-access.log;
     error_log  /var/www/log/blog-error.log;
     ssl on;
     ssl_certificate   /etc/nginx/cert/214259593710649.pem;
     ssl_certificate_key /etc/nginx/cert/214259593710649.key;
     ssl_session_timeout 5m;
     ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
     ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
     ssl_prefer_server_ciphers on;

     location / {
             proxy_set_header X-Real-IP $remote_addr;
             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
             proxy_set_header Host $http_host;
             proxy_set_header X-NginX-Proxy true;
             proxy_pass http://127.0.0.1:1113/;
             proxy_redirect off;
     }
}

ssl_certificatessl_certificate_key就是刚刚上传的文件的位置。配置完成之后保存配置文件,退出重启 nginx 服务。然后打开https://xxx.com就可以访问到网站。
配置完 https 之后还需要将 80 端口对应的 http 服务转到 https下,增加配置如下:

server {
     listen 80;
     server_name www.zhaofinger.com;
     rewrite ^/(.*) https://$server_name$1 permanent;    #跳转到Https
}

到这里使用 pm2 + nginx 配置 https 服务就 ok 了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值