• Tomcat服务器


    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

    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主配置文件

    /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:

    /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目录不能删,其他的都可以删掉)

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

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

     三、Tomcat多实例

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

    cd /usr/local
    cp -a apache-tomcat-8.0.27 tomcat8_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_processes 1;
    3. events {
    4. worker_connections 1024;
    5. }
    6. http {
    7. include mime.types;
    8. default_type application/octet-stream;
    9. sendfile on;
    10. keepalive_timeout 65;
    11. upstream web_pools {
    12. server 127.0.0.1:8081;
    13. server 127.0.0.1:8082;
    14. }
    15. server {
    16. listen 80;
    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

    将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相关优化

    安全优化

    最重要的优化为如下四项,但不止四种
    降权启动(用普通用户启动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——>过滤出有问题的线程的堆栈信息,找出问题代码块

  • 相关阅读:
    PPK提供的浏览器类型及版本检测方法
    从KPI到OKR,高阶产品人如何推动业务高速增长
    线上流量越发昂贵,如何通过裂变营销实现业务增长?
    快速了解云原生架构
    阿里巴巴超大规模中台型团队研发提效实践
    如何通过数据智能玩转私域流量新生态
    Serverless Kubernetes:理想,现实与未来
    这只猫在云端定居了?边缘计算在天猫精灵云应用上的落地实践
    阿里毕玄:提升代码能力的4段经历
    你女朋友在买买买时,程序员小哥在干嘛?
  • 原文地址:https://www.cnblogs.com/heroke/p/9987232.html
Copyright © 2020-2023  润新知