Node服务器开发和部署

8,982次阅读
没有评论

共计 7183 个字符,预计需要花费 18 分钟才能阅读完成。

Node 服务器开发和部署

第一步:写一个 Node 服务

方法 1:Express 编写

  1. 创建一个项目:node_server
mkdir node_server && cd node_server && npm init -y
  1. 安装 express:
npm install express
  1. 至此,项目创建成功,在根目录下创建 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);
  1. src 目录下新建 index.html 文件
DOCTYPE html>
html lang="en">
head>
    meta charset="UTF-8">
    title>Titletitle>
head>
body>
    Welcome to our website.
body>
html>
  1. 根目录下启动服务:
node server.js
  1. 打开浏览器,输入如下网址
http://localhost:3000

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

方法 2:Koa2 编写

  1. 创建一个项目 node_koa_server:
mkdir node_koa_server && cd node_koa_server && npm init -y
  1. 安装 koa 和 koa-router:
npm install koa koa-router --save

至此,项目创建成功

  1. 在根目录下创建 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);
  1. 在根目录下再创建 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
  1. 根目录下启动服务:
node server.js
  1. 浏览器访问:http://127.0.0.1:3000/api/test?aa=1

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

方法 3:原生 Node 编写

第二步:拥有一台服务器

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

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

  1. 查看 IP 地址
ifconfig

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

  1. 安装 IP 地址查看工具
sudo apt install net-tools
  1. 在 Windows 机上 Ping 是否能通
ping yourUbuntuIpAdress
  1. 查看端口 22 是否被占用
netstat -nltp|grep 22
  • -n 不以进程的服务名称,以编号 port number 显示
  • -t 列出 tcp 网络封包的信息
  • -l 列出目前正在网络监听 listen 服务
  • -p 列出该网络服务的进程
  1. 安装 SSH 工具,防火墙和开启 22 端口

如果发现没有 22 端口进程,则执行如下命令:

sudo apt-get install openssh-server
sudo apt-get install ufw
sudo ufw enable
sudo ufw allow 22
  1. 用 Xshell 连接是否成功

(二)安装 Git

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

  1. 打开终端。

  2. 首先更新你的包列表:

sudo apt-apt update
  1. 安装 Git:
sudo apt-get install git
  1. 安装完成后,验证 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。

  1. 安装 nvm

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

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

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

  1. 更新您的会话

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

source ~/.bashrc

或者:

source ~/.profile
  1. 验证 nvm 是否安装成功
nvm --version
  1. 查看可安装 Node 版本
nvm list-remote
  1. 安装 Node.js

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

nvm install 16.20.2

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

  1. 切换 Node.js 版本

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

nvm use version>

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

nvm use 12.22.1
  1. 查看安装的所有 Node.js 版本

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

nvm ls
  1. 设置默认 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 命令

  1. 先测试是否安装 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 当前所在的文件夹)

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

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

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

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

方法 2:通过 FileZilla 上传

  1. 登录账号
  2. 定位到上传文件夹
  3. 拖拽文件夹进行上传

第四步:安装并使用 PM2

通过 pm2 启动 Node 服务

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

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

  1. 全局安装 PM2
npm install -g pm2
  1. 检查 PM2 是否安装成功
pm2 --version
  1. 进入项目根目录
cd node_server
  1. 安装项目依赖
npm install
  1. 启动进程 / 应用
pm2 start bin/www 或 pm2 start server.js
  1. 重命名进程 / 应用
pm2 start server.js --name wb123
  1. 添加进程 / 应用 watch
pm2 start bin/www --watch
  1. 结束进程 / 应用
pm2 stop www
  1. 结束所有进程 / 应用
pm2 stop all
  1. 删除进程 / 应用
pm2 delete www
  1. 删除所有进程 / 应用
pm2 delete all
  1. 列出所有进程 / 应用
pm2 list
  1. 查看某个进程 / 应用具体情况
pm2 describe www
  1. 查看进程 / 应用的资源消耗情况
pm2 monit
  1. 查看 pm2 的日志
pm2 logs
  1. 若要查看某个进程 / 应用的日志, 使用
pm2 logs www
  1. 重新启动进程 / 应用
pm2 restart www
  1. 重新启动所有进程 / 应用
pm2 restart all

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

curl http://127.0.0.1:3000

第五步:安装 Nginx

目标:nginx 安装成功

    1. 没有报错
    1. 能显示版本
  1. 安装 Nginx
sudo apt-get install nginx
  1. 查看 Nginx 版本
nginx -v

第六步:配置 Nginx

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

    1. nginx 映射域名
    1. 域名访问成功

(一)反向代理配置

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

  1. 进入配置文件目录
cd /etc/nginx/conf.d/
  1. 创建配置文件
sudo touch server.conf
  1. 在 Ubuntu 系统中可以使用以下命令安装 Vim
sudo apt install vim

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

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

    在配置文件里粘贴以下代码,注意其中的路径 /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!。

  1. Nginx 跳转默认欢迎页面的问题

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

# include /etc/nginx/sites-enabled/*;
  1. 检查配置文件是否合格
sudo nginx -t

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

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
  1. 至此说明 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=disabled   

重启生效:reboot。

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

  1. 检查 Nginx 是否开启
ps  -ef | grep nginx
  1. 放开 80 端口
sudo ufw allow 80

第八步:访问服务

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

http://UbuntuIpAdress

原文地址: Node 服务器开发和部署

    正文完
     0
    Yojack
    版权声明:本篇文章由 Yojack 于2024-11-04发表,共计7183字。
    转载说明:
    1 本网站名称:优杰开发笔记
    2 本站永久网址:https://yojack.cn
    3 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
    4 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
    5 本站所有内容均可转载及分享, 但请注明出处
    6 我们始终尊重原创作者的版权,所有文章在发布时,均尽可能注明出处与作者。
    7 站长邮箱:laylwenl@gmail.com
    评论(没有评论)