在一台linux的Tomcat上部署了一个程序,通过ip加端口可以访问了,现在想配置个域名,修改hosts文件配置为本机ip加上自己想的域名,但通过域名访问不了
这里我先介绍下我的开发环境:
本次演示项目目录结构如下图,下面讲解中多次使用到该站点目录结构,请仔细了解演示站点结构有助于本次配置。
请求该路径响应的页面如下图所示
步骤一:部署项目
我们都知道在tomcat安装目录中有webapps文件夹,首先将我们的项目上传至该文件夹下我在这里上传的是good.war包,当我们启动tomcat,它将自动将其解压成同名的文件夹。上传这里我们可以借助xftp上传工具,上传后如图所示
接下来在tomcat的安装目录bin文件夹下执行启动tomcat命令,再次查看webapps文件夹将会多出一个good文件夹,如图所示
[root@VM_0_12_centos bin]# ./startup.sh //启动tomcat
接下来进入tomcat给我们解压出来的项目文件夹也就是good文件夹,复制其路径,作为日后我们配置参数告诉tomcat应用位置如图
[root@VM_0_12_centos webapps]# cd good/ //进入项目文件夹
[root@VM_0_12_centos good]# pwd //获取应用路径
/usr/apache-tomcat-8.5.46/webapps/good //项目位置
事先了解一些配置文件 在tomcat安装目录中conf中为tomcat配置文件我们进入server.xml使用vim编辑器进行修改,在修改之前我们先了解一下知识:
server.xml中一些标签
Engine元素
<Engine name="Catalina" defaultHost="localhost" debug="0">
1、name书写Engine的名字
2、defaultHost书写处理请求的主机,在下的标签中页必须定义这一主机
Engine标签下还可以包含一下子标签 Realm, Value, Host
Host元素
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
appBase:就是程序基础位置的意思,此值可以自定义可以是你项目的绝对路径或者相对路径在本教程中填写您在步骤一操作后拿到的项目位置即可,/usr/apache-tomcat-8.5.46/webapps/good
aotuDeploy:设置程序是否自动装载。
name:处理请求的主机地址可以自定义
unpachWARs:是否自动解压war包,为true启动tomcat将自动解压。
Context元素
<Context path="" docBase="/usr/apache-tomcat-8.5.46/webapps/good" debug="0"/>
path:设置项目访问的路径名,path值为""的context只能有一个,path值为项目名,为空默认使用docBase中指定的项目名
reloadable: 是否自动检测项目的变化。为true将会自动检测项目变化自动装载项目。
web应用中的web-info下的web.xml
welcome-file-list
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.action</welcome-file>
</welcome-file-list>
此标签设置我们的应用欢迎界面,当请求到达,首先会在应用根目录依次根据welcome-file-list中welcome-file配置顺序寻找页面配置页面当没有找到变响应404.注意此例中配置,应用将会在根目录最外层寻找以上配置页面,以上只适用于默认页面在站点根目录的,假如您的欢迎页面即主页在站点二级目录下,则寻找不到。在下将会详细介绍。
步骤二:开始配置
1、解决不加端口问题
80端口是为HTTP(HyperText Transport Protocol)即超文本传输协议开放的,此为上网冲浪使用次数最多的协议,主要用于WWW(World Wide Web)即万维网传输信息的协议。可以通过HTTP地址(即常说的“网址”)加“: 80”来访问网站,因为浏览网页服务默认的端口号都是80,因此只需输入网址即可,不用输入“: 80”了。这里我们见tomcat的端口调为网页服务器默认80号端口即可事先,如下配置
进入tomcat配置文件conf中的service.xml中修改一下配置。
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
此处配置tomcat的默认访问端口,我们将其port修改为80号端口即可。
2、解决不加项目名问题
此步骤需要步骤一中拿到的项目位置,在tomcat的配置文件conf中的service.xml中修改以下配置。此配置书写位置为该配置文件中/host标签的上一行,tomcat中默认没有此配置将一下粘贴即可。
<Context path="" docBase="/usr/apache-tomcat-8.5.46/webapps/good" debug="0"/>
在此教程演示过程中,我在步骤一中上传到webapps中的项目为good.war,解压后得到good文件夹拿到的good文件夹的绝对路径为/usr/apache-tomcat-8.5.46/webapps/good,那么我希望输入IP地址默认就访问这个项目,所以docBase填写你的目标应用的根路径绝对路径即可。由于docbase的路径精确到应用名称,path为空默认使用我docBase中配置的应用名。由于我在项目最外层添加了index.jsp,此时我直接重启tomcat应用服务器,请求该应用服务器所在的IP地址已经实现了只使用IP地址访问tomcat指定应用了。注意默认页面欢迎页面2
必须在站点根目录最外层,也就是演示项目目录结构图中最下方index.jsp。j结构图在最上,ip访问效果如下。若您的默认界面在不在网站根目录则需继续向下操作。
3.解决默认页面不在网站根路径问题
如上所示,网站默认页面在网站根目录的通过以上配置已经可以实现访问,如同我演示的index.jsp在网站根目录,已经可以实现,那么当网站主页面不在根目录的该怎么办呢?如同我站点目录中的/front文件夹下面的login.jsp,我想通过ip访问直接到达我的login.jsp页面呢?
我们只需要告诉tomcat我们的主页在哪即可。
进入网站的web-info文件夹下的web.xml中添加以下配置即可。
<welcome-file-list>
<welcome-file>/front/login.jsp</welcome-file>
</welcome-file-list>
告诉tomcat我们的默认页面在front文件夹下的login.jsp。若您的主页在多级目录以下就通过路径方式告知tomcat即可。此时我们已经实现了访问ip地址可直接进入网站(主页在多级目录中情况)如图切记:在以上配置完成后请重启tomcat,以便于其重新加载配置信息。否则配置将不生效
创作仓促,能力限制,难免有遗漏不妥之处,欢迎交流批评指正。
首先要确认一下DNS服务器是否配置正确,可以通过命令nslookup查看。如果没有正确配置,可以在/etc/resolv.conf中添加DNS服务器地址。
接着需要确认一下防火墙是否会阻止DNS请求和TCP连接。可以通过iptables查看防火墙规则。如果有相关规则,需要允许TCP端口和DNS请求。
还有可能是Tomcat配置问题,需要确认一下在server.xml中是否正确配置了HTTP连接器。可以通过以下命令查看监听端口:
netstat -tlnp | grep java
如果监听端口是127.0.0.1,那么就不能从外部访问。可以通过配置HTTP连接器来让Tomcat监听外部请求。可以参考以下代码:
注意:需要根据自己的实际情况来配置端口号和协议。
最后还需要确认一下在DNS服务器中是否正确配置了域名解析。可以使用dig命令来测试DNS解析:
dig example.com
如果无法解析,可能是因为域名没有正确注册或DNS服务器配置有误。
是在Tomcat所在的机器上配置了hosts后,在那台机器上访问不了吗