云计算百科
云计算领域专业知识百科平台

Node服务器开发和部署

Node服务器开发和部署

第一步:写一个Node服务

方法1:Express编写

  • 创建一个项目:node_server
  • mkdir node_server && cd node_server && npm init -y

  • 安装express:
  • npm install express

  • 至此,项目创建成功,在根目录下创建server.js:
  • var express = require('express');
    var http = require('http');
    var fs = require('fs');
    var app = express();
    var path = require('path');

    app.all('*', function (req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS');
    res.header("Access-Control-Allow-Headers", "X-Requested-With");
    res.header('Access-Control-Allow-Headers', 'Content-Type');
    next();
    });

    app.use('/', express.static('./src/')); //设置静态文件路径
    app.use(express.static(path.join(__dirname, 'static')));
    app.get('/', function (req, res, next) {
    res.writeHead(200, {'Content-Type': 'text/html'})
    fs.readFile('./src/index.html', 'utf-8', function (err, data) {
    if (err) {
    throw err;
    }
    res.end(data);
    });
    });

    var port = 3000;
    app.listen(port);
    console.log('start service');
    console.log('please visit: http://localhost:' + port);

  • 在src目录下新建index.html文件
  • <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>Title</title>
    </head>
    <body>
    Welcome to our website.
    </body>
    </html>

  • 根目录下启动服务:
  • node server.js

  • 打开浏览器,输入如下网址
  • http://localhost:3000

    至此,第1步的node服务创建完成!

    方法2:Koa2编写

  • 创建一个项目node_koa_server:
  • mkdir node_koa_server && cd node_koa_server && npm init -y

  • 安装koa和koa-router:
  • npm install koa koa-router –save

    至此,项目创建成功

  • 在根目录下创建server.js:
  • const Koa = require('koa');
    const app = new Koa();
    const router = require('./router')
    app.use(async (ctx, next) => {
    const start = Date.now();
    await next();
    const ms = Date.now() start;
    console.log(`${ctx.method} ${ctx.url}${ms}ms`);
    });
    app.use(router.routes())
    app.listen(3000);

  • 在根目录下再创建router.js:
  • const Router = require('koa-router');
    const router = new Router();
    router.get('/api/', (ctx, next) => {
    ctx.body = 'Hello World!';
    })
    .get('/api/test', (ctx, next) => {
    ctx.body = {
    msg: 'Here is test',
    query: ctx.query,
    queryStr: ctx.querystring
    }
    })
    .post('/api/users', (ctx, next) => {
    ctx.body = 'Here is users';
    })
    .all('/api/users/:id', (ctx, next) => {
    // …
    });

    module.exports = router

  • 根目录下启动服务:
  • node server.js

  • 浏览器访问:http://127.0.0.1:3000/api/test?aa=1
  • 至此,第一步的node服务创建完成!

    方法3:原生Node编写

    第二步:拥有一台服务器

    • 购买:阿里云、腾讯yun、百度云、华为云等,系统:Ubuntu
    • VMware配置Ubuntu虚拟机

    (一)Ubuntu如何开启22端口支持ssh访问

  • 查看IP地址
  • ifconfig

    执行后如果提示服务不存在,则需要下载net-tools网络工具

  • 安装IP地址查看工具
  • sudo apt install net-tools

  • 在Windows机上Ping是否能通
  • ping yourUbuntuIpAdress

  • 查看端口22是否被占用
  • netstat -nltp|grep 22

    • -n 不以进程的服务名称,以编号port number显示
    • -t 列出tcp网络封包的信息
    • -l 列出目前正在网络监听listen服务
    • -p 列出该网络服务的进程
  • 安装SSH工具,防火墙和开启22端口
  • 如果发现没有22端口进程,则执行如下命令:

    sudo apt-get install openssh-server
    sudo apt-get install ufw
    sudo ufw enable
    sudo ufw allow 22

  • 用Xshell连接是否成功
  • (二)安装Git

    Ubuntu安装git,在Ubuntu上安装Git可以通过以下步骤进行:

  • 打开终端。

  • 首先更新你的包列表:

  • sudo apt-apt update

  • 安装Git:
  • sudo apt-get install git

  • 安装完成后,验证Git是否正确安装:
  • git –version

    这将安装最新的Git版本,并允许你通过终端使用Git命令。如果你需要配置Git或设置全局参数,你可以使用以下命令:

    git config –global user.name "Your Name"
    git config –global user.email "youremail@example.com"

    这些步骤适用于大多数基于Debian的系统,包括Ubuntu。如果你使用的是Ubuntu的旧版本,可能需要使用apt-get命令替换为apt。

    (三)安装Curl

    在Ubuntu上安装curl的命令如下:

    sudo apt update
    sudo apt install curl
    curl –version

    (四)通过Nvm安装Node.js

    **nvm(Node Version Manager)**是一个用于管理多个Node.js版本的工具,可让您在同一台机器上安装和维护不同版本的Node.js。

  • 安装nvm
  • 首先,打开您的终端并运行以下命令来安装nvm:

    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash

    上述命令会从nvm的GitHub仓库获取安装脚本并执行。请注意检查GitHub上nvm的最新版本,以便获取最新的安装脚本。

  • 更新您的会话
  • 运行上述命令后,您通常需要重新开启终端或者重新读入您的bash配置文件,以便使用nvm命令,这可以通过以下任一命令实现:

    source ~/.bashrc

    或者:

    source ~/.profile

  • 验证nvm是否安装成功
  • nvm –version

  • 查看可安装Node版本
  • nvm list-remote

  • 安装Node.js
  • 使用nvm安装Node.js的特定版本非常简单,您只需要指定所需版本的Node.js即可。例如,如果想安装Node.js 14.17.0版本,运行:

    nvm install 16.20.2

    成功执行后,nvm将安装Node.js 16.20.2 及其包管理器npm。

  • 切换Node.js版本
  • 如果您已经安装了多个版本的Node.js,可以通过以下命令在它们之间切换:

    nvm use <version>

    例如,如果想切换到Node.js 12.22.1,您可以运行:

    nvm use 12.22.1

  • 查看安装的所有Node.js版本
  • 可以通过下面的命令查看所有已安装的Node.js版本:

    nvm ls

  • 设置默认Node.js版本
  • 为了避免每次打开新会话时都要切换Node.js版本,nvm允许您设置一个默认版本:

    nvm alias default <version>

    例如,要将默认版本设置为14.17.0:

    nvm alias default 14.17.0

    通过以上步骤,您可以在Ubuntu系统上灵活地安装和管理不同版本的Node.js。这种方法让开发者能够根据不同项目的需要选择合适的Node.js版本,同时也使版本切换变得非常方便。而且,nvm能够为每个项目独立管理依赖,从而确保不同项目之间的环境隔离,增强了开发环境的稳定性和可维护性。

    第三步:上传Server文件

    方法1:通过Xshell的命令上传

    打开Xshell,连上一台Linux服务器或者是虚拟机,如果要方便的上传文件,需要rz命令

  • 先测试是否安装rz
  • rz

    如果出现未安装(或者command not found)且建议sudo apt install lrzsz(Ubuntu)

    那么键入sudo apt install lrzsz 并输入密码,安装好lrzsz。

    可以开始上传文件啦!

    定位到需要上传文件的目录

    cd /home/rambo
    sudo mkdir app
    cd app

    本地上传到服务器(rz命令)

    键入rz -y,会唤起文件选择 ,选择文件->打开,即可上传(上传的位置就是Xshell当前所在的文件夹)

  • 上传文件夹下多个文件,选中文件夹下所有文件(或者几个)文件即可

  • 从服务器下载文件(sz)sz filename

  • 下载文件夹下所有文件 sz filename1 filename2 …(下载多个文件) 或者 sz \\*.\\*(下载所有文件)

  • 其他功能 rz –help自己探索吧。

  • 方法2:通过FileZilla上传

  • 登录账号
  • 定位到上传文件夹
  • 拖拽文件夹进行上传
  • 第四步:安装并使用PM2

    通过pm2启动Node服务

    • 保证pm2 start xx.js成功
    • 通过curl能访问

    (一)安装PM2并启动Node服务

  • 全局安装PM2
  • npm install -g pm2

  • 检查PM2是否安装成功
  • pm2 –version

  • 进入项目根目录
  • cd node_server

  • 安装项目依赖
  • npm install

  • 启动进程/应用
  • pm2 start bin/www 或 pm2 start server.js

  • 重命名进程/应用
  • pm2 start server.js –name wb123

  • 添加进程/应用 watch
  • pm2 start bin/www –watch

  • 结束进程/应用
  • pm2 stop www

  • 结束所有进程/应用
  • pm2 stop all

  • 删除进程/应用
  • pm2 delete www

  • 删除所有进程/应用
  • pm2 delete all

  • 列出所有进程/应用
  • pm2 list

  • 查看某个进程/应用具体情况
  • pm2 describe www

  • 查看进程/应用的资源消耗情况
  • pm2 monit

  • 查看pm2的日志
  • pm2 logs

  • 若要查看某个进程/应用的日志,使用
  • pm2 logs www

  • 重新启动进程/应用
  • pm2 restart www

  • 重新启动所有进程/应用
  • pm2 restart all

    (二)通过Curl访问,网站是否正常启动

    curl http://127.0.0.1:3000

    第五步:安装Nginx

    目标:nginx安装成功

    • 没有报错
    • 能显示版本
  • 安装Nginx
  • sudo apt-get install nginx

  • 查看Nginx版本
  • nginx -v

    第六步:配置Nginx

    目标:能用绑定的域名访问

    • nginx映射域名
    • 域名访问成功

    (一)反向代理配置

    一般的nginx默认安装的配置文件都是在:/etc/nginx/conf.d/

  • 进入配置文件目录
  • cd /etc/nginx/conf.d/

  • 创建配置文件
  • sudo touch server.conf

  • 在 Ubuntu 系统中可以使用以下命令安装 Vim
  • sudo apt install vim

    Vim基本使用 Vim 有多种工作模式,以下是一些基本使用方法:

    • 普通模式:打开 Vim 后默认进入普通模式,可使用方向键或h、j、k、l键移动光标,使用x键删除字符,使用dd命令删除整行;
    • 插入模式:在普通模式下,按下i、a、o等键可进入插入模式,此时可输入文本;
    • 命令模式:在普通模式下,输入:进入命令模式,可执行保存、退出、查找、替换等操作;
    • 可视化模式:在普通模式下,按下v键进入可视化模式,可选择文本进行复制、粘贴、删除等操作;
    • 替换模式:在普通模式下,按下R键进入替换模式,可替换文本。
  • 使用 Vim 编辑文本文件
  • vim server.conf

  • 写入配置文件

    在配置文件里粘贴以下代码,注意其中的路径 /home/ubuntu/node_server 应和上述上传的路径同名,否则找不到服务地址

  • server {
    listen 80;
    server_name 127.0.0.1;
    location = / {
    index index.html;
    root /home/ubuntu/node_server/src;
    }

    location ~* \\.html {
    root /home/ubuntu/node_server/src;
    }

    location ~* \\.(ttf|woff|gif|jpg|png|js|css)$ {
    root /home/ubuntu/node_server/src;
    }

    location / {
    proxy_pass http://127.0.0.1:3000;
    }

    #error_page 404 /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
    root /usr/share/nginx/html;
    }
    }

    进入 Vim 后,默认处于普通模式。 要进入插入模式来编辑文本,可以按 i(在当前光标位置前插入)、a(在当前光标位置后插入)、o(在当前行下一行插入新行并进入插入模式)等键。 在插入模式下进行文本的输入、修改等操作。 编辑完成后,按 Esc 键回到普通模式。 在普通模式下,可以进行删除、复制、粘贴等操作,例如 dd 可删除当前行,yy 可复制当前行。 若要保存文件,在普通模式下输入 :w 。 若要退出 Vim ,输入 :q 。如果想保存并退出,输入 :wq 。如果有未保存的更改且不想保存直接退出,输入 :q! 。

  • Nginx跳转默认欢迎页面的问题
  • 这里注意需要修改 ·/etc/nginx/nginx.conf·文件中的一行代码注释掉,否则Nginx会调用默认的配置,访问时会跳转到默认的Nginx欢迎页面

    # include /etc/nginx/sites-enabled/*;

  • 检查配置文件是否合格
  • sudo nginx -t

    如果合格,会有如下输出:

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

  • 至此说明nginx配置没有语法问题了,可以考虑重启了:
  • sudo nginx -s reload

    如果有如下报错:

    nginx: [error] invalid PID number "" in "/run/nginx.pid"

    需要重新加载一下配置文件:

    nginx -c /etc/nginx/nginx.conf

    这个时候再重启nginx:

    sudo nginx -s reload

    理论上是成功了的,如果有错误,还得看具体什么错了,然后针对性解决

    (二)Nginx 403 解决方法

    1. 启动用户和nginx工作用户不一致所致

    查看nginx的启动用户:打开nginx.conf文件

    sudo vim nginx.conf

    user www-data; 修改为 user root;

    2. nginx.conf中缺少index的指定的文件

    查看nginx的配置:打开nginx.conf文件

    server {
    listen 80;
    server_name localhost;
    index index.html;
    root /opt/html/;
    }

    如果在/opt/html/下面没有index.html的时候,会报403 forbidden。

    3. 权限问题,如果nginx没有操作权限,也会出现403错误

    解决办法:修改/opt/html/目录的读写权限,或者是把nginx的启动用户改成目录的所属用户,重启Nginx即可解决

    chmod -R 777 /opt/html/

    4. SELinux设置为开启状态(enabled)的原因

    查看当前selinux的状态。

    /usr/sbin/sestatus

    将SELINUX=enforcing 修改为 SELINUX=disabled 状态。

    vi /etc/selinux/config
    #SELINUX=enforcing
    SELINUX=disabled #注释之前,替换为这个

    重启生效:reboot。

    第七步:服务器安装了nginx 不能通过80端口访问解决

  • 检查Nginx是否开启
  • ps -ef | grep nginx

  • 放开80端口
  • sudo ufw allow 80

    第八步:访问服务

    在主机中通过输入网址进行访问

    http://UbuntuIpAdress

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » Node服务器开发和部署
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!