使用windows虚拟机搭建Ubuntu分布式Web开发环境(一)
温馨提示:这篇文章已超过456天没有更新,请注意相关的内容是否还可用!
windows浏览器作为前端; 一个Ubuntu虚拟机运行web前端应用程序; Ubuntu 虚拟机运行业务层服务; Ubuntu 虚拟机运行数据层服务。使用Windows 10自带的Hyper-V安装虚拟机,并为每个虚拟机指定网卡Default Switch,以使用虚拟交换机功能。每个虚拟机都使用 DHCP 进行动态 IP 地址分配。windows主机的静态IP地址的设置就不详细说了。下面介绍Ubuntu Server环境下静态IP地址的设置。创建虚拟机并指定网络适配器Default Switch后,在windows主机的“network and internet”中添加虚拟网络“vEthernet”和“vEthernet”两个虚拟以太网适配器。修改配置后,执行$sudo netplan apply 使修改生效。即在“启用或停止windows功能”中勾选telnet客户端,确认成功后,即可在windows的CMD中使用telnet命令。对应的进程名为inetd,程序位置为/usr/sbin/inetd。
1. WEB应用开发环境
windows浏览器作为前端; 一个Ubuntu虚拟机运行web前端应用程序; Ubuntu 虚拟机运行业务层服务; Ubuntu 虚拟机运行数据层服务。
使用虚拟机部署Web分布式开发环境
2.宿主机和虚拟机的地址设置
使用Windows 10自带的Hyper-V安装虚拟机,并为每个虚拟机指定网卡Default Switch,以使用虚拟交换机功能。 每个虚拟机都使用 DHCP 进行动态 IP 地址分配。
下图是安装的三个Ubuntu虚拟机系统分配的动态IP地址。
创建 Ubuntu 虚拟机时由 DHCP 分配的动态 IP 地址
对于开发环境或者运行环境,最好使用静态IP,因为DHCP是动态分配IP的,同一个主机有时会分配不同的IP地址。
展示层、服务层、数据层、前端主机IP规划
windows主机的静态IP地址的设置就不详细说了。 下面介绍Ubuntu Server环境下静态IP地址的设置。
创建虚拟机并指定网络适配器Default Switch后,在windows主机的“network and internet”中添加虚拟网络“vEthernet(Default Switch)”和“vEthernet(Hvsilcs)”两个虚拟以太网适配器。 如下所示。
使用Hyper-V创建虚拟机时指定网卡的界面截图
需要配置vEthernet(Default Switch)适配器的“Share”和“Network”属性,如下图,这样就完成了虚拟网络的设置。
为虚拟适配器配置共享和网络属性
接下来,设置每个虚拟机的网络属性。 Netplan 是 Ubuntu 18.04 上默认的网络管理工具。 通过编辑/etc/netplan/下的配置文件50-cloud-init.yaml,可以修改配置DHCP、IP地址、子网掩码、默认网关、DNS服务器。
下面这个文件把原来的配置注释掉,取消DHCP,设置为静态属性,直接设置Web虚拟机的网络参数。 其他虚拟机与此类似,不再直接给出。
Ubuntu网络配置文件,设置静态属性
修改配置后,执行$sudo netplan apply 使修改生效。 执行ifconfig命令后,你会发现新的配置已经生效了。 宿主机的DNS为192.168.1.1,虚拟机的DNS也设置为192.168.1.1,虚拟机也可以上网。
3.从主机到各个虚拟机的Telnet设置
在上位机windows10上打开telnet客户端。 即在“启用或停止windows功能”中勾选telnet客户端,确认成功后,即可在windows的CMD中使用telnet命令。
ubuntu虚拟机开启telnet服务的方法,包括安装和开启监控; 安装telnet服务功能:
(1)安装openbsd-inetd监听进程:sudo apt-get install openbsd-inetd。
openbsd-inetd是一个监听外部网络请求的系统守护进程【也就是socket】。 对应的进程名为inetd,程序位置为/usr/sbin/inetd。
系统启动时虚拟机配置web服务器,首先读取/etc/inetd.conf文件,看里面是否配置了标准服务。 如果有,比如有telnet标准服务配置,inetd系统服务会启动一个tcp监听LISTEN。 当有一个外部网络请求到来时,它会查询/etc/inetd.conf 该请求应该调用什么服务,并启动相应的服务。
openbsd-inetd后台进程的启动减少了需要启动的后台进程总数,在有需要的时候启动相应的后台进程。
(2) 安装telnetd:sudo apt-get install telnetd
安装过程安装了telnet服务程序,在/etc/inetd.conf中添加一行:
telnet stream tcp nowait telnetd /usr/sbin/tcpd /usr/sbin/in.telnetd
正是通过这种配置,当 inetd 后台进程启动时,才会创建一个 tcp LISTEN 请求。
(3) 重启openbsd-inetd:sudo /etc/init.d/openbsd-inetd restart
(4)查看telnet的运行状态:sudo netstat -a|grep telnet 应该可以发现ubuntu上的telnet监控已经启动了
(5)登录:telnet IP地址,输入用户名和密码后,即可登录ubuntu。
(6)需要注意:Windows自带cmd窗口,有时会出现乱码,属性设置为“使用旧控制台”显示本地内容时不会再出现乱码,汉字会出现乱码在cmd中telnet到主机时,不能设置字符编码;
(7) 下载CRT工具Xshell,作为telnet终端使用。 可以设置字符编码为utf-8,就不会出现汉字乱码了。 这个工具有免费版,但是一个Xshell进程可以打开的telnet窗口数量限制在不超过4个,但是够用了。
推荐使用第三方终端工具,使用方便,有安全选项,保证数据安全传输。
4.主机到各个虚拟机的FTP设置
直接登录Ubuntu主机,以字符终端的形式开发,不方便快捷。 一般在Windows主机上使用集成开发环境。 开发完成后部署到服务器,所以需要配置机器间的ftp功能。
(1)windows宿主机必须保证ftp/tftp客户端的正常运行虚拟机配置web服务器,这里不再详述。
(2)ubuntu虚拟机,如果没有安装ftp服务器,则
sudo apt-get remove/install vsftpd(非常安全的 FTP 守护进程)
安装vsftpd服务器后,会在/etc/目录下创建一个vsftpd.conf配置文件
服务 vsftpd 启动或 /etc/init.d/vsftpd 启动
服务端vsftpd安装启动后,会响应win客户端的ftp请求,但禁止上传文件。 下图是未设置静态IP时的截图。
Ubuntu的vsftpd默认安装启动后,可以响应ftp请求,但是不能传输文件
修改/etc/vsftpd.conf,取消“write_enable=YES”前面的#。 重启vsftp服务器,service vsftpd restart;
编辑vsftpd的conf配置文件,设置writable选项,即可正常使用ftp
ftp需要的配置文件:/etc/vsftpd.conf,里面有很多设置项,根据实际需要调整。
在三台Ubuntu主机上安装vsftpd服务器,修改安装服务器生成的配置文件vsftpd.conf,修改write_enable=YES。
在使用vsftp服务时,经常需要启动、停止、重启vsftp服务。 以下是用于这些操作的说明:
启动Vsftpd服务的命令为:service vsftpd start或/etc/init.d/vsftpd start
停止Vsftpd服务的命令为:service vsftpd stop或/etc/init.d/vsftpd stop
重启Vsftpd服务的命令为:service vsftpd restart或/etc/init.d/vsftpd restart
查看vsftpd服务运行状态:service vsftpd status
5.宿主机windows10安装jdk
具体安装过程就不详细说了,直接下载JDK,按照安装向导安装即可。jdk相关的三个主要环境变量
JAVA_HOME=C:\Program Files\Java\jdk-11.0.5
类路径=C:\Program Files\Java\jdk-11.0.5\lib
路径=C:\Program Files (x86)\NetSarang\Xshell6\;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;%SYSTEMROOT% \System32\OpenSSH\;C:\Program Files\Java\jdk-11.0.5\bin;
6.在Web虚拟机上安装jdk
sudo apt-get install default-jdk
安装后的java可执行程序目录如下:
/usr/lib/jvm/java-11-openjdk-amd64/bin
验证在Ubuntu上安装JDK是否成功
/etc/profile文件修改,环境变量很重要。 设置并输出环境变量后,系统就可以正常执行了。
在最后添加
导出 JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export CLASSPATH=/usr/lib/jvm/java-11-openjdk-amd64/lib
导出 PATH=$PATH: /usr/lib/jvm/java-11-openjdk-amd64/bin
使配置文件生效
#source /etc/配置文件
Ubuntu 列出所有环境变量:#env
列出一个环境变量:#echo $JAVA_HOME
其他虚拟机安装JDK步骤相同,不再赘述。
7.在web虚拟机主机上安装TOMCAT
sudo cp apache-tomcat-9.0.30.tar.gz /usr/local/
cd /usr/本地
tar -zxvf apache-tomcat-9.0.30.tar.gz 解压tomcat到当前目录
sudo chmod 755 -R apache-tomcat-9.0.30/ 授予文件权限
cd /usr/local/apache-tomcat-9.0.30/bin
在startup.sh的启动文件后添加jdk环境变量和tomcat环境变量
导出 JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export CLASSPATH=/usr/lib/jvm/java-11-openjdk-amd64/lib
导出 PATH=$PATH: /usr/lib/jvm/java-11-openjdk-amd64/bin
导出 TOMCAT_HOME=/usr/local/apache-tomcat-9.0.30
须藤./startup.sh
成功启动Tomcat服务器
表示启动成功。
为了在其他机器上运行本机上的tomcat控制台,需要允许Tomcat通过防火墙
Tomcat默认端口是8080,要允许这个端口通过防火墙,命令如下:
sudo ufw 允许 8080
ufw 是 Ubuntu 的防火墙
使用浏览器在宿主机windows主机上查看web主机的tomcat配置界面(截图时静态IP还没有配置)
出现如下画面,说明192.168.1.110的windows主机访问172.18.5.233的web服务器成功。
貌似远程调用Tomcat控制台成功了,但是实际点击某些功能会报错,如下图。 要完整运行tomcat,需要修改一些配置文件。
点击Server Status、Manager App、Host Manager报错
红框内的是不可用的,必须配置才能远程使用。
没有设置远程使用Tomcat控制台的额外配置参数,图中红框内的功能不可用
第一步:在$tomcathome/conf/Catalina/localhost/下创建
manager.xml,填写以下内容,确保可以远程调用:
第二步:修改配置文件$tomcathome /conf/tomcat-users.xml,定义远程执行的用户名和密码
将以下代码添加到 $tomcathome/conf/tomcat-users.xml 中的标记中:
第三步:修改配置文件 $tomcathome /webapps/host-manager/META-INF/context.xml
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|172\.18\.5\.\d+" / >
即在Valve组件中的allow行添加172\.18\.5\.\d+
其中172.18.5.0这个网段是我配置的虚拟机的网段,可以根据不同的情况进行调整。
三个步骤完成后,就可以正常使用远程执行tomcat的控制台了。
8.应用服务器和数据库服务器安装
本文不讨论这方面的内容,留待后续补充