内网 Ubuntu 20.04 搭建 docusaurus 项目(或前端项目)的环境

背景

内网开发机是 win7,只能安装 node 14 以下,而 spug 的文档项目采用的是 Facebook 的 docusaurus,需要 node 14 以上才能构建、打包,所以决定借助另一台 ubuntu 20.04 的机器来对这个文档项目进行二次开发。

Tip:这里 docusaurus 指的是 spug 开源项目的官方文档项目。前些天发现该官网仓库已找不到了。

远程工具

借助远程工具,即通过 win7 来远程控制 ubuntu,在 ubuntu 上进行开发。

思路(mobaxterm + tigerVnc)

客户端使用 mobaxterm,服务端使用 tigerVnc。

Tip: VNC(Virtual Network Console)是虚拟网络控制台的缩写。它是一款优秀的远程控制工具软件,由著名的 AT&T 的欧洲研究实验室开发的。

具体做法如下,首先在 ubuntu 中配置 tigerVnc,并启动服务,然后在 win7 中 通过 mobaxterm 连接 vnc:

增加用户 vncuser1

pengjiali@pengjiali:~$ sudo adduser vncuser1
正在添加用户"vncuser1"...
正在添加新组"vncuser1" (1003)...
正在添加新用户"vncuser1" (1003) 到组"vncuser1"...
创建主目录"/home/vncuser1"...
正在从"/etc/skel"复制文件...
新的 密码:
重新输入新的 密码:
passwd:已成功更新密码
正在改变 vncuser1 的用户信息
请输入新值,或直接敲回车键以使用默认值
全名 []:
房间号码 []:
工作电话 []:
家庭电话 []:
其它 []: 这些信息是否正确? [Y/n] Y
pengjiali@pengjiali:~$

切换用户:

pengjiali@pengjiali:~$ su - vncuser1
密码:
vncuser1@pengjiali:~$

:以下操作都是在 vncuser1 下进行

通过 apt 命令搜索 tigervnc 软件。

Tip:倘若不能搜索到 tigervnc 相关软件包,请自行处理。

vncuser1@pengjiali:~$ apt search tigervnc
正在排序... 完成
全文搜索... 完成
tigervnc-common/focal,focal 1.10.1+dfsg-3 amd64
Virtual network computing; Common software needed by servers tigervnc-scraping-server/focal,focal 1.10.1+dfsg-3 amd64
Virtual network computing server performing X screen scraping tigervnc-standalone-server/focal,focal 1.10.1+dfsg-3 amd64
Standalone virtual network computing server tigervnc-viewer/focal,focal 1.10.1+dfsg-3 amd64
Virtual network computing client for X tigervnc-xorg-extension/focal,focal 1.10.1+dfsg-3 amd64
Virtual network computing X server extension

这里有五个软件包,笔者只安装第三个(tigervnc-standalone-server):

vncuser1@pengjiali:~$ sudo apt install tigervnc-standalone-server
[sudo] vncuser1 的密码:
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
将会同时安装下列软件:
libfile-readbackwards-perl tigervnc-common
建议安装:
xfonts-100dpi | xfonts-75dpi
下列【新】软件包将被安装:
libfile-readbackwards-perl tigervnc-common tigervnc-standalone-server
升级了 0 个软件包,新安装了 3 个软件包,要卸载 0 个软件包,有 134 个软件包未被升级。
需要下载 1,097 kB 的归档。
解压缩后会消耗 3,088 kB 的额外空间。
您希望继续执行吗? [Y/n] y
获取:1 https://mirrors.tuna.tsinghua.edu.cn/ubuntu focal/universe amd64 libfile-readbackwards-perl all 1.05-2 [10.8 kB]
获取:2 https://mirrors.tuna.tsinghua.edu.cn/ubuntu focal/universe amd64 tigervnc-common amd64 1.10.1+dfsg-3 [69.0 kB]
获取:3 https://mirrors.tuna.tsinghua.edu.cn/ubuntu focal/universe amd64 tigervnc-standalone-server amd64 1.10.1+dfsg-3 [1,017 kB]
已下载 1,097 kB,耗时 1秒 (943 kB/s)
正在选中未选择的软件包 libfile-readbackwards-perl。
(正在读取数据库 ... 系统当前共安装有 333379 个文件和目录。)
准备解压 .../libfile-readbackwards-perl_1.05-2_all.deb ...
正在解压 libfile-readbackwards-perl (1.05-2) ...
正在选中未选择的软件包 tigervnc-common。
准备解压 .../tigervnc-common_1.10.1+dfsg-3_amd64.deb ...
正在解压 tigervnc-common (1.10.1+dfsg-3) ...
正在选中未选择的软件包 tigervnc-standalone-server。
准备解压 .../tigervnc-standalone-server_1.10.1+dfsg-3_amd64.deb ...
正在解压 tigervnc-standalone-server (1.10.1+dfsg-3) ...
正在设置 libfile-readbackwards-perl (1.05-2) ...
正在设置 tigervnc-common (1.10.1+dfsg-3) ...
update-alternatives: 使用 /usr/bin/tigervncconfig 来在自动模式中提供 /usr/bin/vncconfig (vncconfig)
update-alternatives: 使用 /usr/bin/tigervncpasswd 来在自动模式中提供 /usr/bin/vncpasswd (vncpasswd)
正在设置 tigervnc-standalone-server (1.10.1+dfsg-3) ...
update-alternatives: 使用 /usr/bin/tigervncserver 来在自动模式中提供 /usr/bin/vncserver (vncserver)
update-alternatives: 使用 /usr/bin/Xtigervnc 来在自动模式中提供 /usr/bin/Xvnc (Xvnc)
正在处理用于 man-db (2.9.1-1) 的触发器 ...

通过 vncpasswd 配置一下密码(后续 win7 通过 vnc 连接时需要使用此密码):

vncuser1@pengjiali:~$ vncpasswd
Password:
Verify:
Would you like to enter a view-only password (y/n)? n

:笔者选择 n

启动 vnc 服务:

vncuser1@pengjiali:~$ vncserver
/usr/bin/xauth: file /home/vncuser1/.Xauthority does not exist New 'pengjiali:1 (vncuser1)' desktop at :1 on machine pengjiali Starting applications specified in /etc/X11/Xvnc-session
Log file is /home/vncuser1/.vnc/pengjiali:1.log Use xtigervncviewer -SecurityTypes VncAuth -passwd /home/vncuser1/.vnc/passwd :1 to connect to the VNC server.

查看 VNC 服务器 session:

vncuser1@pengjiali:~$ vncserver -list

TigerVNC server sessions:

X DISPLAY #     RFB PORT #      PROCESS ID
:1 5901 28871

现在有一个 vnc session,但只接受来自 localhost 的 VNC 连接。所以先关闭这个无用的 vnc 服务:

vncuser1@pengjiali:~$ vncserver -kill :1
// 关闭所有
// vncuser1@pengjiali:~$ vncserver -kill :*
Killing Xtigervnc process ID 28871... success!

再次查看,发现服务已关闭:

vncuser1@pengjiali:~$ vncserver -list
TigerVNC server sessions: X DISPLAY # RFB PORT # PROCESS ID

启动一个可用的 vnc 服务,即关闭 localhost 访问限制:

vncuser1@pengjiali:~$ vncserver -localhost no

New 'pengjiali:1 (vncuser1)' desktop at :1 on machine pengjiali

Starting applications specified in /etc/X11/Xvnc-session
Log file is /home/vncuser1/.vnc/pengjiali:1.log Use xtigervncviewer -SecurityTypes VncAuth,TLSVnc -passwd /home/vncuser1/.vnc/passwd pengjiali:1 to connect to the VNC server.

Tip: 以某个端口启动 vncserver -localhost no :5,vnc连接端口则为 5905(5900+5

vncuser1@pengjiali:~$ vncserver -list

TigerVNC server sessions:

X DISPLAY #     RFB PORT #      PROCESS ID
:1 5901 30645

在 win7 中通过 mobaXterm 连接 ubuntu。

点击”session“,在弹框中切换到 VNC,然后输入 Ubuntu 的 ip,端口输入 5901,点击”OK“,顺利的话就进入了 ubuntu 的界面系统。

进入桌面退出,如图所示:

请看,用户名现在就显示 vncuser1。我们之前的操作就是在这个用户下进行的。

:1. 现在有个问题,进入桌面注销后,输入错的密码会提示密码错误,但输入对的密码却也不能再次进入桌面,而且没任何提示。笔者目前的解决办法是:设置从不息屏;2. 帮同事安装,通过 mobaXterm 链接 vnc,进入桌面后黑屏,无法使用

不在sudoers文件中,此事将被报告

vncuser1 用户下安装 tigervnc 报错:不在sudoers文件中,此事将被报告

vncuser1@pengjiali:~$ sudo apt install tigervnc-standalone-server
[sudo] vncuser1 的密码:
vncuser1 不在 sudoers 文件中。此事将被报告。

解决如下:

切换 root 用户:

vncuser1@pengjiali:~$ su
密码:

查看 /etc/sudoers 文件权限,如果只读权限,修改为可写权限

root@pengjiali:/home/vncuser1# ls -l /etc/sudoers
-r--r----- 1 root root 755 2月 3 2020 /etc/sudoers
root@pengjiali:/home/vncuser1# chmod u+w /etc/sudoers
root@pengjiali:/home/vncuser1# ls -l /etc/sudoers
-rw-r----- 1 root root 755 2月 3 2020 /etc/sudoers

添加要提升权限的用户。在文件中找到root ALL=(ALL:ALL) ALL,添加用户信息:

root@pengjiali:/home/vncuser1# vim /etc/sudoers
root    ALL=(ALL:ALL) ALL
// 新增用户
vncuser1 ALL=(ALL:ALL) ALL

保存退出。并恢复 /etc/sudoers 的访问权限为 440。

root@pengjiali:/home/vncuser1# chmod 440 /etc/sudoers

再次切换到 vncuser 重新安装即可。

NFS

远程控制 ubuntu 开发,体验不好,比较卡,决定使用 NFS。

Tip:网络文件系统,英文Network File System(NFS),是由SUN公司研制的UNIX表示层协议(presentation layer protocol),能使使用者访问网络上别处的文件就像在使用自己的计算机一样。

思路

将项目放在 win7 中,通过 nfs 共享给 utuntu,在 win7 这边开发,然后在 ubuntu 上访问该项目并编译。

步骤如下:

win7 安装 nfs 服务器。笔者使用 hanewin-nfs-server

Tip:内网有此软件,笔者请自行下载安装,安装成功后,界面如下:

安装完成,对输出进行配置,即点击”Edit exports file“:

输入如下信息,编辑完成后,点击【Restart Server】按钮重启 nfs 服务。

// 将 spug_docs 共享给 192.168.20.112~192.168.20.253 的机器,暴露出去的名字是 nfs(名字随便起)
d:\spug\spug_docs -name:nfs -range 192.168.20.112 192.168.20.253 -public

Tip:spug_docs 是 笔者在 win7 中的项目,需要通过 ubuntu 编译打包。:nfs 冒号后是名字,ubuntu 中会使用到。ip 范围自己定义,ubuntu 机器的 ip 得在此范围内。

:关闭 win7 防火墙。否则 ubuntu 连不上

接着在 ubuntu 中访问 spug_docs:

sudo mount -t nfs 192.168.1.115:nfs /home/vncuser1/tmp/nfsdir -o nolock

192.168.1.115 是 win7 的 ip,:nfs 与 win7 中配置的命名得保持一致,nfsdir 是一个空目录,用于挂载。

挂载成功后,进入 nfsdir 就应该能看到 psug_docs 项目的文件。

Tip:卸载此挂载点可使用 umount /home/vncuser1/tmp/nfsdir

nfs 的缺陷

现在可以在 win7 中修改 spug_docs 项目,然后在 ubuntu 中编译,发现如下两个问题:

中文文件导致编译失败

在 ubuntu 中运行 npm run start 报错。

发现是中文引起的。某文件夹中两个中文文件(xxx主机管理.xx)在 ubuntu 中没有,将文件改为英文,例如 xxxzhujiguanli.xx,引用处也一起改掉,再次运行即可。

未触发自动编译

通常,编辑文件,node 工程会自动编译,刷新浏览器也能看到变更,很方便。

现在在 win7 中修改项目,ubuntu 中通过 cat 也能发现文件已变更,但浏览器却看不到效果,如果直接在 ubuntu 中修改文件,浏览器是可以看到变更的。

:倘若将 spug_docs 直接放到 ubuntu 中运行,不使用 nfs 的方式,就没有这两个问题。

其他

ubantu 安装 node

内网通过 apt install nodejs,发现 node 版本过低,只有 10。

接着通过 node 官网,找到”基于 Debian 和 Ubuntu 的 Linux 发行版“栏目,进入Node.js 二进制发行版,运行如下两行命令安装 node 18:

curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -

sudo apt-get install -y nodejs

但笔者的 ubuntu 在内网,直接在外网运行如下命名,首先查看是否有 nodejs 相关包,然后下载:

$ apt-cache search nodejs

$ sudo apt-get download nodejs

Tip:公司外网的机器可能已经配置好源,笔者没管,直接使用。

将下载的 node 包导入内网,运行如下命令安装即可:

$sudo dpkg -i nodejs_18.3.0-deb-1nodesource1_amd64.deb

zip

win7 传项目给 ubuntu,可以在 win7 中使用 zip 压缩,然后在 ubuntu 使用 tar 解压

内网 Ubuntu 20.04 搭建 docusaurus 项目(或前端项目)的环境(mobaxterm、tigervnc、nfs、node)的更多相关文章

  1. 【netcore基础】ubuntu 16.04 搭建.net core 2.1 linux 运行环境 nginx反向代理 supervisor配置自启动

    今天来整理下 netcore 在 linux(ubuntu) 上的运行环境搭建 对应版本 ubuntu 16.04 .net core 2.1 nginx version: nginx/1.10.3 ...

  2. Ubuntu 20.04 搭建 LAMP 环境

    LAMP环境即Linux下配置Apache.Mysql.Php,话不多说 GO ! 0.下载之前先更新一波: 更新源 sudo apt-get update 更新软件 sudo apt-get upg ...

  3. ubuntu 18.04 搭建flask服务器(大合集,个人实操)

    ubuntu 18.04 搭建flask服务器(大合集) Ubuntu python flask 服务器 本次使用的Ubuntu版本为:Ubuntu 18.04.5 LTS (GNU/Linux 4. ...

  4. Ubuntu 20.04 Docker 安装并配置

    前言 Docker 的使用能极大地方便我们的开发,减少环境搭建,依赖安装等繁琐且容易出错的问题. 安装 Docker Ubuntu 20.04 官方 apt 源中就有 Docker,我们可以直接通过 ...

  5. Ubuntu 12.04 搭建 Eclipse Android 开发环境(转)

    Ubuntu 12.04 搭建 Eclipse Android 开发环境 http://blog.sina.com.cn/s/blog_93dc666c0101b39p.html (2012-09-0 ...

  6. win10 + Ubuntu 20.04 LTS 双系统 引导界面美化

    版权声明:本文为CSDN博主「ZChen1996」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明. 原文链接:https://blog.csdn.net/ZChen1 ...

  7. Windows10 + Ubuntu 20.04 LTS 双系统安装 (UEFI + GPT)(图文,多图预警)

    版权声明:本文为CSDN博主「ZChen1996」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明. 原文链接:https://blog.csdn.net/ZChen1 ...

  8. Ubuntu 20.04上通过Wine 安装微信

    没有想过会在一个手机软件上花这么多心思,好在今天总算安装成功,觉得可以记录下这个过程,方便他人方便自己. 首先介绍下我使用过的其他方法,希望可以节省大家一些时间: Rambox Pro:因为原理是网页 ...

  9. OpenCV4.4.0 安装测试 Installation & Examination (Ubuntu18.04, Ubuntu 20.04)

    OpenCV4.4.0 安装测试 Installation & Examination (Ubuntu18.04, Ubuntu 20.04) 单纯简单的 OpenCV 安装配置方法,在这个地 ...

随机推荐

  1. Vue Element ui密码框校验

    <el-form-item prop="repeat_Password" class="userName_color"> <el-input ...

  2. CommonsCollection6反序列化链学习

    CommonsCollection6 1.前置知识 1.1.HashSet HashSet 基于 HashMap 来实现的,是一个不允许有重复元素的集合.继承了序列化和集合 构造函数参数为空的话创建一 ...

  3. 第一阶段:Java基础之OOP

    OOP:面向对象编程 三大特征: 封装 继承 多态

  4. python中其他数据类型内置方法

    补充字符串数据类型内置方法 1.移除字符串首尾的指定字符可以选择方向1: s1 = '$$$jason$$$' print(s1.strip('$')) # jason print(s1.lstrip ...

  5. Vue基础开发入门之简单语法知识梳理(思维导图详解)

    基于个人写的以下关于Vue框架基础学习的三篇随笔,在此基础上,做一个阶段性的知识总结,以此来检验自己对Vue这一段时间学习的成果,内容不多,但很值得一看.(思维导图详解)

  6. Java-GUI编程之处理位图

    如果仅仅绘制一些简单的几何图形,程序的图形效果依然比较单调 . AWT 也允许在组件上绘制位图, Graphics 提供了 drawlmage() 方法用于绘制位图,该方法需要一个Image参数一一代 ...

  7. WMS、WFS、WCS、WPS、WMTS、WMSC、TMS等常见地图服务的区别

    WebGIS的开发者经常需要面对各种地图服务规范,例如WMS.WFS.WCS.WPS.WMTS.TMS.WMSC等.因此了解这些服务的内容是相当重要的,这里对常见的服务进行了整理. OGC联盟: 开放 ...

  8. Python学习笔记: pip install 常见错误汇总

    本机环境RHEL8, Python3.9 pip install: 无法安装最新版本的包 在pypi上查看pkg的页面,因为有些pip包的版本对特定的python版本有要求 pip install e ...

  9. 技术分享 | Web自动化之Selenium安装

    Web 应用程序的验收测试常常涉及一些手工任务,例如打开一个浏览器,并执行一个测试用例中所描述的操作.但是手工执行的任务容易出现人为的错误,也比较费时间.因此,将这些任务自动化,就可以消除人为因素.S ...

  10. 动态SQL常用标签

    动态 SQL 目的:为了摆脱在不同条件拼接 SQL 语句的痛苦 在不同条件在生成不同的SQL语句 本质上仍然是SQL语句,不过是多了逻辑代码去拼接SQL,只要保证SQL的正确性按照格式去排列组合 可以 ...