Tomcat服务器

摘要:
Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。Tomcat和Nginx,APache,lighttpd等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Nginx/Apache服务器。

Tomcat

一、Tomcat简介

Tomcat是Apache软件基金会(ApacheSoftwareFoundation)的Jakarta项目中的一个核心项目,由Apache,Sun和其他一些公司及个人共同开发而成。

Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。

Tomcat和Nginx,APache(httpd),lighttpd等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Nginx/Apache服务器。

Java的容器,运行的是java代码

二、Tomcat安装

需要安装java环境(JDK)

JDK下载:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

Tomcat下载:http://tomcat.apache.org/

部署java环境jdk

jdk的解压安装

tar xf jdk-8u60-linux-x64.tar.gz -C /usr/local/

做软链接方便使用

ln -s /usr/local/jdk1.8.0_60 /usr/local/jdk

添加java环境变量

sed -i.ori '$a export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar' /etc/profile

重启环境变量

source /etc/profile

检查java环境安装情况
which java
java -version查看版本

Tomcat服务器第1张

解压安装Tomcat

tar xf apache-tomcat-8.0.27.tar.gz -C /usr/local

做软链接方便使用

ln -s /usr/local/apache-tomcat-8.0.27 /usr/local/tomcat

配置tomcat环境变量

echo 'export TOMCAT_HOME=/usr/local/tomcat' >> /etc/profile

重启环境变量

source /etc/profile

查看jdk及tomcat目录的属主属组,都修改成root

启动tomcat:

/usr/local/tomcat/bin/startup.sh

tomcat默认监听端口:8080

Tomcat服务器第2张

tomcat主配置文件

/usr/local/tomcat/conf/server.xml

进入tomcat管理端的配置文件

vim /usr/local/tomcat/conf/tomcat-users.xml

在第三十八行上面添加三行代码,开启管理功能,一般不用,开启后登录网页时会输入账号密码

<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="tomcat" password="tomcat" roles="manager-gui,admin-gui"/>

==>开启管理端的功能
==>开启管理员的功能

Tomcat服务器第3张

重启tomcat:

/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh

通过浏览器登录tomcat:192.168.200.101:8080/manager/status
输入账号密码:tomcat tomcat
然后进入tomcat管理端

tomcat主配置文件:/usr/local/tomcat/conf/server.xml

tomcat可以自己解压war包,将war包扔到/usr/local/tomcat/webapps
重启tomcat可以发现webapps多了war包解压后的目录
(webapps为tomcat主页目录,除了root目录不能删,其他的都可以删掉)

Tomcat服务器第4张

使用浏览器进行测试
192.168.200.101:8080/memtest/meminfo.jsp(java都是以jsp结尾)

Tomcat服务器第5张

自定义网站目录,想要直接访问meminfo.jsp没有中间memtest子目录
只要将向访问的东西扔到webapps主页目录里的ROOT目录下即可

三、Tomcat多实例

复制Tomcat目录,再做两个Tomcat,名为tomcat8_1和tomcat8_2

cd /usr/local
cp -a apache-tomcat-8.0.27tomcat8_1
cp -a apache-tomcat-8.0.27 tomcat8_2

修改多实例配置文件

创建多实例的网页跟目录

mkdir -p /data/www/www/ROOT

将网页程序拷贝到,多实例根目录ROOT下

cp /usr/local/tomcat/webapps/memtest/meminfo.jsp /data/www/www/ROOT/

修改多实例配置文件的一下三行

vim /usr/local/tomcat8_1/conf/server.xml

第22行 端口==>监听端口不能相同
第69行 端口
第123行 Host name="域名" appBase="网页根目录路径"

两个多实例都需要修改
将两个实例tomcat服务启动
打开浏览器测试,记得输入域名时输入修改后的端口

四、Tomcat集群

使用nginx+Tomcat反向代理集群

安装nginx

yum -y install pcre-devel openssl-devel
wget -q http://nginx.org/download/nginx-1.10.2.tar.gz
useradd -s /sbin/nologin -M nginx
tar xf nginx-1.10.2.tar.gz -C /usr/src
cd /usr/src/nginx-1.10.2/./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
make && make install

修改Nginx配置文件

创建配置文件模板

egrep -v "#|^$" /usr/local/nginx/conf/nginx.conf.default > /usr/local/nginx/conf/nginx.conf

修改配置文件内容如下

  1. cat/usr/local/nginx/conf/nginx.conf
  2. worker_processes1;
  3. events{
  4. worker_connections1024;
  5. }
  6. http{
  7. include mime.types;
  8. default_type application/octet-stream;
  9. sendfile on;
  10. keepalive_timeout65;
  11. upstream web_pools{
  12. server127.0.0.1:8081;
  13. server127.0.0.1:8082;
  14. }
  15. server{
  16. listen80;
  17. server_name localhost;
  18. location/{
  19. root html;
  20. index index.jsp index.html index.htm;
  21. proxy_pass http://web_pools;
  22. }
  23. }
  24. }

检测语法并启动Nginx

/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx
netstat -antup | grep nginx

五、部署JPress博客
JPress:一个wordpress的java替代版本,使用JFinal开发,需要maven支持

需要apache-maven-3.3.9-bin.tar.gz

解压apache-maven-3.3.9-bin.tar.gz

tar xf apache-maven-3.3.9-bin.tar.gz -C /usr/local

做软链接

ln -s /usr/local/apache-maven-3.3.9 /usr/local/maven

添加环境变量

echo "export MAVEN_HOME=/usr/local/maven" >> /etc/profile
echo 'export PATH="$MAVEN_HOME/bin:$PATH"' >> /etc/profile

测试:mvn -version

Tomcat服务器第6张

将jpress-web-newest.war包放到Tomcat网站根目录下

mv jpress-web-newest.war /usr/local/tomcat/webapps/ROOT/

解压war包:which jar==>jar是war包的解压命令

cd /usr/local/tomcat/webapps/ROOT/jar xf jpress-web-newest.war

安装MySQL

安装mysql二进制
直接解压即可:解压到/usr/local/
创建用户:

useradd -s /sbin/nologin -M mysql

进入/usr/local/mysql-5.5.32-linux/
做个软连接方便使用==>

ln -s mysql-5.5.32-linux /usr/local/mysql

复制配置文件:

/bin/cp support-files/my-small.cnf /etc/my.cnf

做初始化:

映射==>

echo "192.168.200.131 LNMP" > /etc/hosts

创建mysql数据文件目录==>

mkdir -p /usr/local/mysql/data

授权mysql用户管理mysql的安装目录==>

chown -R mysql.mysql /usr/local/mysql

安装初始化mysql依赖包==>

yum -y install libaio

初始化mysql数据库文件==>

/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql

复制mysql启动脚本到mysql的命令路径==>

cd /usr/local/mysql
cp support-files/mysql.server /etc/init.d/mysqld

加x权限,使脚本可执行==>

chmod +x /etc/init.d/mysqld

启动mysql==>

/etc/init.d/mysqld start

给mysql命令做软连接==>

ln -s /usr/local/mysql/bin/* /usr/local/bin

给mysql添加密码==>

mysqladmin -uroot password '123123'

先在mysql创建专用数据库jpress,用于存放blog数据

登录mysql:mysql -uroot -p123123

create database jpress;

创建一个jpress专用管理用户

grant all on jpress.* to jpress@’localhost’ identified by ‘123123’;

用浏览器访问192.168.200.101:8080/install进入jpress安装向导

Tomcat服务器第7张

六、Tomcat相关优化

安全优化

最重要的优化为如下四项,但不止四种
降权启动(用普通用户启动Tomcat)
telnet管理端口保护(修改8005端口,防止别人知道)
ajp连接端口保护(将8009的注释掉,大约在91行)
禁用管理端(webapps首页清空只留ROOT,ROOT目录里的也清空)

性能优化

屏蔽DNS查询enableLookups="false"
默认没有,需添加配置文件如下代码段,在Connector标签位置。表示禁止DNS查询
<Connector port="8081" protocol="HTTP/1.1"
connectionTimeout="6000" enableLookups="false" acceptCount="800"
redirectPort="8443" />

jvm调优

Tomcat最吃内存,只要内存足够,这只猫就跑的快
如果系统资源有限,那就需要进行调优,提高资源使用率
#优化catalina.sh初始化脚本。在catalina.sh初始化脚本中添加以下代码:
#catalina.sh的路径为:/usr/local/tomcat/bin/catalina.sh
#此行优化代码需要加载甲苯的最开始,声明位置。不要放在后边

JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms1024m -Xmx1024m -XX:NewSize=512m -XX:MaxNewSize=512m -XX:PermSize=512m -XX:MaxPermSize=512m"

JVM的调优比较复杂,对于初学的同学们来说掌握这些就足够了。
如果想更详细的理解JVM如何调优,那么请参考网友文章。
http://www.cnblogs.com/xingzc/p/5756119.html

企业案例

Linux下java/http进程高解决案例
生产环境下某台tomcat7服务器,在刚发布的时候一切都很正常,
在运行一段时间后就出现CPU占用很高的问题,基本上是负载一天比一天高。
问题分析:
(1)程序属于CPU密集型,和开发沟通过,排除此类情况
(2)程序代码有问题,出现死循环,可能性极大
问题解决:
(1)开发那边无法排查代码某个模块有问题,从日志上也无法分析得出
(2)我们可以尝试通过jstack命令来精确定位出现错误的代码段,从而拿给开发排查
(1)首先查找进程高的PID号(先找到是哪个PID号的进程导致的)
top -H
(2)查看这个进程所有系统调用(再找到是哪个PID号的线程导致的)
strace -p 进程的PID
(3)如果是web应用,可以继续打印该线程的堆栈信息(找出有问题的代码块)
printf "%x " 线程的PID——>将有问题的线程PID号转换成16进制格式
jstack 进程的PID | grep 线程PID号的十六进制格式 -A 30——>过滤出有问题的线程的堆栈信息,找出问题代码块

免责声明:文章转载自《Tomcat服务器》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇BTrace使用总结shell脚本-批量添加用户下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Vue+Flask部署到阿里云服务器

本文用于记录自己在阿里云部署Vue+Flask组合的详细过程。 在阿里云部署Vue+Flask组合的前提是已经在自己电脑上成功部署,参考:https://minatsuki-yui.github.io/2018/01/04/vue&flask/?from=timeline 阿里云ECS建网站基础配置,参考:https://www.jianshu.c...

MySQL数据备份

MySQL数据备份 #1. 物理备份: 直接复制数据库文件,适用于大型数据库环境。但不能恢复到异构系统中如Windows。 #2. 逻辑备份: 备份的是建表、建库、插入等操作所执行SQL语句,适用于中小型数据库,效率相对较低。 #3. 导出表: 将表导入到文本文件中。 一、使用mysqldump实现逻辑备份 #语法: # mysqldump -h 服务...

nginx反向代理后,重定向失败问题

nginx反向代理后,重定向失败问题 location / { proxy_set_header Host 172.18.0.242:90;proxy_pass http://172.18.0.246; } proxy_set_header Host xxxxxx; 主要是改变头部就行了。 找这个找了很久。...

LDAP-openldap服务部署和测试(YUM安装)

  1. 概述2. 服务端部署过程2.1 软件包说明2.2 部署过程2.3 配置过程3. 测试4. 生成LDIF格式文件4.1 安装migrationtools工具4.2 用migrationtools生成ldif文件4.3 添加ldif到ldap数据库5. 日志配置5.1 openldap的日志级别5.2 配置日志功能6. 客户端配置6.1 基础环境准...

tlinux部署体验

题记:   国内各大云厂商不断开源自己定制优化的os,对大家相互学习借鉴促使不断进步!从开源中学习、进步! ###github https://github.com/Tencent/TencentOS-kernel ###iso/mirrors https://mirrors.cloud.tencent.com/tlinux/2.4/iso/ 安装须知:...

linux中查看nginx、apache、php、mysql配置文件路径

linux高效、稳定,但是也带来维护上的一些问题。配置文件究竟在哪里?????       如何在linux中查看nginx、apache、php、mysql配置文件路径了,如果你接收一个别人配置过的环境,但没留下相关文档。这时该怎么判断找到正确的加载文件路径了。可以通过以下来判断1、判断apache 首先执行命令找到httpd路径 ps aux | gr...