使用windows虚拟机搭建Ubuntu分布式Web开发环境(一)

1、 WEB应用程序开发环境

windows浏览器作为前端;一台Ubuntu虚拟机运行web前台应用;一台Ubuntu虚拟机运行业务层服务;一台Ubuntu虚拟机运行数据层服务。

使用虚拟机部署Web分布式开发环境

2、 宿主主机和虚拟机的地址设置

使用windows10自带的Hyper-V安装虚拟机,为每台虚拟机指定网络适配器Default Switch,以便使用虚拟交换机功能。各虚拟机使用DHCP进行动态IP地址分配。

下图是安装的三台Ubuntu虚拟机系统分配的动态IP地址。

创建Ubuntu虚拟机时DHCP分配的动态IP地址

开发环境或者运行环境,最好使用静态IP,因为DHCP动态分配IP,同一台主机有时会分配不同的IP地址,为便于管理和程序调用,下面是windows前端和各Ubuntu主机的IP地址规划。

展示层、服务层、数据层和前端主机的IP规划

windows主机静态IP地址设置,不再详述,下面描述Ubuntu Server环境下静态IP地址的设置问题。

创建虚拟机指定网络适配器Default Switch后,在windows宿主机的"网络和internet"中增加了虚拟网络"vEthernet(Default Switch)"和"vEthernet(Hvsilcs)" 两个虚拟以太网适配器。如下图。

使用Hyper-V创建虚拟机时指定网络适配器的界面截图

需要配置vEthernet(Default Switch)适配器的"共享"和"网络"属性,如下图,这样就完成了虚拟网络的设置。

配置虚拟适配器的共享属性和网络属性

下面设置各虚拟机的网络属性。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 client,确认成功后,windows的CMD中可以使用telnet命令。

ubuntu虚拟机开启telnet服务的方法,包括安装和开启监听;安装telnet服务功能:

(1)安装openbsd-inetd监听进程:sudo apt-get install openbsd-inetd。

openbsd-inetd是一个监听外部网络请求 [就是一个socket] 的系统守护进程,对应的进程名为inetd,程序位置/usr/sbin/inetd。

系统启动时它首先读/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 IPaddress,输入用户名和密码后就可以登录ubuntu了。

(6)需要注意:windows自带cmd窗口,有时会出现乱码,属性设置为"使用旧版控制台"在显示本地内容时不再有乱码,cmd中telnet到主机时汉字会有乱码,无法设定字符编码;

(7)下载CRT工具Xshell作为telnet终端使用,可以设置字符编码为utf-8,不会有汉字乱码,该工具有免费版本,但限制了一个Xshell进程可以开启的telnet窗口的数量不超过4个,不过够用了。

建议使用第三方的终端工具,好用,并且有安全选项,可以保证数据的安全传输。

4、 宿主主机到各虚拟机的ftp设置

直接登录到Ubuntu主机,采用字符终端形式进行开发很不方便和快捷,一般都在windows主机上使用集成开发环境,开发完成后部署到服务器上,故需要配置各机器之间的ftp功能。

(1)windows宿主机要确保ftp/tftp客户端正常运行,不再详细描述。

(2)Ubuntu虚拟机,如果没有安装ftp服务器,则

sudo apt-get remove/install vsftpd (very secure FTP daemon)

安装vsftpd服务器后,在/etc/目录下会建立一个vsftpd.conf的配置文件

service vsftpd start 或 /etc/init.d/vsftpd start

服务器vsftpd安装和启动后,win客户端的ftp请求会被响应,但上传文件被禁止。下图是未设定静态IP时的截图。

Ubuntu的vsftpd默认安装和启动后,可以响应ftp请求,但无法传输文件

修改/etc/vsftpd.conf,将"write_enable=YES"前面的#取消。 重启vsftp服务器,service vsftpd restart;

编辑vsftpd的conf配置文件,设置可写选项,则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

classpath=C:\Program Files\Java\jdk-11.0.5\lib

path=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文件修改,环境变量很重要,设置和输出环境变量后,系统才可正常执行。

最后面增加

export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64

export CLASSPATH=/usr/lib/jvm/java-11-openjdk-amd64/lib

export PATH=$PATH: /usr/lib/jvm/java-11-openjdk-amd64/bin

使profile生效

#source /etc/profile

Ubuntu列出全部环境变量:#env

列出某个环境变量:#echo $JAVA_HOME

其他虚拟机安装JDK步骤相同,不重复描述

7、 web虚拟机主机安装TOMCAT

sudo cp apache-tomcat-9.0.30.tar.gz /usr/local/

cd /usr/local

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的环境变量

export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64

export CLASSPATH=/usr/lib/jvm/java-11-openjdk-amd64/lib

export PATH=$PATH: /usr/lib/jvm/java-11-openjdk-amd64/bin

export TOMCAT_HOME=/usr/local/apache-tomcat-9.0.30

sudo ./startup.sh

启动Tomcat服务器成功

表示成功启动。

为了在其他机器上运行本机上tomcat控制台,需要允许Tomcat通过防火墙

Tomcat默认端口为 8080, 要允许这个端口通过防火墙,命令如下:

sudo ufw allow 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,填入如下内容,确保可以远程调用:

<Context privileged="true" antiResourceLocking="false" docBase="${catalina.home}/webapps/manager">

<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^.*#34; />

</Context>

第二步:修改配置文件$tomcathome /conf/tomcat-users.xml,定义远程执行的用户名和口令

$tomcathome/conf/tomcat-users.xml 中的 <tomcat-users></tomcat-users> 标签内添加如下代码:

<role rolename="manager-gui"/>

<role rolename="manager-script"/>

<role rolename="manager-jmx"/>

<role rolename="manager-status"/>

<role rolename="admin-gui"/>

<role rolename="admin-script"/>

<user username="admin" password="admin" roles="manager-gui,manager-script,manager-jmx,manager-status,admin-gui,admin-script"/>

<user username="deploy" password="deploy" roles="manager-script"/>

第三步:修改配置文件$tomcathome /webapps/host-manager/META-INF/context.xml

<Context antiResourceLocking="false" privileged="true" >

<Valve className="org.apache.catalina.valves.RemoteAddrValve"

allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|172\.18\.5\.\d+" />

<Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>

</Context>

也就是在Valve组件中的allow行 加入172\.18\.5\.\d+

其中172.18.5.0这个网段是我配置的虚拟机的网段 根据不同可以自己调整。

三步完成后,远程执行tomcat的控制台就可以正常使用了。

8、 应用服务器和数据库服务器安装

本文不讨论这方面的内容,留待后续补充

举报
评论 0