编辑安装目录下conf/server.xml
<Connector port="8080"
maxThreads="500"
minSpareThreads="25"
maxSpareThreads="75"
acceptCount="100"
/>
配置开启最大线程为500,25个空线程等待,75个最大空线程等待及连接数大于maxThreads时最多允许100个连接等待。以上根据实际项目配置,也可以配置线程池。
连接参数的配置也是修改connector参数,主要有:
connectionTimeout 网络连接超时,单位毫秒,设置为0表示永不超时
keepAliveTimeout 长连接最大保持时间,单位毫秒
MaxKeepAliveRequests为一次连接可以进行的HTTP请求的最大请求次数,1表示禁用,-1表示不限制个数,默认100个,一般设置在100~200之间
2.2.3多虚拟主机及多实例
多虚拟主机是在一个实例中的server.xml中配置多个虚拟目录以指向相同或不同项目,多实例是安装多个Tomcat实例,修改为不同端口,启动不同进程实现不同项目或者同项目的访问,与虚拟主机不同的是多实例可以实现简单的单台主机上的负载均衡。具体配置这里不介绍了。
2.2.4集群
Tomcat集群是在多台主机上实现负载均衡的技术,由于APP目前只有一台主机,集群到了第二阶段才能考虑。
2.3 Mysql
Mysql的表结构是开发人员根据程序需要来设计,这个要根据项目区分。
3、部署及问题
最后将项目的静态文件及动态文件分别部署到Nginx和Tomcat上,做到动静分离。Tomcat上没有必要放置多余的静态文件,但要配置好和后台数据库连接的jdbc,如:
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://192.168.1.1:3306/kingdom?characterEncoding=utf-8
jdbc.username=root
jdbc.password=root
别忘了还有个连接DB的驱动jar包。这样一个Nginx+Tomcat+Mysql架构的项目就部署完毕。接下来说说遇到的问题。
问题1:连接不到后台数据库,但数据库本身没有问题,服务开启并且也可以登录。在排除了防火墙之类的配置后,用其他主机远程登录提示Accessdenied for user 'root'@'ip' (using password:YES),mysql默认禁止远程连接,解决办法:
mysql -uroot -p
mysql>GRANT all privileges ON *.* toroot@'%' IDENTIFIED BY "root" with grant option;
格式:grant 权限 on 数据库名.表名 to 用户@登录主机 identified by"用户密码";
权限分为select,update,insert,delete或者直接all
数据库名.表名可以*.*表示所有
登录主机'%'表示所有
用户密码不是本机真实密码,为本机给远程登陆用户设的密码
之后FLUSH PRIVILEGES;即可
问题2:访问Nginx上的应用连接不到数据库,但直接访问Tomcat正常。将Nginx指向其他APP访问正常,说明Nginx配置没有问题,连接不到数据库是因为Nginx连接不到Tomcat,而Tomcat连接着数据库,Nginx只能访问自己本地的项目。从以上判断应该是Tomcat上项目的权限问题。找到故障点后着手解决,发现Tomcat上项目主目录下没有crossdomain.xml文件,这是Tomcat的跨域策略文件,配置后问题解决。
问题3:一切就绪后使用Loadrunner进行压力测试,Nginx日志报错accept() failed (24: Toomany open files),这是由于服务器开的文件描述符太小造成。ulimit–n只能改变当前shell的设定,要永久改变有以下三步:
(1.) /etc/pam.d/login添加
session???required????/lib/security/pam_limits.so
(2.)?/etc/security/limits.conf添加
www???????????-??????nofile?????????1006154
www 是一个用户,如果是想所有用户生效的话换成 * ,设置的数值与硬件配置有关,别设置太大
(3.) ?修改/etc/rc.local添加
echo 8061540 >/proc/sys/fs/file-max
第一阶段的生产环境搭建完毕,还有很多需要测试和优化的地方,这期间Google也帮了大忙,第二阶段的扩展也会在这个基础上展开,记录与总结也会继续
--
Tomcat 5 在生产环境中为了避免被攻击,需要注意删除以下目录的文件或者是要修改某些文件的配置。
一、 找到%Tomcat_Home%\conf目录下的web.xml文件,修改如下所示的参数设置,默认是true,修改为false值,表示是客户端浏览的时候不做目录文件的列表,例如:访问如下地址http://127.0.0.1/test/ 如果这个参数设置为true的话,就会把test目录下的所有jsp文件都列出来,这样给攻击者一个清楚的文件列表,造成极大的危害。
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
二、在%Tomcat_Home%\conf\Catalina\localhost目录下,是当前tomcat服务器配置的在运行的站点配置文件,其中balancer.xml文件是配置tomcat均衡的一个站点,这个不需要删除;但是admin.xml与mannager.xml文件是默认的管理站点,可以删除,以免攻击者从中得到有用的信息;ROOT.xml文件是tomcat默认站点的配置文件。另外要注意的一点是如果要删除一个虚拟站点的话,我们就需要把对应的配置文件从这个目录中删除,例如:要删除虚拟站点test,那么就要把这个目录下的test.xml文件删除,否则,就算是在%Tomcat_Home%\conf\目录下的server.xml配置文件中删除了这个虚拟站点,也会在tomcat 启动的时候加载这个虚拟站点的程序。造成你以为没有删除这个虚拟站点。
相关推荐
本文档适用于企业IT 人员操作,经过多次更新和验证,最后可以形成一个企业级的、完整、安全、Tomcat和Nginx 环境, 适用于生产环境。也可用于Java初学者配置部署环境。 内容有: 一、 安装JDK 1.1 目的 1.2 安装...
演示配置多个Connector <Connector port="8860" protocol="org.apache.coyote.http11.Http11
最全的Tomcat配置方式!赶紧来下载吧
Tomcat配置文件server.xml进行多域名多服务的相关配置,以实际生产环境为例进行配置操作。适合一台服务器运行多个项目的小伙伴进行参考配置
NULL 博文链接:https://japankn.iteye.com/blog/577931
这里尤其要注意设置协议这一块,众所周知,Tomcat默认用的是BIO,在生产环境中,最差也得用NIO吧,最好是APR,那么对应的协议类如下:在实际应用的时候,可
本文档主要针对tomcat热部署需要修改哪些配置文件,如何实现热部署,提供解决说明
使用一个spring MVC样例来说明jreloader的tomcat热部署
java项目生产环境配置.docx
以Nginx作为反向代理再用Tomcat驱动Java Web程序是当今很流行的一种方案,那么这里我们就着眼于最基本的生产环境搭建,一起来看一下Linux下Tomcat+Nginx服务器环境安装配置的简明教程
一、创建生产密钥和证书 Tomcat 目前只能操作 JKS、PKCS11、PKCS12 格式的密钥存储库。JKS 是 Java 标准的“Java ...JAVA_HOME是已经配置好的Java环境变量 该命令将在用户的主目录下创建一个新文件:.keystore,如果
生产环境一般会使用了redis,所以主要是编译tomcat-redis-session-manager来达到tomcat利用redis进配置session共享。包含tomcat7和tomcat8的jar还有相关引用的 pool12包和jedis2.9.1包 整合成最全的jar包下载
包含了springboot 打包jar部署的一键启动和终止脚本(.sh)、nginx生产环境配置文件(.conf)参考示例和自定义错误页面资源,适合中小公司(个人)Linux系统部署springboot项目
Java开发所需要的配置安装文件,jdk,像eclpse,myeclipse,tomcat的安装 都需要配置环境。
如何在WebLogic、Tomcat中配置远程调试,以及在eclipse中如何设置,解决生产环境没有代码环境不好定位BUG的解决方案
tomcat 服务器在JavaEE项目中使用率非常高,所以在生产环境对tomcat的优化也变得非常重要了,对于tomcat的优化,主要是从2个方面入手,一是tomcat本身的配置,另一个是tomcat所运行的Jvm虚拟机的调优 二、Tomcat配置...
因为使用了容器,所以可以很方便的把生产环境和开发环境分开,互不影响,这是 docker 最普遍的一个玩法。更多的玩法还有大规模 web 应用、数据库部署、持续部署、集群、测试环境、面向服务的云计算、虚拟桌面 VDI ...
5、本测试案例单纯为了学习,某些案例并不适用于生产环境,大家根据所需自行调整。 秒杀架构: 架构层级 1、一般商家在做活动的时候,经常会遇到各种不怀好意的DDOS攻击(利用无辜的吃瓜群众夺取资源),导致真正的...
在生产环境中tomcat内存设置不好很容易出现内存溢出。造成内存原因是不一样的,当然处理方式也不一样。 这里根据平时遇到的情况和相关资料进行一个总结。常见的一般会有下面三种情况: 1.OutOfMemoryError: Java...
因为使用了容器,所以可以很方便的把生产环境和开发环境分开,互不影响,这是 docker 最普遍的一个玩法。更多的玩法还有大规模 web 应用、数据库部署、持续部署、集群、测试环境、面向服务的云计算、虚拟桌面 VDI ...