概述

最近在做一个小项目,其中用nodejs做了个数据转发的接口,之后需要将这部分代码部署到服务器上面,并使用Nginx做反向代理。期间使用搜索引擎大量查阅了其他同鞋的经验,不过写的大多很笼统,因此踩了不少小坑。千辛万苦终于搞定,回顾一下其实很简单,我的实现思路大致如下:

  • 将nodejs项目上传至服务器(这没什么好说的)
  • 使用pm2运行nodejs项目(开启服务)
  • 使用Nginx做反向代理(能够从公网通过映射访问到接口)

下面我会一步一步地具体说明操作的步骤。

具体步骤

首先,你得有个服务器。我以阿里云(操作系统: Ubuntu 14.04 64位)为例,这里我假设你的服务器环境是初始的:

第一步:搭建nodejs环境
注意:阿里云Ubuntu服务器进入系统后的默认文件夹是/root,个人建议先进入/root文件夹的上层文件夹后再进行下面的操作,输入cd ..回车
  1. 如果你的服务器是全新的,那么首先更新源:

    输入apt-get update回车
  2. 安装curl,用来下载资源:

    输入apt-get install -y curl回车
  3. 下载node安装脚本:

    输入curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -回车
  4. 安装nodejs:

    输入apt-get install nodejs回车
  5. 分别查看node和npm 是否安装了:

    输入node -v回车

    输入npm -v回车

至此nodejs环境已搭建完成。

第二步:安装Nginx
注意:这里我使用源码安装Nginx
  1. 选定源码目录,原则上可以是任何目录。这里我选择/usr/local/src

    输入cd /usr/local/src回车
  2. 安装PCRE库,zlib库,ssl(某些vps默认没装ssl):

    输入sudo apt-get install libpcre3 libpcre3-dev libpcrecpp0v5 libssl-dev zlib1g-dev回车
  3. 安装Nginx:

    Nginx 一般有两个版本,分别是稳定版和开发版,您可以根据您的目的来选择这两个版本的其中一个,下面是把 Nginx 安装到 /usr/local/nginx 目录下的详细步骤:(注意:需要在sudo下)

    输入cd /usr/local/src回车

    输入wget http://nginx.org/download/nginx-1.13.1.tar.gz回车

    输入tar -zxvf nginx-1.13.1.tar.gz回车

    输入cd nginx-1.13.1回车

    输入./configure 回车

    输入make 回车

    输入make install 回车
  4. 查看端口状态:

    输入netstat -ano|grep 80回车
  5. 启动Nginx:sudo /usr/local/nginx/sbin/nginx
  6. 打开浏览器访问机器的IP,如果看到如下图,恭喜你安装成功了!

至此,我们完成了Nginx的安装。

第三步:使用xftp5上传nodejs项目

上传文件到服务器的方法很多,这里我使用了xftp5将项目上传到服务器。这步基本是傻瓜式的我就不多写了。总之,我最后把项目上传到了这里/usr/local/deployment

第四步:安装pm2并启动nodejs项目

关于pm2我就不多介绍了,类似的还有forever,不了解的可以利用搜索引擎查询^ ^。步骤如下:

  1. 使用npm全局安装pm2:

    输入npm install -g pm2回车
  2. 进入nodejs项目目录,我刚才把项目上传到了/usr/local/deployment,所以:

    输入cd /usr/local/deployment/nodejs的项目目录回车,进入项目目录
  3. 启动nodejs项目,我们nodejs项目的入口文件是app.js,所以:

    输入pm2 start app.js回车
  4. 检查nodejs项目是否启动:

    输入pm2 list回车,

    如果出现下面的东东,就说明nodejs项目已经顺利的在后台建立了服务

至此,我们已经把服务启动起来了。还有最后一步,我们就可以在外网访问到这个服务。

第五步:配置Nginx反向代理:

这一步其实不难,但是需要细心,本人是在这里卡了好久。请各位一定注意。

  1. 找到Nginx配置文件:我们安装完Nginx之后,可以在/usr/local/nginx/conf文件夹下面找到nginx.conf这个文件,这个是Nginx服务器的配置文件,关于服务器的配置都在这里:



    2.输入vi nginx.conf进入编辑nginx.conf文件。进入后什么都不用管,在http{}下面加上如下代码:
server {
listen 8080;
server_name localhost;
location / {
proxy_pass http://127.0.0.1:8899;
}
}

这段代码说明,我监听公网地址的8080端口,并将通过此端口的请求代理到服务器本地nodejs服务的8899端口上面(为什么是本地的8899端口?这个是你的nodejs服务启动时所启用的端口,具体是你自己定的),如此,就完成了nodejs服务在Nginx下的反向代理。

3. 别忘了重新载入Nginx配置:

输入sudo /usr/local/nginx/sbin/nginx -s reload回车

如此,我们便成功地将nodejs代码部署到阿里云服务器。

参考文章:

阿里云ubuntu服务器 node.js环境搭建

Ubuntu下安装Nginx详细步骤

ubuntu 下安装nodejs以及pm2

服务器nginx+nodejs配置

附:xftp5官网下载地址

将nodejs代码部署到阿里云服务器的更多相关文章

  1. 将html代码部署到阿里云服务器,并进行域名解析,以及在部署过程中遇到的问题和解决方法

    本博客主要是说一下,,如何将html代码部署到阿里云服务器,并进行域名解析,以及在部署过程中遇到的问题和解决方法. 1.先在阿里云上购买一台阿里云服务器(ECS云服务器): 2.远程连接上该服务器,在 ...

  2. Java Web项目部署到阿里云服务器(ECS)

    本篇随笔只是记录博主第一次将自己的Java项目部署到阿里云服务器的大致过程,具体细节还请参考别的博文. 一.项目介绍 我做的项目是利用maven项目构建工具进行搭建基于SSM框架的代码共享管理系统,主 ...

  3. 【hexo博客搭建】将搭建好的hexo博客部署到阿里云服务器上面(下)

    一.部署到阿里云服务器 既然博客也已经成功在本地部署,然后主题也成功安装,接下来就可以部署到服务器上面了,如果你也想要魔改matery主题,可以去各种博客上面找一找大佬的教程,或者联系我,也可以让你少 ...

  4. javaWeb项目部署到阿里云服务器步骤

    记录web项目部署到阿里云服务器步骤 (使用 web项目.阿里云服务器.Xftp.Xshell),敬请参考和指正 1.将要部署的项目打包成WAR文件格式,可以在MyEclipse.Eclipse都可以 ...

  5. javaWeb项目部署到阿里云服务器步骤 完整版

    记录web项目部署到阿里云服务器步骤 (使用 web项目.阿里云服务器.Xftp.Xshell),敬请参考和指正 1.将要部署的项目打包成WAR文件格式,可以在MyEclipse.Eclipse都可以 ...

  6. 如何把php项目部署到阿里云服务器window server2012__含公网ip访问时jquery/ajax失效解决办法

    记一次蛋疼的折腾. 弄了一晚上最后发觉是360浏览器的问题,换个浏览器就好了.垃圾360用什么IE7文档模式.导致界面和功能失效. 建议大家测试的时候用firefox或者chrome. 项目部署到服务 ...

  7. 2018.11.7 关于将Web项目部署到阿里云服务器-5个步骤搞定

    将Eclipse导出的War包部署到阿里云服务器上,提供给移动端实时的访问 1. 先登录阿里云网站注册账号,选择服务器类型(我用的是 云服务器ECS), 如果你还是在读大学生可享受优惠价,最低好像是9 ...

  8. 将web项目部署到阿里云服务器上

    一.用eclipse将写好的项目打成war包 1.右键点击项目,选择Export 选择打包之后的路径,点击Finsh. 2.购买阿里云服务器 按下图选择 3.设置云服务器防火墙 4.远程连接云服务器 ...

  9. Django项目部署到阿里云服务器无法发送邮件,发送邮件超时问题解决

    前言 今天, 博主将写了好久的一个Django小项目尝试在阿里云部署上线,由于项目中需要发送邮件,博主调用了163邮箱接口,在本地测试邮件功能正常,可是上线后,邮件功能一直超时崩溃.在百度一番查资料后 ...

随机推荐

  1. 安装基于 Linux 发行版的重要事项(流程指引)

    安装基于 Linux 发行版的重要事项(Install important issues based on the Linux distribution. (Process guidance)) 1. ...

  2. Python tutorial阅读之使用 Python 解释器

    配置环境变量后,一般可以直接通过Python或指定Python版本号来调用Python. Python 解释器有些操作类似 Unix shell:当使用终端设备(tty)作为标准输入调用时,它交互的解 ...

  3. Orleans之EventSourcing

    Orleans之EventSourcing 这是Orleans系列文章中的一篇.首篇文章在此 引入: 如果没有意外,我再这篇文章中用ES代替EventSourcing,如果碰到"事件回溯&q ...

  4. 如何用vue-cli初始化一个vue项目

    单文件组件和vue-loader 解析打包.vue文件 vue为了能够使我们在项目开发中对组件进行更好的维护,提供了一个单文件组件系统,vue把每一个独立的组件放在一个.vue的文件中,在这个文件中提 ...

  5. console那些你不曾知道的玩法

    一.console最常见的四种方法: FireFox(58) Chrome(51) 二.打印对象: 平时想输出对象属性时,可以直接打印对象,对Object使用toString方法会得到 [Object ...

  6. shell实现centos7双网卡修改网卡名eth0,eth1,并设置网络

    #!/bin/bash interface1=`ls /sys/class/net|grep en|awk 'NR==1{print}'` interface2=`ls /sys/class/net| ...

  7. Navi.Soft31.产品.微信聊天(永久免费)

    1系统简介 1.1功能简述 微信确实是一款优秀的社交的软件,被越来越多的人使用.它的电脑版最新版本是2.6,更新也比较及时,只是它有一个功能差强人意,就是同一台电脑只能运行一个微信号,不知道为何这样设 ...

  8. maven排除jar包冲突

    首先查看mvn中冲突的包 使用命令:mvn dependency:tree -Dverbose | grep "omitted for conflict with" windows ...

  9. ASP.NET根据当前时间获取,本周,本月,本季度等时间段

    DateTime dt = DateTime.Now; //当前时间 DateTime startWeek = dt.AddDays(1 - Convert.ToInt32(dt.DayOfWeek. ...

  10. 版本工具:truck tag branch区别

    truck(主干):项目开发的主体,一直处于活跃阶段 tag(标签):用来标示主干或者分支的某个状态,代表某个项目的稳定状态 branch(分支):从主干中分离出来的代码拷贝,在这里进行重大bug修复