无网络信创服务器部署nodejs服务流程记录

352 阅读5分钟

信创系统上部署 Node.js 服务 需要通过国内镜像源或者直接打包好的工具进行部署。由于信创服务器无法访问互联网,我们需要在本地下载对应的工具和资源,打包成 zip 文件,再上传到服务器解压。

查看服务器的系统和硬件配置信息

  1. 查看操作系统信息
cat /etc/os-release // Kylin(麒麟)是国产信创操作系统
  1. 查看内核版本
uname -r // 内核版本基于 Linux Kernel 4.19
  1. 查看硬件配置
lscpu // CPU 信息 - 架构x86_64(支持 64 位和 32 位)。CPU 核心数
free -h // 内存信息 总内存/已使用
df -h // 磁盘信息 分区
ip a // 查看网络配置 回环地址\网络接口:`eth0`\IP地址:`30.227.26.141/25`\网关:`30.227.26.255`

下载 Node.js

前往 Node.js 官方网站的国内镜像站点下载对应的 Linux 64 位版本: 在本地下载后,解压并重新打包为 .zip

wget https://npm.taobao.org/mirrors/node/v16.20.2/node-v16.20.2-linux-x64.tar.xz
tar -xvf node-v16.20.2-linux-x64.tar.xz
zip -r node-v16.20.2-linux-x64.zip node-v16.20.2-linux-x64

window电脑提示 wget: command not found 在 Windows 系统中,wget 是 Linux 系统中的常用工具,默认情况下在 Windows 命令行里不可用。

1. 使用 curl 命令替代

curl -O https://npm.taobao.org/mirrors/node/v16.20.2/node-v16.20.2-linux-x64.tar.xz

curl failed to verify the legitimacy of the server and therefore could not establish a secure connection to it. To learn more about this situation and how to fix it, please visit the web page mentioned above.这个错误提示表明 curl 在尝试下载文件时,遇到了 SSL 证书验证失败 的问题,具体是 SNI (Server Name Indication) 或证书的主机名不匹配导致的。通常在国内镜像站点使用时,某些情况下 SSL 验证可能会出错。

2. 使用浏览器手动下载

如果 curl 仍然失败,可以直接将链接粘贴到浏览器的地址栏,通过浏览器下载文件:

下载完成后,再通过 scp 将文件上传到信创服务器。(这里个人遇到一个坑:外网先把tar.xz解压后再用zip压缩,出现npm -v无法执行问题,后面改成tar.xz直接传到无网络机器后再解压就没问题,比对后发现是解压后文件夹大小不一致,所以猜测可能是解压工具问题)

3. 在无网络服务器上解压和安装

  • 解压 Node.js 文件
unzip node-v16.20.2-linux-x64.zip
mv node-v16.20.2-linux-x64 /usr/local/nodejs
  • 配置环境变量
sudo vi /etc/profile  // 编辑 `/etc/profile` 文件
// 添加以下内容
export PATH=/usr/local/nodejs/bin:$PATH
  • 保存后让配置生效
source /etc/profile
  • 验证安装
node -v
npm -v

如果node -v执行提示bash: /usr/local/nodejs/bin/node: Permission denied,或者npm -v执行无效,通常是因为二进制文件的权限不足导致

  • 执行以下命令查看权限:ls -l /usr/local/nodejs/bin/node
  • 如果没有可执行权限(例如 -rw-r--r--),则需要手动赋予执行权限:sudo chmod +x /usr/local/nodejs/bin/node、sudo chmod +x /usr/local/nodejs/bin/npm、sudo chmod +x /usr/local/nodejs/bin/npx
  • 查看权限是否完成修改:ls -l /usr/local/nodejs/bin/node

下载git

# 下载 git 源码
curl -O https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.30.2.tar.gz

# 解压 tar.gz 文件
tar -zxvf git-2.30.2.tar.gz

# 压缩成 zip 文件
zip -r git-2.30.2.zip git-2.30.2

# 如何确定系统是基于 CentOS 7 还是 CentOS 8?
- CentOS 7 使用的内核版本是 **3.10.x**。
- CentOS 8 默认使用 **4.18.x** 内核,和你的 4.19.x 比较接近。

# Git 的源码编译需要依赖一些工具,可从下面网站里找:
https://mirrors.aliyun.com/centos/8/AppStream/x86_64/os/Packages/

# 应选择的 `git` RPM 包
-   `git-2.27.0-1.el8.x86_64.rpm`Git 程序)
-   `git-core-2.27.0-1.el8.x86_64.rpm`Git 核心依赖)
-   `git-core-doc-2.27.0-1.el8.noarch.rpm`(文档)
-   `git-email-2.27.0-1.el8.noarch.rpm`(邮件功能)
-   `git-daemon-2.27.0-1.el8.x86_64.rpm`Git 服务端功能)
-   **perl-Error**(核心依赖)、**perl-Exporter**(导出功能)、**perl-Env**(环境变量处理)、**perl-Errno**(错误处理)、**perl-Algorithm-Diff**(文本差异比较)、**perl-App-cpanminus**(Perl 模块下载工具)

# 上传这些 RPM 包到信创服务器(可以先压缩,传过去后再解压)
# 使用 `rpm` 命令手动安装
sudo rpm -ivh --force --nodeps *.rpm

# 验证 Perl 依赖是否正确安装
perl -v

适合无网络环境的长远方案下载puppeteer

确定版本号

可以查看下面文件

cat puppeteer/lib/cjs/pppeteer/revisions.js

或者根据版本号查看下面地址

https://github.com/puppeteer/puppeteer/releases?page=42

image.png

Puppeteer 和 Chromium 版本对照表

Puppeteer 版本Chromium 版本Chromium 修订号 (Revision)
20.8.0118.0.5993.0r1201160
20.7.4117.0.5938.0r1179872
20.5.0115.0.5790.98r1108766
19.0.0102.0.5005.0r982053
18.0.4101.0.4950.0r958920
17.1.097.0.4692.99r929171
16.0.096.0.4664.45r928760
15.5.094.0.4606.61r930109
14.4.093.0.4577.0r884014
13.7.092.0.4515.0r877982
12.0.191.0.4469.0r869685
11.0.090.0.4427.0r857950
10.4.089.0.4389.0r848005
9.1.188.0.4298.0r818858
8.0.087.0.4280.0r800071
7.1.086.0.4240.0r786218
6.0.085.0.4182.0r782078
5.5.084.0.4147.0r782078
4.0.183.0.4103.0r756035
3.3.081.0.4044.0r750776
3.0.080.0.3987.0r737027
2.1.179.0.3945.0r706915
1.20.077.0.3803.0r669486
1.19.076.0.3803.0r674921
1.18.174.0.3723.0r674921
1.12.273.0.3683.0r672088
1.11.072.0.3626.0r661576
1.10.071.0.3578.0r650583
1.9.070.0.3538.0r641577
1.8.069.0.3494.0r599821
1.7.068.0.3440.0r575458
1.6.067.0.3396.0r543305
1.5.066.0.3347.0r536395
1.4.065.0.3325.0r533271
1.3.064.0.3282.0r515411
1.2.063.0.3239.0r503037
1.1.062.0.3202.0r492968
1.0.061.0.3163.0r482378
如何使用该表
  • 查找 Puppeteer 的版本号
npm list puppeteer
  • 确认对应的 Chromium 版本号:使用上表找到 Puppeteer 的版本号对应的 Chromium 版本和修订号。

  • 下载对应版本号

https://storage.googleapis.com/chromium-browser-snapshots/Linux_x64/884014/chrome-linux.zip

在本地安装 Puppeteer

cd puppeteer-offline 
npm install puppeteer --ignore-scripts
// `--ignore-scripts`:此选项会阻止 Puppeteer 自动下载 Chromium。

// 手动指定 Chromium 路径
const browser = await puppeteer.launch({ 
executablePath: '/path/to/chrome-linux/chrome', // 修改为服务器上的路径,是你上传的 Chromium 解压后的执行路径。
headless: true, 
args: ['--no-sandbox', '--disable-setuid-sandbox'] 
});

安装 Puppeteer 时跳过 Chromium 下载

  • 方在项目中设置环境变量:在 package.json 中添加脚本
"scripts": {
    "install": "PUPPETEER_SKIP_DOWNLOAD=true npm install"
}
  • 直接指定环境变量执行命令
PUPPETEER_SKIP_DOWNLOAD=true npm instal