学习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

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

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

yum -y install nodejs

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

3. 配置域名

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

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

进入之后点击 添加解析

4. 二级域名配置

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

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

在服务器下运行lnmp vhost add

根据提示填入信息

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

我们看到

参考文章

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

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

node项目发布+域名及其二级域名配置+nginx反向代理+pm2的更多相关文章

  1. 配置LANMP环境(7)-- 配置nginx反向代理,与配置apache虚拟主机

    一.配置nginx反向代理 1.修改配置文件 vim /etc/nginx/nginx.conf 在35行http下添加一下内容: include /data/nginx/vhosts/*.conf; ...

  2. CentOS 7 学习(二) 配置Nginx反向代理

    CentOS 7 学习(二) 配置Nginx反向代理 Nginx可以通过php-fpm来运行PHP程序,也可以转向apache,让apache调用php程序来运行. 不过对于Nginx来说,其反向代理 ...

  3. 为docker私有registry配置nginx反向代理

    公司的Docker私有registry已经搭建好了,用官方的registry image很容易就搭建好了.现在就是要用nginx的反向代理把它放出来,以便在外网可以访问. 我的上一篇blog 讲了如何 ...

  4. 使用SSL配置Nginx反向代理的简单指南

    反向代理是一个服务器,它接收通过Web发出的请求,即http和https,然后将它们发送到后端服务器(或服务器).后端服务器可以是单个或一组应用服务器,如Tomcat,wildfly或Jenkins等 ...

  5. [亲测]ASP.NET Core 2.0怎么发布/部署到Ubuntu Linux服务器并配置Nginx反向代理实现域名访问

    前言 ASP.NET Core 2.0 怎么发布到Ubuntu服务器?又如何在服务器上配置使用ASP.NET Core网站绑定到指定的域名,让外网用户可以访问呢? 步骤 第1步:准备工作 一台Liun ...

  6. [亲测]七步学会ASP.NET Core 2.0怎么发布/部署到Ubuntu Linux服务器并配置Nginx反向代理实现域名访问

    前言 ASP.NET Core 2.0 怎么发布到Ubuntu服务器?又如何在服务器上配置使用ASP.NET Core网站绑定到指定的域名,让外网用户可以访问呢? 步骤 第1步:准备工作 一台Liun ...

  7. ASP.NET Core 2.0发布/部署到Ubuntu服务器并配置Nginx反向代理

    原文链接https://www.linuxidc.com/Linux/2017-12/149557.htm ASP.NET Core 2.0 怎么发布到Ubuntu服务器?又如何在服务器上配置使用AS ...

  8. Centos 7.6配置nginx反向代理,直接yum安装

    一,实验介绍 利用三台centos7虚拟机搭建简单的nginx反向代理负载集群, 三台虚拟机地址及功能介绍 192.168.2.76    nginx负载均衡器 192.168.2.82    web ...

  9. Linux 笔记 - 第二十章 配置 Nginx 反向代理和负载均衡

    一.简介 由于 Nginx 的反向代理和负载均衡功能经常被提及,所以将这两个功能单独提出来进行讲解. Nginx 其实仅仅是作为 Nginx Proxy 反向代理使用的,因为这个反向代理功能表现的效果 ...

随机推荐

  1. jenkins离线安装插件的方法(无法访问外网)

    最近项目要迁移环境,无法访问外网,因此jenkins的安装配置需要离线操作,在此记录 jenkins下载安装好之后,跳过插件的安装,新建用户进入jenkins界面,这些前置步骤我在之前的随笔里有写具体 ...

  2. ascii codec can't decode byte 0xe8 in position 0:ordinal not in range(128)---python中文编码问题

    解决方案一:将如下部分加在报错的py文件里 import sys reload(sys) sys.setdefaultencoding('utf-8')

  3. Android Studio [页面的跳转和传值]

    AActivity.java package com.xdw.a122.jump; import android.app.Activity; import android.content.Compon ...

  4. Spring MVC-从零开始-文件上传(未完待续)

    Spring MVC-从零开始-文件上传(未完待续)

  5. layui table异步调用数据的时候,数据展示不出来现象解决方案

    最近使用layui table进行异步获取数据并填充的时候,控制台打印出数据长度为0,但是其中还有数据,网上找了很多办法,下边是我最后使用的. 一般,render渲染表格是独立的书写格式,但是我在做数 ...

  6. Linux 远程登录命令telnet

    一.telnet简介: telnet命令通常用来远程登录.telnet程序是基于TELNET协议的远程登录客户端程序.Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准 ...

  7. bootstrap具体知识点(2)

    3.以移动设备为优先 <meta name=”viewport” content=”width=device-width,initial-scale=1,user-scalable=no”> ...

  8. WordPress 使用本地化的 emoji 表情包

    WordPress 结合使用 Native Emoji 和 WP Local Emoji 两个插件,可以达到使用本地化的 emoji 表情包的目的. 安装好上述两个插件并且启用: 为了使 Native ...

  9. 04-Django模型(1)

    ---恢复内容开始--- 模型 MTV图解 ORM ORM全拼:Object-Relation-Mapping翻译就是对象关系映射.在MVC/MTV设计模式中的Model模块中都包括ORM.主要实现模 ...

  10. python语言程序设计基础(嵩天)第三章课后习题部分个人练习

    p69: *题3.5: 源代码: (1)print(30-3**2+8//3**2*10)     答案:21 (2)print(3*4**2/8%5)     答案:1.0 (3)print(2** ...