error installing service: 拒绝访问。 (5)_CentOS7x86_64安装Tomcat8.5手册

1.安装前准备

在Tomcat官网或镜像网站下载Tomcat8.5,

官网网址:https://tomcat.apache.org/download-80.cgi

镜像网站:http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/

目前Tomcat8最新版本为8.5.59,下载地址为:

http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.59/bin/apache-tomcat-8.5.59.tar.gz

可以将其下载到服务器或者将其通过U盘复制到应用服务器上。假定apache-tomcat-8.5.59.tar.gz存放于服务器的位置为:/root/apache-tomcat-8.5.59.tar.gz

2.安装Tomcat

首先以root身份登录,然后解压apache-tomcat-8.5.59.zip。

tar -zxf/root/apache-tomcat-8.5.59.tar.gz

解压后会在/root目录下多出一个apache-tomcat-8.5.15文件夹来,然后通过下面的命令将其移动到/usr/local目录下:

mv ./apache-tomcat-8.5.59//usr/local

注意:/usr/local/apache-tomcat-8.5.59这个目录在设置Tomcat环境变量时会用到。当然,也可以不设置Tomcat相关的环境变量,使用相关脚本对Tomcat进行操作时会自动检测这些环境变量。

至此,Tomcat已经安装完成。

下面配置Tomcat有关的环境变量,在/etc/profile中添加如下内容:

exportCATALINA_HOME=/usr/local/apache-tomcat-8.5.59exportCATALINA_BASE=/usr/local/apache-tomcat-8.5.59exportPATH=$PATH:$CATALINA_HOME/bin

然后运行下面的命令使配置生效:

source /etc/profile

经过以上配置后,可以通过如下命令启动Tomcat:

/usr/local/apache-tomcat-8.5.59/bin/startup.sh

启动成功后即可在服务器上打开浏览器并输入网址http://localhost:8080查看,如下图所示:

fe0fe3ee61c06c51ee850eebfe0892bc.png

如果要关闭Tomcat也很简单,执行如下命令:

/usr/local/apache-tomcat-8.5.59/bin/shutdown.sh

注意:使用/usr/local/apache-tomcat-8.5.59/bin/catalina.sh加上参数也可以启动或者停止Tomcat,如 /usr/local/apache-tomcat-8.5.59/bin/catalina.shstart来启动Tomcat,/usr/local/apache-tomcat-8.5.59/bin/catalina.shstop来停止Tomcat,除此之外还可以使用debug/run/configtest/version参数,不过没有restart参数来重启Tomcat。

另外还需要注意的是,如果服务器同时开启了IPv4和IPv6,Tomcat8.5可能只监听IPv6协议的8080端口,需要在/usr/local/apache-tomcat-8.5.59/bin/catalina.sh中修改参数,参数名为JAVA_OPTS,下面是例子:

修改前:

JAVA_OPTS="$JAVA_OPTS -Djava.protocol.handler.pkgs=org.apache.catalina.webresources"

修改后:

JAVA_OPTS="$JAVA_OPTS -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Address=true"

即增加“-Djava.net.preferIPv4Stack=true-Djava.net.preferIPv4Address=true”配置。

3.配置Tomcat为系统服务

在/usr/lib/systemd/system/目录增加tomcat.service文件,并将以下内容粘贴到新创建的tomcat.service文件:

[Unit]Description=Apache Tomcat 8.5.59After=syslog.target network.target remote-fs.target nss-lookup.target [Service]Type=forkingPIDFile=/usr/local/apache-tomcat-8.5.59/tomcat.pidExecStart=/usr/local/apache-tomcat-8.5.59/bin/startup.shExecReload=/bin/kill -s HUP $MAINPIDExecStop=/bin/kill -s QUIT $MAINPIDPrivateTmp=true [Install]WantedBy=multi-user.target

然后可以执行如下命令来检验是否配置正确:

systemctl enabletomcat.service:设置tomcat这个service随系统一起启动

systemctl disabletomcat.service:禁止tomcat这个service随系统一起启动

systemctl starttomcat.service:启动tomcat这个service

systemctl stoptomcat.service:停止tomcat这个service

systemctl reload tomcat.service:重新启动tomcat这个service

同时还可以通过如下命令查看Tomcat是否正确配置为随系统启动:

systemctl list-unit-files |grep tomcat

执行情况如下:

[root@localhost dw]#systemctl list-unit-files | grep tomcat

tomcat.service                                enabled

可以看出,Tomcat已经被成功配置为随操作系统启动。

3.Tomcat增加内存

默认情况下,Tomcat所使用的内存较小,在并发访问量大的情况下有可能会出现内存溢出异常,因此需要给Tomcat增加内存,在本系统中默认给Tomcat配置最大可能内存为4G,操作步骤如下:

在/usr/local/apache-tomcat-8.5.59/bin/目录创建setenv.sh,文件内容如下:

export CATALINA_HOME=/usr/local/apache-tomcat-8.5.59export CATALINA_BASE=/usr/local/apache-tomcat-8.5.59exportPATH=$PATH:$CATALINA_HOME/bin#add tomcat pidCATALINA_PID="/usr/local/apache-tomcat-8.5.59/tomcat.pid"#add Java optsJAVA_OPTS="-server -Xms4096m-Xmx4096m"

保存文件之后,重启Tomcat即可生效。

4.更改Tomcat默认端口

Tomcat默认使用8080端口作为监听端口,以便于与其它Web服务器集成,但在本项目中直接使用Tomcat作为Web服务器,为便于用户操作,需要将Tomcat的默认端口由8080改为80。在Tomcat的安装目录下的conf目录中的server.xml文件中保存了tomcat的配置信息,首先将server.xml备份,然后在server.xml中修改,执行如下命令对server.xml进行备份:

cd /usr/local/apache-tomcat-8.5.59/conf/cp server.xml server_bak.xml

然后运行vim /usr/local/apache-tomcat-8.5.59/conf/server.xml打开server.xml,找到端口配置部分,如下所示:

<Connector port="8080"protocol="HTTP/1.1"              connectionTimeout="20000"              redirectPort="8443" />

将其中的“8080”和“8443”分别改成80及443,并且加上”allowTrace="true"”配置。这样一来直接输入服务器的IP地址即可访问Tomcat的HTTP端口了,改完后的代码如下:

<Connector port="80" protocol="HTTP/1.1"              connectionTimeout="20000"              redirectPort="443"  allowTrace="true"/>

5.Tomcat配置HTTPS协议支持

5.1为服务器制作证书并启用HTTPS

首先检查JDK及Tomcat项目的环境变量是否配置正确,打开/etc/profile文件,如果看到如下配置则证明配置正确:

export CATALINA_HOME=/usr/local/apache-tomcat-8.5.59export CATALINA_BASE=/usr/local/apache-tomcat-8.5.59export PATH=$PATH:$CATALINA_HOME/bin

然后执行下面的命令,利用JDK提供的keytool工具在Tomcat的安装目录下生成tomcat.keystore文件:

keytool-genkey -alias tomcat -keyalg RSA -keypass goodluck@2020 -keystore /usr/local/apache-tomcat-8.5.59/tomcat.keystore-storepass goodluck@2020 -validity 36500

以下是执行过程中需要输入的参数:

Whatis your first and last name?  [Unknown]: gggjdwWhatis the name of your organizational unit?  [Unknown]: jsdwggWhatis the name of your organization?  [Unknown]: ggjsdkyggWhatis the name of your City or Locality?  [Unknown]: ngjgWhatis the name of your State or Province?  [Unknown]: jgsgWhatis the two-letter country code for this unit?  [Unknown]: zhggIsCN=gggjdw, OU=jsdwgg, O=jsdkygg, L=ngjg, ST=jgsg, C=zhgg correct?  [no]: yes

这样就在tomcat的根目录下生成了自签名证书文件,证书密码和保存密码均为msver@2020,证书有效期为100年。可以通过下面的命令查看:

keytool-list -keystore /usr/local/apache-tomcat-8.5.59/tomcat.keystore

以下是程序执行结果:

keytool-list -keystore /usr/local/apache-tomcat-8.5.59/tomcat.keystoreEnterkeystore password:Keystoretype: jksKeystoreprovider: SUN Yourkeystore contains 1 entry tomcat,Dec 23, 2020, PrivateKeyEntry,Certificatefingerprint (SHA1): 8C:73:4B:17:4F:F7:47:D9:42:4B:20:04:B1:B0:2B:F6:BE:60:A7:E3

注意:在查看时需要输入证书密码。

打开Tomcat的配置文件,如下命令:

vim $CATALINA_HOME/conf/server.xml

在节点外添加如下节点:

 <Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"          sslImplementationName="org.apache.tomcat.util.net.jsse.JSSEImplementation"          maxThreads="150" SSLEnabled="true" scheme="https" secure="true"          clientAuth="false" sslProtocol="TLS"          keystoreFile="tomcat.keystore" keystorePass="goodluck@2020" />

其中keystoreFile是通过JDK提供的keytool创建的证书文件,其存放位置在Tomcat的根目录, keystorePass是创建证书时设置的密码。

然后通过下面的命令重启tomcat服务器:

systemctl stop tomcat.servicesystemctl start tomcat.service

这样就可以在服务器上通过HTTPS访问了,访问网址:

https://localhost

由于证书是没有经过认证的,所以在使用浏览器打开的时候会出现提示,如下图所示(以Chrome为例):

d8f001ef7c0e9678d376cb25dec1d2c0.png

这时,需要点击图中的“高级”按钮,出现下面的链接:

ad94c57e898830f3b00ff3aeeded4de3.png

然后就可以看到正常的网页内容了。

5.2为客户端生成证书

因为客户端不信任服务器端自行制作的证书,为避免客户端每次访问时出现警告,采用下面的命令生成客户端需要的证书:

keytool -keystore /usr/local/apache-tomcat-8.5.59/tomcat.keystore-export -alias tomcat -file /usr/local/apache-tomcat-8.5.59/msver.cer

一旦命令运行成功,就会在/usr/local/apache-tomcat-8.5.59/目录下生成msver.cer文件。将此证书文件提供给客户端,双击msver.cer就会出现导出安全证书提示,一路按照默认设置确认即可。

5.3强制HTTPS访问

打开安装目录下的conf/web.xml文件,在节点后增加如下内容:

<login-config>         <auth-method>CLIENT-CERTauth-method>    <realm-name>Client Cert Users-only Arearealm-name> login-config> <security-constraint>         <web-resource-collection >        <web-resource-name >SSLweb-resource-name>        <url-pattern>/*url-pattern>    web-resource-collection>    <user-data-constraint>        <transport-guarantee>CONFIDENTIALtransport-guarantee>    user-data-constraint> security-constraint>

然后重启Tomcat即可强制HTTPS访问。

6.防范Host头部攻击配置

为了方便获取网站域名,开发人员一般依赖于请求包中的Host首部字段。例如,在php里用_SERVER[“HTTP_HOST”]。但是这个Host字段值是不可信赖的(可通过HTTP代理工具篡改),如果应用程序没有对Host字段值进行处理,就有可能造成恶意代码的传入。

Host首部字段是HTTP/1.1新增的,旨在告诉服务器,客户端请求的主机名和端口号,主要用来实现虚拟主机技术。

运用虚拟主机技术,单个主机可以运行多个站点。以下图为例,hacker和usagidesign两个站点都运行在同一服务器A上,不管我们请求哪个域名,最终都会被解析成服务器A的IP地址,这个时候服务器就不知道该将请求交给哪个站点处理,因此需要Host字段指定请求的主机名。

我们访问hacker域名,经DNS解析,变成了服务器A的IP,请求传达到服务器A,A接收到请求后,发现请求报文中的Host字段值为hacker,进而将请求交给hacker站点处理。

这个时候,问题就出现了。为了方便获取网站域名,开发人员一般依赖于请求包中的Host首部字段。例如,在php里用_SERVER[“HTTP_HOST”]。但是这个Host字段值是不可信赖的(可通过HTTP代理工具篡改),如果应用程序没有对Host字段值进行处理,就有可能造成恶意代码的传入。

即将部署的配电自动化主站版本管理系统的服务器IP为172.17.51.230,因此需要在Tomcat根目录下的conf/server.xml中增加配置,在节点下增加节点,节点内容如下:

172.17.51.230

修改后的节点内容如下:

"localhost"  appBase=           unpackWARs="true" autoDeploy="true">        <Alias>172.17.51.230Alias>        "org.apache.catalina.valves.AccessLogValve"directory=              prefix="localhost_access_log" suffix=".txt"              pattern="%h %l %u %t "%r" %s %b" />      Host>

最终的server文件如下(修改部分用红框标出):

7.禁用不常用HTTP方法

HTTP/1.1协议中共定义了八种方法(有时也叫“动作”)来表明Request-URI指定的资源的不同操作方式:

OPTIONS 返回服务器针对特定资源所支持的HTTP请求方法。也可以利用向Web服务器发送’*'的请求来测试服务器的功能性。

HEAD 向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息。

GET 向特定的资源发出请求。注意:GET方法不应当被用于产生“副作用”的操作中,例如在web app.中。其中一个原因是GET可能会被网络蜘蛛等随意访问。

POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。

PUT 向指定资源位置上传其最新内容。

DELETE 请求服务器删除Request-URI所标识的资源。

TRACE 回显服务器收到的请求,主要用于测试或诊断。

CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。

方法名称是区分大小写的。当某个请求所针对的资源不支持对应的请求方法的时候,服务器应当返回状态码405(Method Not Allowed);当服务器不认识或者不支持对应的请求方法的时候,应当返回状态码501(Not Implemented)。 

HTTP服务器至少应该实现GET和HEAD方法,其他方法都是可选的。当然,所有的方法支持的实现都应当符合下述的方法各自的语义定义。此外,除了上述方法,特定的HTTP服务器还能够扩展自定义的方法。

HTTP的访问中,一般常用的两个方法是:GET和POST。

在tomcat的根目录下的conf/web.xml配置文件最后可以加上请求方式限制,限制请求代码如下:

<security-constraint>        <web-resource-collection>            <url-pattern>/*url-pattern>       <http-method>HEADhttp-method>                     <http-method>PUThttp-method>            <http-method>DELETEhttp-method>            <http-method>OPTIONShttp-method>            <http-method>TRACEhttp-method>       web-resource-collection>        <auth-constraint>        auth-constraint> security-constraint>

通过上面的配置,就只允许GET/POST类型的请求了。

最终在Tomcat根目录下conf/web.xml中增加的配置如下:

fac69366126fa8dbbd63b66e19d09ad8.png

然后重启Tomcat服务器,配置生效。

7.清理非必要资源

在Tomcat中默认带有很多示例,但是这些示例在生产环境中没有任何作用,因此可以将这些示例删除。

执行下面的命令:

rm -rf /usr/local/apache-tomcat-8.5.59/webapps/docs/rm -rf /usr/local/apache-tomcat-8.5.59/webapps/examples/

然后备份/usr/local/apache-tomcat-8.5.59/webapps/ROOT/index.jsp文件,执行如下命令:

cp /usr/local/apache-tomcat-8.5.59/webapps/ROOT/index.jsp/usr/local/apache-tomcat-8.5.59/webapps/ROOT/index.jsp_bak

最后编辑/usr/local/apache-tomcat-8.5.59/webapps/ROOT/index.jsp文件,文件最终内容如下:

<htmllang="en"><head><title>msvertitle>head><body><scripttype ="text/javascript">document.location.href="/youwebApp";script>body>html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值