• 内网 Ubuntu 20.04 搭建 docusaurus 项目(或前端项目)的环境(mobaxterm、tigervnc、nfs、node)


    内网 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。

    moba-vnc.png

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

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

    moba-vnc2.png

    请看,用户名现在就显示 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 23  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 23  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:内网有此软件,笔者请自行下载安装,安装成功后,界面如下:
    hanewin-nfs-server.jpg

    安装完成,对输出进行配置,即点击”Edit exports file“:
    hanewin-nfs-server.png

    输入如下信息,编辑完成后,点击【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 解压

  • 相关阅读:
    MySQL的基本使用
    向毕业妥协系列之机器学习笔记:高级学习算法-神经网络(一)
    jquery--遍历
    SimpleQA:OpenAI 开源评估大模型事实性的基准测试
    选好“建材”,为一座座数据孤岛搭起通车桥梁
    50分钟的Java面试,常见的问题都问到了
    ChatGPT 和 Midjourney 将改变我们的生活,日常工作流程将完全改变并与这些新型工具集成
    Go语言fyne开发桌面应用程序-环境安装
    STM8的C语言编程(11)--+切换时钟源
    【无标题】
  • 原文地址:https://www.cnblogs.com/pengjiali/p/16367920.html