node项目发布+域名及其二级域名配置+nginx反向代理+pm2

学习node的时候也写了一些demo。但是只是限于本地测试,从来没有发布。今天尝试发布项目。
需要准备的东西

  1. node 项目:为了突出重点,说明主要问题。我只是拿express 写了很简单的demo。
  2. 服务器:阿里云或者其他的服务器
  3. lnmp 点击查看简介
  4. pm2 pm2 是一个带有负载均衡功能的Node应用的进程管理器.

发布步骤

1. 项目准备

共计两个文件

  • index.js
  • package.json
/**
 * index.js
 * 启动: node index.js
 * app 跨域访问测试
 * @type {[type]}
 */
var express = require('express');
//Post方式请求参数放在请求体里面,需引用body-parser解析body  
var bodyParser = require("body-parser");
var app = express();

// 引用  
app.use(bodyParser.urlencoded({
    extended: false
}));

//设置跨域访问  
app.all('*', function(req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "X-Requested-With");
    res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
    res.header("X-Powered-By", ' 3.2.1');
    res.header("Content-Type", "application/json;charset=utf-8");
    res.header("Content-Type", "application/json;charset=utf-8");
    next();
});

//json数据  
var data = {
    "name": "Test",
    "age": "19"
};

app.get('/', function(req, res) {
    console.log('get..........');
    console.log(req.query);
    if (req.query && req.query.callback) {
        var str = req.query.callback + "(" + JSON.stringify(data) + ")"; //jsonp    
        console.log('jsonp: ' + str);
        res.end(str);
    } else {
        console.log('json: ' + JSON.stringify(data));
        res.end(JSON.stringify(data));
    }
});

app.post('/', function(req, res) {
    console.log('post............');
    console.log(req.body);
    console.log('json: ' + JSON.stringify(data));
    res.end(JSON.stringify(data));
});

app.listen(8085, function() {
    console.log('Listening on port 8085...');
});

2. 服务器安装 lnmp

登录服务器,在根目录下可以安装。

  • 打开lnmp-install
  • 参考 下载并安装LNMP一键安装包: 复制
    wget -c http://soft.vpser.net/lnmp/lnmp1.4.tar.gz && tar zxf lnmp1.4.tar.gz && cd lnmp1.4 && ./install.sh lnmp 运行。估计20 分钟。

3. 上传项目

我们采用手动上传(当然你可以使用git).
我用的是Mac,使用的工具是Cyberduck。我们上传的位置是/home/wwwroot/default/LHAAPP

node项目发布+域名及其二级域名配置+nginx反向代理+pm2_第1张图片
QQ20180130-133432.png

这是我配置好的文件,此时目录应该只用index.js 和 package.json(不用理会index.html)

我们要安装package,json里面的包文件。必须在服务器安装node 我使用的centos系统

yum -y install nodejs

此时可以 npm i,项目配置好了。

3. 配置域名

我们发布的项目肯定是需要别人访问,就需要域名。现在我们来配置域名。
解析域名,找到要解析的域名


node项目发布+域名及其二级域名配置+nginx反向代理+pm2_第2张图片
jiexi.png

进入之后点击 添加解析

node项目发布+域名及其二级域名配置+nginx反向代理+pm2_第3张图片
IP.png

4. 二级域名配置

我以下的域名,都使用example.com 代替
www.example.com 已经被占用了。我们需要一个二级域名,二级域名是app.example.com

在服务器下运行lnmp vhost add

node项目发布+域名及其二级域名配置+nginx反向代理+pm2_第4张图片
lnmp.png

根据提示填入信息
Please enter domain(example: www.lnmp.org): app.example.com
Enter more domain name(example: lnmp.org *.lnmp.org): enter
Default directory: /home/wwwroot/LHAAPP/(你自己的目录文件)
Allow Rewrite rule? (y/n) n
Allow access log? (y/n) y
Enter access log filename(Default:test.ibs-bj.com.log): enter
Create database and MySQL user with same name (y/n) n
Add SSL Certificate (y/n) n

要按两次enter
已经配置好了。我们测试一下,在LHAAPP 下配置一个index.html 测试一下。

5 反向代理

如果不明白反向代理请自行百度。
用vim 打开usr/local/nginx/conf/nginx.conf
放在 include vhost/*.conf 前边即可,
输入

upstream  app.example.com {
    # Nodejs app upstream
    server 127.0.0.1:8085;
    keepalive 64;
}

server {
    listen 80;
    server_name  app.example.com;
    location / {
        proxy_pass      http://127.0.0.1:8085;
        }
    }

保存,重新启动nginx

停止 nginx -s quit
启动 nginx -c /usr/local/nginx/conf/nginx.conf

5 pm2 发布

命令行进入 我们的项目目录
运行

pm2 start index.js

node项目发布+域名及其二级域名配置+nginx反向代理+pm2_第5张图片
QQ2018013pm2.png

我们看到

node项目发布+域名及其二级域名配置+nginx反向代理+pm2_第6张图片
fl.png

参考文章

  1. Nginx的启动(start),停止(stop)命令
  2. Nginx反向代理以及负载均衡配置
  3. 使用Nginx实现反向代理
  4. 如何在 Ubuntu 上使用 pm2 和 Nginx 部署 Node.js 应用
  5. 重启nginx后丢失nginx.pid的解决方法
  6. vim保存退出

你可能感兴趣的:(node项目发布+域名及其二级域名配置+nginx反向代理+pm2)