Install micro-services debugging in a local LAN environment

From MIT Technology Roadmapping
Jump to navigation Jump to search

现状

给学生个人电脑安装微服务时,由于网络问题,下载必要文件缓慢,并且出现频繁报错,安装不完全的问题,因此实现局域网内安装微服务势在必行。

  • 本调试工作均在局域网ToyhouseNetwork(及其扩展路由器)环境下进行
  1. 个人PC安装(Windows & Mac两种环境下安装)
  2. 多台机器同时进行安装
  • 已在toyhouse办公室构建两台服务器提供局域网安装下载服务
  1. dev机器(黑色大机箱 IP:192.168.1.103)提供VirtualBox安装包、Ubuntu虚拟机镜像、自动部署脚本以及部分Ubuntu软件的deb包(可选)
  2. www机器(黑色小机箱 IP:192.168.1.131)提供局域网apt源(源来自清华大学开源镜像站),目前只支持Ubuntu18.04

调试过程记录

Windows环境下个人电脑

  • 浏览器输入192.168.1.103,下载“VirtualBox-6.0.6-130049-Win.exe”至本地并安装
  • 下载“ubuntu-18.04.1-desktop-amd64.iso”,在VirtualBox中新建一个虚拟机并用这个镜像安装
  • 下载1.8GB的镜像文件很缓慢(25分钟)
  • 新建虚拟机配置:
类型:Linux
版本:Oracle(64-bit)
内存:4096MB (一般根据个人电脑配置,分配一半的内存即可,内存消耗不大,2048MB也够用)
虚拟硬盘:VDI(VirtualBox磁盘映像)30GB
  • 安装镜像文件报错,“内存不能written” ----未对虚拟机进行设置
  • 设置虚拟机:
系统CPU(处理器):2
显示显卡:128MB(设置到最大)
存储盘片:ubuntu-18.04.1-desktop-amd64.iso
  • 安装Ubuntu镜像文件,成功
  • 进入Ubuntu,浏览器输入192.168.1.131,下载sources.list文件
  • 打开Git Bash,sudo su进入root,密码是安装虚拟机时设置的密码
  • 备份Ubuntu自带sources.list文件 $ [sudo] cp /etc/apt/sources.list /etc/apt/sources.list.bak
  • 用已下载的source.list覆盖系统自带的该文件 $ [sudo] cp -f ./sources.list /etc/apt/sources.list
  • 更新源的相关配置文件 $ [sudo] apt-get update
  • 安装git和docker (相当于从局域网apt源更新安装git和docker)$ [sudo] apt-get install -y git docker.io
  • 浏览器输入192.168.1.103,下载自动部署脚本"XLP_system_updates-master.zip",解压缩
  • 进入到自动部署脚本所在文件夹(根据自己的下载的情况路径不同) $ cd /home/jojo/Downloads/XLP_system_updates-master (以下所有操作均在此目录下进行)
  • 系统环境配置
  • $ chmod 755 ./*.sh
  • $ ./setup_env.sh (此过程约4分钟以内)
  • Docker配置
  • $ gedit /lib/systemd/system/docker.service 在第14行(ExecStart=开头的)最后面(-H fd://后面)加上 --insecure-registry 192.168.1.103:8082 --insecure-registry 192.168.1.103:8083
  • 安装微服务系统
  • $ ./setup_sys.sh (此过程约45分钟以内,其中:微服务大约30分钟,下载数据大约12分钟)
  • 配置微服务系统
  • $ gedit /etc/hosts 在前面加上 127.0.0.1 example.com (其中example.com可以改成自己想要的域名)
  • $ gedit basic_phabricator.yml 更改环境变量PHABRICATOR_HOST域名为自己的域名,如example.com:85
  • $ gedit /data/xlpsystem/mediawiki/LocalSettings.php 第33行和第145行改成自己的域名(或ip)和端口
  • $ gedit /data/xlpsystem/matomo/config/config.ini.php 第12行中的域名(或ip)和端口改成自己matomo对应的
  • Landing Page的部署
  • $ ./landingpage.sh
  • $ gedit /etc/nginx/sites-available/default 第17-21行,其中的跳转路径需要进行修改,即将前面的域名改成hosts中设定的自定义域名
  • $ /etc/init.d/nginx restart
  • 启动phabricator容器 docker-compose -f basic_phabricator.yml up -d
  • 登录matomo查看数据(xlp/W2qgpsLtQt)
  • 成功安装,但Landing Page动画没有加载,只有静态的内容

Mac环境下个人电脑

  • 浏览器输入192.168.1.103,下载“VirtualBox-6.0.6-130049-OSX.dmg”至本地并安装
  • 下载“ubuntu-18.04.1-desktop-amd64.iso”,在VirtualBox中新建一个虚拟机并用这个镜像安装
  • 下载1.8GB的镜像文件很快(25s)
  • 新建虚拟机配置:
类型:Linux
版本:Oracle(64-bit)
内存:8192MB
虚拟硬盘:VDI(VirtualBox磁盘映像)30GB
  • 设置虚拟机:
系统CPU(处理器):4
显示显卡:128MB(设置到最大)
存储盘片:ubuntu-18.04.1-desktop-amd64.iso
  • 安装Ubuntu镜像文件,成功
  • 进入Ubuntu,浏览器输入192.168.1.131,下载sources.list文件
  • 打开Terminal,sudo su进入root,密码是安装虚拟机时设置的密码
  • 备份Ubuntu自带sources.list文件 $ [sudo] cp /etc/apt/sources.list /etc/apt/sources.list.bak
  • 用已下载的source.list覆盖系统自带的该文件 $ [sudo] cp -f ./sources.list /etc/apt/sources.list
  • 更新源的相关配置文件 $ [sudo] apt-get update ( < 1 minute )
  • 安装git和docker (相当于从局域网apt源更新安装git和docker)$ [sudo] apt-get install -y git docker.io ( < 1.5 minute )
  • 浏览器输入192.168.1.103,下载自动部署脚本"XLP_system_updates-master.zip",解压缩
  • 进入到自动部署脚本所在文件夹(根据自己的下载的情况路径不同) $ cd /home/jojo/Downloads/XLP_system_updates-master (以下所有操作均在此目录下进行)
  • 系统环境配置
  • $ chmod 755 ./*.sh
  • $ ./setup_env.sh ( < 2.5 minute )
  • Docker配置
  • $ gedit /lib/systemd/system/docker.service 在第14行(ExecStart=开头的)最后面(-H fd://后面)加上 --insecure-registry 192.168.1.103:8082 --insecure-registry 192.168.1.103:8083
  • 安装微服务系统
  • $ ./setup_sys.sh (此过程约x分钟以内,待秒表重新计时)
  • 配置微服务系统
  • $ gedit /etc/hosts 在前面加上 127.0.0.1 example.com (其中example.com可以改成自己想要的域名)
  • $ gedit basic_phabricator.ym 更改环境变量PHABRICATOR_HOST域名为自己的域名,如example.com:85
  • $ gedit /data/xlpsystem/mediawiki/LocalSettings.php 第33行和第145行改成自己的域名(或ip)和端口
  • $ gedit /data/xlpsystem/matomo/config/config.ini.php 第12行中的域名(或ip)和端口改成自己matomo对应的
  • Landing Page的部署
  • $ ./landingpage.sh
  • $ gedit /etc/nginx/sites-available/default 第17-21行,其中的跳转路径需要进行修改,即将前面的域名改成hosts中设定的自定义域名
  • $ /etc/init.d/nginx restart
  • 启动phabricator容器 docker-compose -f basic_phabricator.yml up -d
  • 登录matomo查看数据(xlp/W2qgpsLtQt)
  • 成功安装,但Landing Page动画没有加载,只有静态的内容

多台机器同时安装

两台Mac同时一起安装(一台笔记本,一台一体机),步骤同上

  • 一体机下载Ubuntu镜像非常缓慢,有可能和性能有关 ---- 对于性能较差的机器,可以使用u盘进行拷贝
  • 一体机安装Ubuntu较慢,比笔记本多用时约0.5小时
  • 环境设置,一体机用时更长 $ ./setup_env.sh ( < 3.5 minute ),比笔记本多用时1分钟
  • 两台机器同时运行安装微服务脚本,用时2小时10分钟(笔记本用时2小时4分钟,一体机用时2小时10分钟)
  • 笔记本在最开始时报错,如下截图,报错具体影响待验证

File:20190516155511.jpg

  • 速度太慢主要还是远程Rsync,改为本地Rsync后,重新安装一台Mac笔记本,整个过程用时48分钟,其中安装微服务用时8分钟
  • 测试问题
  1. 主页动画无法加载 ---未解决
  2. 插件未更新 ---已解决
  3. virtualbox要新版本 已解决 VirtualBox-6.0.8
  4. Ubuntu要最新镜像 已解决 ubuntu-18.04.2
  5. 固定域名 vm.xlp.pub 已解决
  6. $ ./landingpage.sh本地加载 已解决
  • 多台机器安装待继续测试 ---- 已解决
  • 固定域名之后,很多配置都不需要再手动操作,安装完Ubuntu后,直接执行新的脚本 $ ./start_installation.sh (如果有权限问题,需要手动给脚本赋予755权限,执行脚本大约15分钟)
  • 配置网络与访问端口,使得主机可以访问虚拟机---其他都可以访问,只有wiki访问有问题,待继续测试(本地主机跑了另外一套微服务,停止该微服务即可)---成功
  • 测试,直接拷贝虚拟机备份文件至其他机器,使得其他机器不用再进行安装即可使用微服务 ----成功
  • 实现宿主机访问虚拟机设置,主要分为两步:1)虚拟机网络中端口转发设置 2)宿主机hosts文件设置(Windows 和 Mac 路径不同)

其他问题记录

  • Mac在拷贝虚拟机时遇到无法拷贝问题
  1. 格式化硬盘/U盘为ExFAT格式(否则大于4G的文件苹果限制无法拷贝)
  2. 此问题的另外一个解决方案是,在苹果笔记本上安装NTFS_for_Mac.dmg,这样苹果笔记本可以读取Windows格式下硬盘的所有数据(此方法来自和阿呆的闲聊,由阿呆提供)
  • 在给学生的Mac安装virtualbox时,报错“Kernel Driver Not loaded”(详细如下截图)
Go to Security and Privacy / General in your System Settings. You will see that software from Oracle has been blocked. Allow it, and the software will work. The 'allow Oracle' option only exists for 30mins after the installer error.

File:Error1.jpg

  • 在给学生的Windows安装virtualbox时,cpu无法进行设置(不支持硬件虚拟化)
  1. 控制面板-程序-添加关闭Window功能里,把Hyper-V关闭
  2. 在宿主机BIOS中开启硬件虚拟化支持(电脑一般默认不开启,2013年之后出的主板和CPU应该基本都是支持硬件虚拟化的,之前的则不一定)
  • 进入BIOS。开机时按F2或F12或DEL或ESC等键(各电脑有所不同)。
  • 进入BIOS后,找到Configuration选项,选择Intel Virtual Technology并回车,将光标移至Enabled,然后再回车,最后按F10保存并退出
  • 学生配置完成虚拟机端口转接以及完成主机hosts修改后,仍然无法实现宿主机访问虚拟机
  • 修改hosts时,增加ip对应的域名和端口时,最前面不要加“#” (“#”代表注释)
  • 在给罗教授Mac安装virtualbox时,安装失败
  • virtualbox在安装的时候需要安装内核扩展(Kernel extenstion),而Mac系统10.13以上版本 High Sierra的新安全特性会阻止外部内核扩展的安装,所以安装总是会被系统拦截。 进入Preferences > Security & Privacy > General: 然后手动允许即可

结果

  • Currently installed micro-services have :matomo, phabricator, wiki, wordpress, logstash, elasticsearch, kibana, parsoid, mariadb
  • Mac installed micro-services success

Zhoujing (talk) 04:22, 15 May 2019 (UTC)

  • Windows installed micro-services success

Zhoujing (talk) 07:05, 15 May 2019 (UTC)

  • 使用虚拟机文件,为其他机器安装微服务,成功(多台安装均使用这个方法)

Zhoujing (talk) 11:51, 20 May 2019 (UTC)

参考文献