Node.js项目实战 | Excalidraw-CN白板工具的部署实践

举报
江湖有缘 发表于 2024/09/29 21:43:02 2024/09/29
【摘要】 Node.js项目实战 | Excalidraw-CN白板工具的部署实践

一、前言

Node.js是一个开源的JavaScript运行时环境,它基于Chrome V8引擎构建。它的出现使得JavaScript不再局限于浏览器端,开发人员可以使用JavaScript来构建高性能的网络应用程序。Node.js在性能、可扩展性、开发效率和用户体验方面有着持续的发展趋势。技术人员关注的方向包括性能优化、微服务架构、服务器端渲染、容器化和服务端less架构等。本次实践是在Node.js环境下部署excalidraw-cn白板工具。

二、相关名词介绍

2.1 Node.js介绍

Node.js是一个基于Chrome V8引擎的JavaScript运行时环境,使JavaScript能够在服务器端运行。它是一个开源、跨平台的平台,可以在Windows、Linux和macOS等操作系统上运行。Node.js拥有一个强大的包管理工具npm,它是世界上最大的开源库生态系统之一。开发者可以通过npm轻松地安装、发布、共享和管理第三方模块,加快开发速度。

请在此添加图片描述

2.2 Excalidraw-CN介绍

Excalidraw-CN简介:

Excalidraw-CN 是支持中文手写和多画布的 Excalidraw 白板工具。

Excalidraw-CN使用场景:

  • 远程协作:Excalidraw允许多人同时在同一个画板上进行协作,可以实时绘制和编辑图形,可用于团队会议、项目讨论、远程教学等场景。
  • 程序设计和流程图:Excalidraw提供了丰富的绘制工具,可以用于绘制程序设计的流程图、算法图、类图等,方便开发人员进行代码编写和设计。
  • 用户故事和产品原型:Excalidraw的简洁易用的绘图工具可以用来绘制用户故事板、产品原型、界面设计等,帮助团队成员更好地理解和沟通产品需求。
  • 思维导图和概念图:Excalidraw支持绘制各种形状的图形,可以用于绘制思维导图、概念图、知识结构图等,方便整理和展示复杂的思维和概念关系。
  • 教育和学习:Excalidraw可以用于远程教学和在线学习,教师可以绘制图形、写字、讲解概念,学生可以实时参与互动和答题,提高学习效果。

三、本次实践环境介绍

3.1 环境规划

本次实践为个人测试环境,操作系统版本为centos7.6。

hostname IP地址 操作系统版本 内核版本 node.js版本 服务器类别
jeven 192.168.3.166 centos 7.6 3.10.0-957.el7.x86_64 v16.17.0 本地服务器

3.2 本次实践介绍

1.本次实践部署环境为个人测试环境,生产环境请谨慎;
2.在centos7.6环境下部署excalidraw-cn白板工具;
3.在腾讯云Cloud Studio平台下部署excalidraw-cn。

3.3 环境要求

系统要求:

  • ✅ Major Linux distros such as Debian, Ubuntu, CentOS, Fedora and ArchLinux etc.
  • ✅ Windows 10 (x64), Windows Server 2012 R2 (x64) or higher
  • ❌ Replit / Heroku

node.js和npm版本要求:

  • Node.js 14 / 16 / 18 / 20.4
  • npm >= 7

四、在本地部署excalidraw-cn

4.1 检查本地环境

检查本地操作系统版本,当前操作系统版本为centos7.6。

[root@ecs-52b7 ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)

检查系统内核版本,当前内核版本为3.10.0-1160.92.1.el7.x86_64。

[root@ecs-52b7 ~]#  uname -r
3.10.0-1160.92.1.el7.x86_64

检查系统是否安装Node.js

[root@ecs-52b7 ~]# node -v
-bash: node: command not found

4.2 部署Node.js 环境

下载Node.js安装包,下载版本为v16.17.0。

wget https://nodejs.org/dist/v16.17.0/node-v16.17.0-linux-x64.tar.xz

执行以下命令,解压Node.js软件包。

tar -xvJf node-v16.17.0-linux-x64.tar.xz

请在此添加图片描述

采用创建软链接的方法,使得在任意目录下都可以直接使用node和npm命令。

ln -s  /root/node-v16.17.0-linux-x64/bin/node /usr/local/bin/node
ln -s  /root/node-v16.17.0-linux-x64/bin/npm /usr/local/bin/npm

配置环境变量,在/etc/profile文件中,新增以下两行:

vim /etc/profile
export NODE_HOME=/root/node-v16.17.0-linux-x64/bin/
export PATH=$PATH:$NODE_HOME:/usr/local/bin/

执行以下命令,使环境变量生效。

source /etc/profile

查看Node.js版本,当前使用版本为v16.17.0。

[root@ecs-52b7 ~]# npm -v
8.15.0
[root@ecs-52b7 ~]# node -v
v16.17.0

4.3 设置npm镜像源

  • npm设置国内淘宝镜像源
npm config set registry https://registry.npmmirror.com
  • 查看npm镜像源
[root@jeven ~]# npm get registry
https://registry.npmmirror.com/

4.4 安装yarn工具

Yarn是由Facebook开发和开源的一个用于管理项目依赖关系的工具。它是一个替代npm的工具,能够提供更快的依赖包下载速度和更好的依赖管理功能。Yarn能够保证依赖包的版本一致性,确保项目的稳定性和可靠性。它被广泛用于JavaScript项目中,特别是在React和Node.js项目中。Yarn的出现大大提高了项目开发的效率和依赖管理的可靠性,成为很多开发者首选的工具之一。

  • 使用npm全局安装yarn
 npm install -g yarn
  • 检查yarn版本
[root@jeven ~]# yarn --version
1.22.19
  • 设置国内镜像源
[root@jeven ~]# yarn  config set registry https://registry.npmmirror.com
yarn config v1.22.21
success Set "registry" to "https://registry.npmmirror.com".
Done in 0.07s.

4.5 下载excalidraw-cn源码

执行以下命令,在github拉取excalidraw-cn源码。

 git clone https://github.com/korbinzhao/excalidraw-cn.git

请在此添加图片描述

查看excalidraw-cn源码目录

[root@jeven ~]# tree -L 2 ./excalidraw-cn/
./excalidraw-cn/
├── CHANGELOG.md
├── CONTRIBUTING.md
├── crowdin.yml
├── dev-docs
│   ├── babel.config.js
│   ├── docs
│   ├── docusaurus.config.js
│   ├── package.json
│   ├── README.md
│   ├── sidebars.js
│   ├── src
│   ├── static
│   ├── tsconfig.json
│   └── yarn.lock
├── docker-compose.yml
├── Dockerfile
├── firebase-project
│   ├── firebase.json
│   ├── firestore.indexes.json
│   ├── firestore.rules
│   └── storage.rules
├── LICENSE
├── package.json
├── public
│   ├── apple-touch-icon.png
│   ├── Assistant-Bold.woff2
│   ├── Assistant-Medium.woff2
│   ├── Assistant-Regular.woff2
│   ├── Assistant-SemiBold.woff2
│   ├── Cascadia.ttf
│   ├── Cascadia.woff2
│   ├── favicon.ico
│   ├── FG_Virgil.ttf
│   ├── FG_Virgil.woff2
│   ├── fonts.css
│   ├── _headers
│   ├── index.html
│   ├── logo-180x180.png
│   ├── manifest.json
│   ├── og-fb-v1.png
│   ├── og-general-v1.png
│   ├── og-image.png
│   ├── og-image-sm.png
│   ├── og-twitter-v1.png
│   ├── robots.txt
│   ├── screenshots
│   ├── Virgil.woff2
│   ├── workbox
│   ├── YangRenDongZhuShiTi-Light-2.ttf
│   └── YeZiGongChangCangNanShouJi-2.ttf
├── README.md
├── scripts
│   ├── autorelease.js
│   ├── buildDocs.js
│   ├── build-locales-coverage.js
│   ├── build-node.js
│   ├── build-version.js
│   ├── locales-coverage-description.js
│   ├── prerelease.js
│   ├── release.js
│   └── updateChangelog.js
├── src
│   ├── actions
│   ├── align.ts
│   ├── analytics.ts
│   ├── appState.ts
│   ├── bug-issue-template.js
│   ├── charts.test.ts
│   ├── charts.ts
│   ├── clients.ts
│   ├── clipboard.test.ts
│   ├── clipboard.ts
│   ├── colors.ts
│   ├── components
│   ├── constants.ts
│   ├── css
│   ├── css.d.ts
│   ├── data
│   ├── distribute.ts
│   ├── element
│   ├── errors.ts
│   ├── excalidraw-app
│   ├── gadirections.ts
│   ├── galines.ts
│   ├── gapoints.ts
│   ├── gatransforms.ts
│   ├── ga.ts
│   ├── gesture.ts
│   ├── global.d.ts
│   ├── groups.ts
│   ├── history.ts
│   ├── hooks
│   ├── i18n.ts
│   ├── index-node.ts
│   ├── index.tsx
│   ├── jotai.ts
│   ├── keys.ts
│   ├── locales
│   ├── math.test.ts
│   ├── math.ts
│   ├── packages
│   ├── points.ts
│   ├── polyfill.ts
│   ├── pwacompat.d.ts
│   ├── random.ts
│   ├── react-app-env.d.ts
│   ├── renderer
│   ├── scene
│   ├── serviceWorkerRegistration.ts
│   ├── service-worker.ts
│   ├── setupTests.ts
│   ├── shapes.tsx
│   ├── tests
│   ├── types.ts
│   ├── utils.ts
│   └── zindex.ts
├── tsconfig.json
├── tsconfig-types.json
├── vercel.json
└── yarn.lock

22 directories, 98 files

4.6 启动excalidraw-cn服务

进入excalidraw-cn目录

[root@jeven ~]# cd excalidraw-cn/
[root@jeven excalidraw-cn]# ls
CHANGELOG.md     crowdin.yml  docker-compose.yml  firebase-project  package.json  README.md  src            tsconfig-types.json  yarn.lock
CONTRIBUTING.md  dev-docs     Dockerfile          LICENSE           public        scripts    tsconfig.json  vercel.json

执行以下命令,安装相关依赖

yarn 

请在此添加图片描述

等待依赖项安装完毕后,执行以下命令,直接启动excalidraw-cn服务。

yarn start

请在此添加图片描述

如果想要后台启动excalidraw-cn服务,并将日志输出到/var/log/excalidraw.log文件中,可以执行以下命令。

 nohup yarn start  >> /var/log/excalidraw.log 2>&1 &

我们可以通过jobs命令,查看后台正在运行的服务。

[root@jeven excalidraw-cn]# jobs
[1]+  Running                 nohup yarn start >> /var/log/excalidraw.log 2>&1 &

4.7 防火墙和selinux设置

  • 设置selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
setenforce 0
  • 关闭防火墙,如果想要开启防火墙,则需放行80端口。
systemctl stop firewalld && systemctl disable firewalld

4.8 访问excalidraw-cn服务

访问地址:http://192.168.3.166:3000/,将IP替换为自己服务器IP地址,访问excalidraw-cn的web首页。

请在此添加图片描述

五、使用web服务器访问excalidraw-cn

5.1 构建项目

进入excalidraw-cn目录下

[root@jeven excalidraw-cn]# ls
CHANGELOG.md     crowdin.yml  docker-compose.yml  firebase-project  node_modules  public     scripts  tsconfig.json        vercel.json
CONTRIBUTING.md  dev-docs     Dockerfile          LICENSE           package.json  README.md  src      tsconfig-types.json  yarn.lock

执行以下命令,构建项目,打包生产版本到 build/目录下。

yarn build

请在此添加图片描述

5.2 安装httpd软件

安装httpd软件

 yum -y install httpd

启动httpd服务

systemctl enable --now httpd

查看httpd服务状态

[root@jeven excalidraw-cn]# systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2024-02-01 21:57:09 CST; 25s ago
     Docs: man:httpd(8)
           man:apachectl(8)
 Main PID: 24123 (httpd)
   Status: "Total requests: 0; Current requests/sec: 0; Current traffic:   0 B/sec"
    Tasks: 6
   Memory: 33.0M
   CGroup: /system.slice/httpd.service
           ├─24123 /usr/sbin/httpd -DFOREGROUND
           ├─24124 /usr/sbin/httpd -DFOREGROUND
           ├─24125 /usr/sbin/httpd -DFOREGROUND
           ├─24126 /usr/sbin/httpd -DFOREGROUND
           ├─24127 /usr/sbin/httpd -DFOREGROUND
           └─24128 /usr/sbin/httpd -DFOREGROUND

Feb 01 21:57:08 jeven systemd[1]: Starting The Apache HTTP Server...
Feb 01 21:57:09 jeven systemd[1]: Started The Apache HTTP Server.

5.3 拷贝相关文件

将 build/目录内容拷贝到/var/www/html网站目录下

cp -r ./build/* /var/www/html/

执行以下命令,重启httpd服务。

systemctl restart httpd

5.4 访问excalidraw-cn服务

在本地浏览器,输入地址:http://192.168.3.166/,将IP替换为自己服务器的IP地址,访问excalidraw-cn首页。

请在此添加图片描述

六、Cloud Studio平台下部署excalidraw-cn

6.1 新建工作空间

登录Cloud Studio平台,选择新建工作空间。

请在此添加图片描述

空间名称:excalidraw-cn
空间描述:excalidraw-cn
工作类别:选择托管空间
代码来源:选择空间模板
空间模板:选择Node.js
规格:选择免费版即可。

请在此添加图片描述

请在此添加图片描述

6.2 下载excalidraw-cn源码

在Cloud Studio界面的终端区域,点击“+”旁的下拉选项,选择新建bash终端。

请在此添加图片描述

拉取excalidraw-cn源码

git clone https://github.com/korbinzhao/excalidraw-cn.git

请在此添加图片描述

查看源码目录

root@ws-wrfskl-0:/workspace/nodejs-cloud-studio-demo# ls excalidraw-cn/
CHANGELOG.md  CONTRIBUTING.md  crowdin.yml  dev-docs  docker-compose.yml  Dockerfile  firebase-project  LICENSE  package.json  public  README.md  scripts  src  tsconfig.json  tsconfig-types.json  vercel.json  yarn.lock

6.3 安装相关依赖

进入excalidraw-cn/目录

root@ws-wrfskl-0:/workspace/nodejs-cloud-studio-demo/excalidraw-cn# ls
CHANGELOG.md  CONTRIBUTING.md  crowdin.yml  dev-docs  docker-compose.yml  Dockerfile  firebase-project  LICENSE  package.json  public  README.md  scripts  src  tsconfig.json  tsconfig-types.json  vercel.json  yarn.lock

安装相关依赖

root@ws-wrfskl-0:/workspace/nodejs-cloud-studio-demo# yarn 

请在此添加图片描述

6.4 编辑preview.yml文件

停止demo测试应用,在 .vscode/preview.yml文件中,修改preview.yml文件。

# .vscode/preview.yml
autoOpen: true # 打开工作空间时是否自动开启所有应用的预览
apps:
  - port: 3000 # 应用的端口
    run: yarn start  # 应用的启动命令
    root: ./excalidraw-cn # 应用的启动目录
    name: excalidraw-cn # 应用名称
    description: excalidraw-cn # 应用描述
    autoOpen: true # 打开工作空间时是否自动运行命令(优先级高于根级 autoOpen)
    autoPreview: true # 是否自动打开预览, 若无则默认为true

请在此添加图片描述

6.5 启动excalidraw-cn服务

点击preview.yml文件的刷新按钮,自动启动excalidraw-cn服务。

请在此添加图片描述

当出现以下提示,表示excalidraw-cn服务已成功运行,且在预览页面可以正常访问到excalidraw-cn首页。

请在此添加图片描述

在本地电脑,复制预览页面链接到本地浏览器,可以访问到excalidraw-cn服务。

请在此添加图片描述

请在此添加图片描述

七、总结

Node.js是一个非常适合构建高性能、可扩展的应用程序的平台,它能够快速地处理大量的并发请求,并且具有简单和灵活的部署过程。通过正确管理版本、依赖关系和安全性,以及进行性能优化,可以确保部署的Node.js项目在生产环境中稳定和可靠地运行。同时,使用yarn工具可以更快、更稳定、更方便地管理项目依赖包,提高开发效率和项目的可靠性。在部署excalidraw-白板工具时,首先需要确保Node.js和npm(或yarn)已经正确安装。然后,通过克隆项目代码库、安装依赖、配置环境变量、构建打包和部署到web服务器等步骤,可以完成excalidraw-cn白板工具的部署。最终,通过访问指定URL或域名,可以开始使用excalidraw-cn白板工具进行协作和绘图。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。