从零部署我的node应用(nginx反向代理到node服务器)
前期工具准备
1.首先买服务器和域名。
我使用的是腾讯学生云,https://cloud.tencent.com/act/campus,不是广告,当然你也可以选阿里云。
腾讯学生云买的时候+8元可以获得.cn域名一年,不过域名可以买可不买,我是买了的,毕竟不想让自己的网站通过ip访问。
我买的服务器是Centos7.4的,当然这个无所谓,你可以到时候重装系统,还可以重新选择镜像和设置密码呢,就在你的服务器右边那《更多》可以选择
2.域名实名认证和解析。
如果买了域名的话则需要实名认证才可以使用,另外,备案对于我们来说没有必要,不用选择。
不过备案的一个好处就是可以使用二级域名。
域名随后还需要解析:https://cloud.tencent.com/document/product/302/3446
3.下载安装putty和WinSCP
putty用来连接远程主机。下载地址
WinSCP用来上传部署文件。下载地址
4.使用putty连接远程主机
连接名字随便取,比如可以取为myServer, ip为远程主机的公网ip
连接时候需要输入账户名和密码,输完后就进入了linux控制界面了
5.准备好你要部署的项目
在这里我要部署一个即时在线聊天系统,git地址为:https://github.com/14glwu/NoChat
喜欢的话,麻烦给我点star! star!star!
nginx+node环境搭建
可以参考这个:腾讯云从零部署ndoejs应用
1.安装nginx服务器
ubunto服务器一般是用apt-get命令安装,而centos一般是用yum
yum install nginx
安装后可以使用 nginx -v 查看是否安装成功,有版本号就代表安装成功。
启动nginx服务器
nginx
2.安装node
node下载,可根据需要下载不同版本号
wget https://nodejs.org/dist/v10.4.1/node-v10.4.1-linux-x64.tar.xz
解压
tar -xvf node-v10.4.1-linux-x64.tar.xz
进入解压好的文件夹
cd node-v10.4.1-linux-x64
拷贝安装(相当于添加环境变量,为了能运行node命令)
cp -r bin include lib share /usr/local/
安装后可以使用 node -v 查看是否安装成功,有版本号就代表安装成功。
3.使用WinSCP上传要部署的应用
当然你也可以选择yum install git,再用git clone你的项目到服务器上然后安装运行。
这里我使用了比较简单的 WinSCP。登录过程比较简单,因为前面putty已经登录过了,有远程主机的ip信息,
所以WinSCP只需要输入账号和密码就能登录了,登录成功后如下图
在这里我已经新建了我的项目目录NoChat,左边是我们的本地目录。
右边进入远程目录的NoChat文件夹下,左边进入本地目录下要部署的项目文件夹下
然后把左边要上传的文件(一般除去node_moduls等目录)选中后直接拖拽到右边远程目录,即可完成上传。
(右边有node_modules是因为我已经安装过了)
3.使用putty安装应用
ll查看目录文件,cd命令进入到对应项目文件夹下,然后npm install安装应用
4.安装pm2模块
pm2是node进程管理工具,可以利用它来简化很多node应用管理的繁琐任务,如性能监控、自动重启、负载均衡等,而且使用非常简单。
我们稍后要用pm2去启动我们的node应用,毕竟pm2可以保证我们的应用不停止。想了解更多pm2的可以网上搜索下。
安装pm2
npm install -g pm2
启动应用
pm2 start server.js --name nochat
当然你想停止就pm2 stop 应用名
具体pm2命令可以看这里
启动好后,可以查看我们刚刚部署好了的node应用:http://ericwu.cn:8090/
nginx反向代理
前面我们的应用居然还要访问端口号,我们想要的是如果访问http://ericwu.cn/nochat就能访问到我们的应用就好了。
很简单。通过nginx反向代理就能做到。当然nginx服务器还有很多优秀之处:静态资源、负载均衡等。
我之所以使用nginx反向代理,就是我想把不同项目部署在不同端口下,再通过nginx反向代理去分发请求到不同项目的node或者apache服务器
具体可以看这里
这时候就又要用到了WinSCP(图形界面真香)
nginx安装完成之后,配置文件一般在这些目录中/usr/local/nginx/conf, /etc/nginx, or /usr/local/etc/nginx.
我的配置文件在/etc/nginx目录下,打开nginx.conf,在http下增加要代理的服务器
upstream nochat { server 你的远程主机ip:8090; }
在这里我的端口号是8090,ip也就是远程主机的公网ip
然后在server下修改location,从反向代理到对应的服务器上
location / { proxy_pass http://nochat/;#一定要配置,不然找不到node服务器下的静态资源 } location /nochat { proxy_pass http://nochat/; port_in_redirect on; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }
至此,我们的反向代理就配置好了,访问新的网址试试:http://ericwu.cn/nochat
不过一开始进去的时候,连接不上,需要等会儿才能连上。
我找了下原因是因为我的应用使用了websocket协议。我的nginx版本是1.12的,而nginx 1.3的才能支持websocket的反向代理,哎,真坑。
不过也不知道为什么我的又能连上,也许有大牛可以解答吧。
另外还是希望您能给我的github一点star:https://github.com/14glwu/NoChat
- 【翻译】使用nginx作为反向代理服务器,uWSGI作为应用服务器来部署flask应用
- Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点
- nginx反向代理服务器搭建,应用服务器集群负载均衡
- 通过 Nginx 反向代理部署 Node.js 服务
- Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点
- nginx在linux系统下的安装部署,以及反向代理https请求协议,ssl证书的生成,负载均衡tomcat服务器!
- Node部署学习-3-Nginx反向代理Node服务
- 腾讯云(ubuntu)下安装 nodejs + 实现 Nginx 反向代理服务器
- CentOS7下搭建nginx反向代理服务器使得外网可以二级域名访问内网应用
- 详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点
- Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点
- Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点
- Nginx反向代理Resin与PHP——单服务器挂多网站的实现
- RHEL6.4 搭建Nginx反向代理服务器
- NodeJS on Nginx: 使用nginx反向代理处理静态页面
- Ubuntu下安装Nginx环境以及搭建反向代理服务器
- 浅谈Nginx服务器反向代理的一些应用 推荐
- Nginx入门级简介,包括安装,基本使用,负载均衡,动静分离,反向代理,缓存应用等功能。
- nginx之反向代理服务器