内网 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. 微信小程序获取当前时间戳、获取当前时间、时间戳加减

    //获取当前时间戳 var timestamp = Date.parse(new Date()); timestamp = timestamp / 1000; console.log("当前 ...

  2. MySQL安装配置教程(超级详细)

    一. 下载MySQL Mysql官网下载地址:https://downloads.mysql.com/archives/installer/ 1. 选择要安装的版本,本篇文章选择的是5.7.31版本, ...

  3. SpringBoot注解自动扫描-底层实现

    分析上文Spring Boot快速入门 @SpringBootApplication public class HelloWorldApplication { public static void m ...

  4. linux目录结构知识

    1.系统目录结构介绍 1.目录结构特点 linux系统中的目录一切从根开始. Linux系统中的目录结构拥有层次. Linux系统中的目录需要挂载使用. 2.目录挂载初识 挂载的命令:mount mo ...

  5. 搭建springboot集成mybatis

    1.new project创建新项目选择spring initializr: 2.选择依赖需要选择web.mybatis.mysql就够了,后续需要其他的直接pom引入依赖就好了: 3.自己在java ...

  6. 伪元素 Before & Aster

    1. html 结构 <label class="is-required" for="name">姓名</label> <inpu ...

  7. Java函数的学习

    函数的定义 - 定义的位置:定义在类的内部 - 组成部分: 函数修饰符 类型 函数名(形式参数){ 局部变量: 注释: 函数体: } 函数的调用 - 调用函数时使用 : `函数名():` - 函数在执 ...

  8. 保姆级教程:VsCode调试docker中的NodeJS程序

    最近在写NodeJS相关的项目,运行在docker容器中,也是想研究一下断点调试,于是查阅相关资料,最终顺利配置好了. 首先我选择了VsCode作为ide,并用VsCode来做NodeJS可视化deb ...

  9. Linux和kali Linux 介绍

    常用的渗透测试平台 CTFTools kali (近亲 Ubuntu) Parrot Security OS PentestBox --由印度人开发,运行在Windows下的渗透测试环境 kali L ...

  10. Bugku练习题---MISC---啊哒

    Bugku练习题---MISC---啊哒 flag:flag{3XiF_iNf0rM@ti0n} 解题步骤: 1.观察题目,下载附件 2.下载以后发现是一张图片,从表面看没有什么有价值的信息 3.直接 ...