服务器部署nodejs、nginx-欢迎使用zwight个人网站系统
×

服务器部署nodejs、nginx

部署和安装node、nginx    

    先安装node

    1、下载对应的二进制文件

        wget -c https://nodejs.org/dist/v8.9.1/node-v8.9.1-linux-x64.tar.xz

    2、提取文件

        tar -xvf node-v8.9.1-linux-x64.tar.xz

    3、解压之后得到的文件就是安装好的nodejs了,为了方便我们可以对它重命名下

        mv node-v8.9.1-linux-x64 /app/node

    4、node和npm只能在/app/node/bin文件夹下使用,想要node和npm全局有效,可以通过创建软连接

       ln -s /app/node/bin/node /usr/local/bin/node
    ln -s /app/node/bin/npm /usr/local/bin/npm

    现在node和npm可以全局使用了,同样输入命令node -v来检查nodejs是否安装成功

     安装常用node包

        npm i pm2 webpack vue-cli -g


    安装nginx

    1、yum安装

        yum install -y nginx

        安装完成使用nginx -v检查是否成功,若出现以下输出则安装成功

        nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
        nginx: configuration file /etc/nginx/nginx.conf test is successful

    2、启动nginx

        systemctl start nginx.service // 启动nginx

        systemctl stop nginx.service // 停止nginx

        systemctl restart nginx.service // 重启nginx

        systemctl enable nginx.service // 设置开机启动


部署线上vue项目

    在usr/share目录下用mkdir创建www文件夹,创建app.js启动文件,

const fs = require('fs');
const path = require('path');
const express = require('express');
const app = express();
app.use(express.static(path.resolve(__dirname, './dist')));

app.get('*',function(req,res){
    const html = fs.readFileSync(path.resolve(__dirname, './dist/index.html'),'utf-8');
    res.send(html);
})
app.listen(8082)

    代码在这就不做解释,这里主要讲解如何部署项目环境

    由于我们使用了express框架,所以我们可以生成一个package.json,将依赖项添加进去

{
   "name":"vue-resume-dist",
   "version": "1.0.0",
   "description": "",
   "main": "app.js",
   "scripts": {
      "test": "echo \"Error: no test specified\" && exit 1"
   },
   "author": "",
   "license": "ISC",
   "dependencies": {
      "express": "^4.15.3"
   }
}

    然后将项目通过软件传到你需要的目录下,如果你是通过xshell上传的zip压缩包可以用unzip xxx.zip命令解压文件,如果是其他类型的压缩文件请自行搜索解压命令

    之后通过命令cd到你的项目下进行npm install安装依赖,然后pm2 start app.js就成功启动服务了

现在通过ip加端口形式就能正常访问,但是如果想通过域名访问就需要配置nginx映射


nginx端口映射配置

    首先你需要把一个二级域名解析到你的主机IP,比如我使用的vultr.zwight.net这个二级域名

    解析域名(示例为万网域名解析):

    1、先将二级域名解析到主机IP

        在一级域名的解析列表添加一条新的解析记录,记录类型为A,主机记录为你的二级域名格式为  xxx(自定义的字符).zwight.net(一级域名),解析线路默认,记录值为你的主机IP;

        这个二级域名访问网页除了默认的80端口(http)或者443(https)之外访问其他端口都需要二级域名+端口访问,若你需要在访问地址上不想出现端口号则可以通过域名的隐性URL解析到其他地址

    2、隐性URL解析:

        在解析列表添加一条新的解析记录,记录类型选择 隐性URL,主机记录还是xxx(自定义的字符,需要和二级域名不一致).zwight.net(一级域名),记录值则是二级域名+端口号(比如我的端口号为8080则填入:http://vultr.zwight.net:8080)

    nginx配置

        将下面的配置放入etc/nginx的nginx.conf文件中,其中的端口和server_name改为自己的配置,server_name为你的二级域名

upstream resume{
    server 127.0.0.1:8082;
}

server {
    listen 8080;
    server_name vultr.zwight.net;
    
    location / {
        proxy_set_header Host  $http_host;
        proxy_set_header X-Real-IP  $remote_addr;  
        proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for;
        proxy_set_header X-Nginx-proxy true;
        proxy_pass http://resume;
        proxy_redirect off;
    }
}

执行nginx -s reload重启nginx服务器