一、说明
一般的,本地要想访问远程服务器上面的web项目都是通过【远程服务器ip地址 + 端口号 + web项目名称】的方式来进行。但有时候我们也有这样的需求,即仅通过ip地址来访问web项目,不需要另外加端口号和项目名称。
这种需求的应用场景有,当你租了一个服务器之后,想制作一个个人简历,然后将你的其他项目链接到个人简历上面,也即通过你的个人简历链接到其他项目。这个时候,直接通过服务器ip地址或者域名来访问到你的个人简历就会显得特别方便简洁,因为这个时候你的URL地址中不需要外加端口号和项目名称。比如,原本需要通过【远程服务器ip地址+端口号+web项目名称】来访问个人简历,现在只需通过【远程服务器ip地址】或者【远程服务器的域名】来访问,是不是方便了很多呢?
二、设备简介
1、本地:windows 10 系统
2、服务器:阿里云-轻量应用服务器
3、服务器公网ip:假如为47.xx.xx.118
4、服务器中的Linux系统:CentOS 7.6
5、应用部署:Docker
测试的javaweb项目名称是 PersonalResume,我自己写的哈哈哈
三、大体步骤
1、在阿里云-轻量应用服务器的防火墙中开放80号端口,tcp协议的;
2、在远程服务器中启动一个Docker容器运行tomcat服务,先把tomcat跑起来;
3、创建Docker镜像:编写Dockerfile文件,并把打包的PersonalResume.war上传到服务器,新建Docker镜像;
4、运行镜像 tomcat:newimage 的容器,并修改tomcat容器下面的 server.xml 文件;
5、检验
四、具体操作
实现的具体操作入下:
1、在阿里云-轻量应用服务器的防火墙中开放80号端口,tcp协议的;
登录阿里云官网,查看轻量应用服务器中的防火墙,发现80号端口是开放的
2、在远程服务器中启动一个Docker容器运行tomcat服务,先把tomcat跑起来;
1)远程服务器:【docker run …】 一个tomcat类型的容器,启动后在后台执行,并指定服务器的80号端口与tomcat容器的8080号端口映射。如下表示容器启动成功
2)本地windows系统:在浏览器中输入【服务器ip地址+80号端口】或者【服务器ip地址】,这个时候还不能正常访问,会报404错误,如下:
下面就解决404报错的问题
3)远程服务器:【docker exec …】进入刚刚启动的容器,可以发现在 /usr/local/tomcat/ 目录下面有 webapps 和 webapps.disk 两个文件夹。但是 webapps 文件夹下面是空的,而 webapps.disk 文件夹非空。我们需要做的删除 webapps 文件夹,然后把 webapps.disk 文件夹更名为 webapps 文件夹。如下:
删除 webapps 文件夹,并把 webapps.disk 文件夹更名为 webapps,如下:
本地windows系统:现在再通过【服务器ip地址+80号端口号】或者【服务器ip地址】访问,应该是可以正常访问到tomcat了,也即tomcat已经跑起来了。如下:
3、创建Docker镜像:编写Dockerfile文件,并把打包的PersonalResume.war上传到服务器,新建Docker镜像;
1)远程服务器:我将打包后的项目包 PersonalResume.war 上传到远程服务器的 /home/admin/desktop/docker3 目录下,并在该目录下新建一个 Dockerfile 文件。如下:
2)远程服务器:编写Dockerfile文件,写入如下内容并保存(三句话)。
3)远程服务器:远程服务器定位到 …/docker3/ 文件夹,然后执行 Dockerfile 文件创建新的Docker镜像(这里我新创建的镜像名称为tomcat:newimage),如下:
如上,表示我们新建的镜像 tomcat:newimage 构建成功!
4、运行镜像 tomcat:newimage 的容器,并修改tomcat容器下面的 server.xml 文件。
1)先把我们之前运行的tomcat容器停掉,因为它占用了我们的80号端口
2)运行我们刚创建的 tomcat:newimage 容器,并且运行该容器的时候映射到服务器的80号端口。
现在,我们已经可以使用 ip地址+项目名称 的形式来访问到该项目了。即【47.??.??.118/PersonalResume】来访问通该项目。
3)隐藏项目名称。先进入刚刚我们创建的容器,然后修改 tomcat/conf/server.xml 文件。修改策略为,先进入容器,把 tomcat/conf/server.xml 文件复制出来修改,修改之后再将该文件server.xml复制到 tomcat/conf/ 文件夹下把原本的server.xml覆盖。如下:
先把 server.xml 文件复制出来,这里我复制到 /home/admin/desktop/TemporaryPPXIE/ 路径下面
修改 server.xml 文件,内容如下:
把修改之后的 server.xml 文件复制回 容器的66b2ce9d00ae:/usr/local/tomcat/conf/之中会覆盖掉原来的server.xml文件,
进入tomcat容器,先进入该目录,然后查看我们修改的内容是否有在里面,如下:
查看 server.xml 内容
如上,说明我们修改成功了。接下来就是先停止该容器,然后再重新开启该容器(重新开启才会加载我们修改之后的server.xml文件)。如下:
5、检验
能通过ip地址直接访问,成功了!!!