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

时间:2023-03-09 22:22:16
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

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

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

yum -y install nodejs

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

3. 配置域名

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

解析域名,找到要解析的域名

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

进入之后点击 添加解析

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

4. 二级域名配置

我以下的域名,都使用example.com 代替

www.example.com 已经被占用了。我们需要一个二级域名,二级域名是app.example.com

在服务器下运行lnmp vhost add

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

根据提示填入信息

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

输入

pstream  app.example.com {
# Nodejs app upstream
server 127.0.0.1:8085;
keepalive 64;
}
server {
listen 80;
server_name app.example.com;
#charset koi8-r;
#access_log logs/host.access.log main;

保存,重新启动nginx

停止 nginx -s quit

启动 nginx -c /usr/local/nginx/conf/nginx.conf

5 pm2 发布

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

运行

pm2 start index.js

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

我们看到

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

参考文章

  1. [Nginx的启动(start),停止(stop)命令

    ](http://blog.****.net/u010739551/article/details/51654859)
  2. Nginx反向代理以及负载均衡配置
  3. 如何在 Ubuntu 上使用 pm2 和 Nginx 部署 Node.js 应用
  4. 使用Nginx实现反向代理
  5. vim保存退出