内网 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. MySQL---drop, delete, truncate的区别

    drop, delete, truncate的区别 删除内容 drop直接删除整个表, 包含表结构和数据; truncate删除表中数据, 表结构及其列, 约束, 索引等不变, 再插入时自增id又从1 ...

  2. springboot读取配置文件赋值给静态变量

    1.实现InitializingBean接口,重写afterPropertiesSet方法,将@Value赋值给成员变量的属性赋值给静态变量,示例如下: /** * @Classname FileUt ...

  3. 携程apollo配置中心服务端如何感知配置更新?

    引言 前面有写过一篇<分布式配置中心apollo是如何实时感知配置被修改>,也就是客户端client是如何知道配置被修改了,有不少读者私信我你既然说了client端是如何感知的,那服务端又 ...

  4. redis 知识点收集 注意理解底层

    学redis,首先要明白其特性,其次要理解明白redis与操作系统底层的关系,这点很重要.这是一个优秀的学习方法,作为计算机专业,应当时刻想着技术和操作系统计算机组成数据结构的联系,听起来有些书生气死 ...

  5. 《Mybatis 手撸专栏》第6章:数据源池化技术实现

    作者:小傅哥 博客:https://bugstack.cn - 手写Mybatis系列文章 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 码农,只会做不会说? 你有发现吗,其实很大一部分码农 ...

  6. .NET LoongArch64 正式合并进入.NET

    国内自主的龙芯,在做龙芯技术生态就把 .NET 作为其中一部分考虑进去,这也将对接下来国内.NET应用场景充满了期待.通过dotnet/runtime 可以知道现在龙芯版本的 .NET 已经合并到.N ...

  7. Markdown基础语法(上)

    前言 按照官方文档,和根据自己所用和所理解所写 一.标题语法 一级标题最大,六级标题最小 # 一级标题 ## 二级标题 ### 三级标题 #### 四级标题 ##### 五级标题 ###### 六级标 ...

  8. 异步编程利器:CompletableFuture

    一.一个示例回顾Future 一些业务场景我们需要使用多线程异步执行任务,加快任务执行速度. JDK5新增了Future接口,用于描述一个异步计算的结果.虽然 Future 以及相关使用方法提供了异步 ...

  9. maccms10二开批量入库和资源打包

    批量入库 因为maccms自带的采集采集起来很慢,而且很多资源站的采集接口不能对内容排序,导致最旧的数据最后入库.用java写个采集程序,采集完入库的时候发现不能一次性入库多个数据,导致入库也很慢,所 ...

  10. SQL连接查询优化[姊妹篇.第五弹]

    上篇的sql优化篇章,更多偏向于优化的思想概念,先前抛出的4个优化问题中,篇幅过长,只对前两个问题进行了解析. 接下来我们一起来谈谈sql的连接查询优化,更偏向于实际运用,并对如下两个问题进行探讨.篇 ...