``

今天先来写一下关于 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 了。

最后本博客的源码托管在 github,欢迎使用,欢迎star。

文章中如有错误欢迎指正。

使用pm2+nginx部署koa2(https)相关推荐

  1. Docker nginx部署阿里https(最新的方案)

    1.安装nginx docker pull nginx 2.启动容器(注意80跟443,自己注意下自己的服务器 80.443端口有没有打开) docker run --name nginx -d -p ...

  2. 树莓派服务器证书,【原创】在树莓派3上给Nginx部署免费HTTPS证书

    自从家里的电信ADSL好几年前封锁80端口后,http服务已经不能用来作为公网服务直接访问了,但是电信对443端口并没有屏蔽,我们可以通过配置https服务来提供公网服务.最近炒的火热的Let's E ...

  3. 解决:VUE nginx 部署 SSL https访问 WebSocket 问题

    报错1. Failed to construct 'WebSocket': An insecure WebSocket connection may not be initiated from a p ...

  4. 踩坑:云服务器Nginx部署前端遇到http与https问题

    问题:nginx部署前端项目,修改配置文件路径后,页面一直无法加载css.js.img 解决:看了一堆博客都没有解决,最后是发现https访问的css.js等资源导致. 解决方案1::如果没理解错的话 ...

  5. 【SSL/TLS】准备工作:HTTPS服务器部署:Nginx部署

    HTTPS服务器部署:Nginx部署 1. 准备工作 2. Nginx服务器YUM部署 2.1 直接安装 2.2 验证 3. Nginx服务器源码部署 3.1 下载源码包 3.2 部署过程 4. Ng ...

  6. 后台的代理nginx部署方法

    软件包如下: nginx-1.10.0.tar.gz nginx-http-concat-master.zip ngx_cache_purge-2.3.tar.gz openssl-1.0.2h.ta ...

  7. python nginx部署_Python 应用 uWSGI + Nginx 部署

    新建一个 Django 应用部署 •使用 py 文件启动 uWSGI def application(env, start_response):start_response('200 ok', [(' ...

  8. Ubuntu 14.04 上使用 Nginx 部署 Laravel 4.2

    http://laravel.lapland.name/post/102090021035/how-to-install-laravel-with-an-nginx-on-ubuntu-14-04 U ...

  9. 使用nginx部署项目的相关资料

    1.简单的利用nginx部署前端项目 2.ubuntu 下 Nginx 的安装和配置 3.nginx配置文件nginx.conf超详细讲解 4.Nginx 安装与部署配置以及Nginx和uWSGI开机 ...

最新文章

  1. 用java代码实现Singleton,为什么在Java代码中实现Singleton模式(有时被认为是Java世界中的反模式)?...
  2. 分享Kali Linux 2017年第18周镜像文件
  3. Django 学习笔记之七 实现分页
  4. 设置 Nuget 本地源、在线私有源、自动构建打包
  5. 一根Express Route同时支持ARM和ASM的VNET
  6. 《数据库系统实训》实验报告——单表查询
  7. matlab中特殊符号如希腊字符
  8. 【ArcGIS风暴】捕捉VS经典捕捉,谁更有用武之地?
  9. java泛型程序设计——类型变量限定 + 泛型代码和虚拟机
  10. LiteOS基于Sensorhub的超声波模组移植
  11. 九度笔记之 1209最小邮票数
  12. Qt 学习之路 2(1):序 笔记
  13. linux vi字体大小,设置VIM字体大小
  14. ubuntu 安装360浏览器
  15. CNC精雕机加工需要牢记的22个常识,一起来学习
  16. 适合入门的linux教程,Linux入门记录系列教程,适合Linux初学者阅读
  17. python变白_Python OpenCV纯白色背景
  18. GeForce Experience 安装时乱码解决
  19. 【Java 8 新特性】Java LocalDateTime 和 Epoch 互相转换
  20. Spring Data Rest学习篇----@Projection

热门文章

  1. arduino UNO通过AT指令控制esp8266连接WiFi及onenet云平台
  2. 怎么把ppt压缩到10m以内?
  3. kmeans中的k的含义_Kmeans中的K值确定*
  4. 【查找算法】6种常见的查找算法简述及Python代码实现
  5. 微信公众号简单开发(8)视频消息 和 小视频消息
  6. java combobox大小_java – JComboBox首选大小,选择空值但不在ComboBoxModel中
  7. java计算机毕业设计衡师社团管理系统源程序+mysql+系统+lw文档+远程调试
  8. 微信小程序IOS机型时间格式显示NaN异常问题
  9. MFC设置背景图片之三(使用GDI+)
  10. 西门子系列PLC教学视频资源2——S7-300、400