虚拟机下linux搭建web服务器(使用windows虚拟机搭建Ubuntu分布式Web开发环境)
虚拟机下linux搭建web服务器(使用windows虚拟机搭建Ubuntu分布式Web开发环境)创建Ubuntu虚拟机时DHCP分配的动态IP地址2、 宿主主机和虚拟机的地址设置使用windows10自带的Hyper-V安装虚拟机,为每台虚拟机指定网络适配器Default Switch,以便使用虚拟交换机功能。各虚拟机使用DHCP进行动态IP地址分配。下图是安装的三台Ubuntu虚拟机系统分配的动态IP地址。
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="^.*$" />
</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、 应用服务器和数据库服务器安装
本文不讨论这方面的内容,留待后续补充