高级运维(四):Nginx常见问题处理、安装部署Tomcat服务器、使用Tomcat部署虚拟主机

一、Nginx常见问题处理

目标:

本案例要求对Nginx服务器进行适当优化,以提升服务器的处理性能:

1> 不显示Nginx软件版本号

2> 如果客户端访问服务器提示“Too many open files”如何解决

3> 如何解决客户端访问头部信息过长的问题

4> 开启gzip压缩功能,提高数据传输效率

5> 如何让客户端浏览器缓存数据

6> 如何自定义返回给客户端的404错误页面

然后客户机访问此Web服务器验证效果:

1> 使用ab压力测试软件测试并发量

2> 编写测试脚本生成长头部信息的访问请求

3> 客户端访问不存在的页面,测试404错误页面是否重定向

方案:

使用2台RHEL7虚拟机,其中一台作为Nginx服务器(192.168.4.5)、另外一台作为测试用的Linux客户机(192.168.4.100),如下图所示。

Nginx优化主要从配置文件着手,常见优化参数如下:

1> worker_processes //与CPU核心数量一致

2> worker_connections //每个worker最大并发连接数

3> server_tokens //服务器版本号信息

4> client_header_buffer_size //默认请求包头信息的缓存

5> large_client_header_buffers //大请求包头部信息的缓存个数与容量

6> error_page 404 //自定义404错误页面

步骤:

步骤一:构建Nginx服务器

1)源码安装Nginx软件

[[email protected] ~]# yum -y install gcc pcre-devel openssl-devel        //安装常见依赖包

[[email protected] ~]# useradd -s /sbin/nologin nginx

[[email protected] ~]# tar  -zxvf   nginx-1.8.0.tar.gz

[[email protected] ~]# cd  nginx-1.8.0

[[email protected] nginx-1.8.0]# ./configure   \

> --prefix=/usr/local/nginx   \                //指定安装路径

> --user=nginx   \                            //指定用户

> --group=nginx  \                            //指定组

> --with-http_ssl_module                        //开启SSL加密功能

[[email protected] nginx-1.8.0]# make && make install    //编译并安装

2)启用Nginx服务并查看监听端口状态

[[email protected] ~]# /usr/local/nginx/sbin/nginx

[[email protected] ~]# netstat  -anptu  |  grep nginx

tcp        0        0 0.0.0.0:80        0.0.0.0:*        LISTEN        10441/nginx

步骤二:优化前从客户机访问Nginx服务器测试

1)使用ab高并发测试

[[email protected] ~]# ab –n 2000 –c 2000 http://192.168.4.5/

Benchmarking 192.168.4.5 (be patient)

socket: Too many open files (24)                //提示打开文件数量过多

2)使用脚本测试长头部请求是否能获得响应

[[email protected] ~]# cat buffer.sh

#!/bin/bash

URL=http://192.168.4.5/index.html?

for i in {1..5000}

do

URL=${URL}v$i=$i

done

curl $URL

[[email protected] ~]# chmod +x buffer.sh

[[email protected] ~]# ./ buffer.sh

.. ..

<center><h1>414 Request-URI Too Large</h1></center>        //提示头部信息过大

3)使用Firefox浏览器测试客户端缓存

以Firefox浏览器为例,只要在地址栏内输入 http://192.168.4.5/a.jpg,回车后即连接目标主机192.168.4.5的Web服务,获得服务器上的a.jpg图片资源。若访 问成功,再次,在Firefox地址栏内输入about:cache将显示Firefox浏览器的缓存信息,如下图所示。

4)客户端使用浏览器访问不存在的页面

[[email protected] ~]# firefox http://192.168.4.5/tt.html        //访问不存在的页面

步骤三:优化Nginx服务器

1)修改Nginx配置文件

[[email protected] ~]# vim /usr/local/nginx/conf/nginx.conf

.. ..

worker_processes  2;                    //与CPU核心数量一致

events {

worker_connections 65535;        //每个worker最大并发连接数

use epoll;

}

http {

server_tokens off;                    //不显示nginx版本号信息

client_header_buffer_size    1k;        //默认请求包头信息的缓存

large_client_header_buffers  4 4k;        //大请求包头部信息的缓存个数与容量

gzip on;

gzip_min_length 1000;

gzip_comp_level 4;

gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;

server {

listen       80;

server_name  www.tarena.c

location / {om;

root   html;

index  index.html index.htm;

}

location ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$ {

expires        30d;            //定义客户端缓存时间为30天

}

error_page   404  /40x.html;    //自定义错误页面

location = /40x.html {

root   html;

}

}

}

2)修改Linux操作系统最大打开文件数

通过修改/etc/security/limits.conf文件修改打开文件最大数量:

[[email protected] ~]# vim /etc/security/limits.conf

*               soft nofile     100000

*               hard nofile     100000

[[email protected] ~]# ulimit –Hn 100000

[[email protected] ~]# ulimit –Sn 100000

3)提前生成404错误页面,供测试使用:

[[email protected] ~]# vim  /usr/local/nginx/html/40x.html

<h1>~~~~^^^Error^^^~~~</h1>

步骤四:优化后从客户机访问Nginx服务器测试

对Nginx服务器进行各种参数优化后,在客户端访问服务器页面,对比优化前与优化后的区别,验证优化是否生效。

二、安装部署Tomcat服务器

目标:

本案例要求部署Tomcat服务器,具体要求如下:

1> 安装部署JDK基础环境

2> 部署Tomcat服务器安装

3> 创建JSP测试页面,文件名为test.jsp,显示服务器当前时间

然后客户机访问此Web服务器验证效果:

1> 使用火狐浏览器访问Tomcat服务器的8080端口,浏览默认首页

2> 使用火狐浏览器访问Tomcat服务器的8080端口,浏览默认测试页面

方案:

使用2台RHEL7虚拟机,其中一台作为Tomcat服务器(192.168.2.5)、另外一台作为测试用的Linux客户机(192.168.2.100),如下图所示。

1> 使用RPM安装JDK基础环境

2> 使用源码安装部署Tomcat服务器

3> 调整Tomcat配置文件,禁用默认的8009端口

步骤:

步骤一:部署服务器软件

1)使用RPM安装JDK环境

[[email protected] ~]# yum –y install  java-1.8.0-openjdk                //安装JDK

[[email protected] ~]# yum –y install java-1.8.0-openjdk-headless        //安装JDK

[[email protected] ~]# java –version                                    //查看JAVA版本

2)安装Tomcat

[[email protected] ~]# tar -xzf  apache-tomcat-8.0.30.tar.gz

[[email protected] ~]# mv apache-tomcat-8.0.30  /usr/local/tomcat

[[email protected] ~]# ls /usr/local/tomcat

bin/                                            //主程序目录

lib/                                            //库文件目录

logs/                                          //日志目录

temp/                                         //临时目录

work/                                        //自动编译目录jsp代码转换servlet

conf/                                        //配置文件目录

webapps/                                        //页面目录

步骤二:修改Tomcat配置文件

1)创建测试JSP页面

[[email protected] ~]# vim  /usr/local/tomcat/webapps/ROOT/test.jsp

<html>

<body>

<center>

Now time is: <%=new java.util.Date()%>            //显示服务器当前时间

</center>

</body>

</html>

2)启动服务

[[email protected] ~]# /usr/local/tomcat/bin/startup.sh

步骤三:验证测试

1)服务器验证端口信息

[[email protected] ~]# netstat -nutlp |grep java        //查看java监听的端口

tcp        0      0 :::8080              :::*                LISTEN      2778/java

tcp        0      0 ::ffff:127.0.0.1:8005     :::*         LISTEN       2778/java

2)客户端浏览测试页面

[[email protected] ~]# firefox http://127.0.0.1:8080

[[email protected] ~]# firefox http://127.0.0.1:8080/test.jsp

三、使用Tomcat部署虚拟主机

目标:

沿用练习二,使用Tomcat部署加密虚拟主机,实现以下要求:

1> 实现两个基于域名的虚拟主机,域名分别为:www.aa.com和 www.bb.com

2> 使用www.aa.com域名访问的页面根路径为/usr/local/tomcat/aa/ROOT

3> 使用www.bb.com域名访问的页面根路径为/usr/local/tomcat/bb/ROOT

4> 访问页面时支持SSL加密通讯

5> 私钥、证书存储路径为/usr/local/tomcat/conf/cert

6> 每个虚拟主机都拥有独立的访问日志文件

方案:

修改server.xml配置文件,创建两个域名的虚拟主机,修改如下两个参数块:

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

… …

<Host name=www.aa.com appBase="aa" unpackWARS="true" autoDeploy="true">

</Host>

<Host name="www.bb.com" appBase="bb" unpackWARS="true" autoDeploy="true">

</Host>

… …

提示:修改server.xml配置文件,通过在<Host>中添加Context,我们也可以指定页面的根路径位置,默认为ROOT

<Context path="/test" docBase="/var/www/html/" />

生产SSL密钥与证书文件

#keytool -genkeypair -alias tomcat -keyalg RSA -keystore /usr/local/tomcat/keystore

步骤:

步骤一:配置服务器虚拟主机

1)修改server.xml配置文件,创建虚拟主机

[[email protected] ~]# vim /usr/local/tomcat/conf/server.xml

… …

<Host name="www.aa.com" appBase="aa" unpackWARS="true" autoDeploy="true">

</Host>

<Host name="www.bb.com" appBase="bb" unpackWARS="true" autoDeploy="true">

</Host>

2)创建虚拟主机对应的页面根路径

[[email protected] ~]# mkdir -p  /usr/local/tomcat/{aa,bb}/ROOT

[[email protected] ~]# echo "AAA"   > /usr/local/tomcat/aa/ROOT/index.html

[[email protected] ~]# echo "BBB" > /usr/local/tomcat/bb/ROOT/index.html

3)重启Tomcat服务器

[[email protected] ~]# /usr/local/tomcat/bin/shutdown.sh

[[email protected] ~]# /usr/local/tomcat/bin/startup.sh

4)客户端设置host文件,并浏览测试页面进行测试

[[email protected] ~]# vim /etc/hosts

… …

192.168.4.5    www.aa.com  www.bb.com

[[email protected] ~]# firefox http://www.aa.com:8080/

[[email protected] ~]# firefox http://www.bb.com:8080/

步骤二:修改网站的首页目录(非必须)

1)使用docBase参数可以修改默认网站首页路径

[[email protected] ~]# vim /usr/local/tomcat/conf/server.xml

… …

<Host name="www.aa.com" appBase="aa" unpackWARS="true" autoDeploy="true">

<Context path="" docBase="base" />

</Host>

<Host name="www.bb.com" appBase="bb" unpackWARS="true" autoDeploy="true">

</Host>

… …

[[email protected] ~]# mkdir  /usr/local/tomcat/aa/base

[[email protected] ~]# echo "BASE" > /usr/local/tomcat/aa/base/index.html

[[email protected] ~]# /usr/local/tomcat/bin/shutdown.sh

[[email protected] ~]# /usr/local/tomcat/bin/startup.sh

2)测试查看页面是否正确

[[email protected] ~]# firefox http://www.aa.com:8080/    //结果为base页面的内容

步骤三:跳转(非必须)

1)当用户访问http://www.aa.com/test打开/var/www/html目录下的页面

[[email protected] ~]# vim /usr/local/tomcat/conf/server.xml
    … …
    <Host name="www.aa.com" appBase="aa" unpackWARS="true" autoDeploy="true">
    <Context path="/test" docBase="/var/www/html/" />
    </Host>
    <Host name="www.bb.com" appBase="bb" unpackWARS="true" autoDeploy="true">
    </Host>
    … …
    [[email protected] ~]# echo "Test" > /var/www/html/index.html
    [[email protected] ~]# /usr/local/tomcat/bin/shutdown.sh
    [[email protected] ~]# /usr/local/tomcat/bin/startup.sh

2)测试查看页面是否正确

[[email protected] ~]# firefox http://www.aa.com:8080/test    
    //返回/var/www/html/index.html的内容

步骤四:配置Tomcat支持SSL加密网站

1)创建加密用的私钥和证书文件

[[email protected] ~]# keytool -genkeypair -alias tomcat -keyalg RSA -keystore /usr/local/tomcat/keystore                //提示输入密码为:123456

2)再次修改server.xml配置文件,创建支持加密连接的Connector

[[email protected] ~]# vim /usr/local/tomcat/conf/server.xml
    … …
    <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
    maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
    keystoreFile="/usr/local/tomcat/keystore" keystorePass="123456" clientAuth="false" sslProtocol="TLS" />

3)重启Tomcat服务器

[[email protected] ~]# /usr/local/tomcat/bin/catalina.sh stop
    [[email protected] ~]# /usr/local/tomcat/bin/catalina.sh start

4)客户端设置host文件,并浏览测试页面进行测试

[[email protected] ~]# vim /etc/hosts
    … …
    192.168.4.5    www.aa.com  www.bb.com
    [[email protected] ~]# firefox https://www.test.com:8443/
    [[email protected] ~]# firefox https://www.test.com:8443/

步骤五:配置Tomcat日志

1)为每个虚拟主机设置不同的日志文件

[[email protected] ~]# vim /usr/local/tomcat/conf/server.xml
    <Host name="www.aa.com" appBase="aa" unpackWARS="true" autoDeploy="true">
          <Valve className="org.apache.catalina.valves.AccessLogValve"
                   prefix="aa_access" suffix=".log"
                            pattern="common"/>
    </Host>
    <Host name="www.bb.com" appBase="bb" unpackWARS="true" autoDeploy="true">
    <Valve className="org.apache.catalina.valves.AccessLogValve"
                   prefix="bb_access" suffix=".log"
                            pattern="common"/>
    </Host>

2)重启Tomcat服务器

[[email protected] ~]# /usr/local/tomcat/bin/catalina.sh stop
    [[email protected] ~]# /usr/local/tomcat/bin/catalina.sh start

3)查看服务器日志文件

[[email protected] ~]# ls /usr/local/tomcat/logs/

原文地址:https://www.cnblogs.com/baichuanhuihai/p/8206540.html

时间: 2024-10-08 04:13:17

高级运维(四):Nginx常见问题处理、安装部署Tomcat服务器、使用Tomcat部署虚拟主机的相关文章

高级运维之nginx

linux高级运维之nginx Nginx -one: 基本了解 Nginx搭建 用户认证 基于域名的虚拟主机 安全的ssl虚拟主机 基本了解 常见的web服务器比较: Unix和Linux平台:Apache Nginx tengine Tomcat Lighttpd Windows:IIs(Internet information server) Tengine 淘宝引擎 优化了Nginx server:"tarena" 请求头文件中显示的版本 改过的 不要暴露自己的服务器软件及版本

老男孩python高级运维开发课程

L老男孩培训-python培训二期lesson01(11节)01-第一天内容介绍及课前思想02-python介绍及发展03-python 发展04-python安装05-python编程风格06-raw_input用户交互07-用户交互及格式化输出08-python流程控制if_for_while09-python练习程序_员工信息表10-python练习程序_员工信息表_基本实现11-员工信息表_脚本bug处理 L老男孩培训-python培训二期lesson02(9节)01-学生作业讲解展示0

linux高级运维之×××,pssh工具使用

搭建***虚拟专线: GRE ××× 只支持linux 内核内置的功能 内核也是模块化设计的 PPTP ××× 通信不加密 被发现了容易被加防火墙 L2TP+IPSEC ××× 通信加密 专有通道 走公网ip的线路 再在这个线路上开一个私有的线路192..*** linux系统天生就是路由器!! echo "1" > /proc/sys/net/ipv4/ip_forward 打开路由功能 GRE ×××:启用内核模块ip_gre创建一个虚拟×××隧道(10.10.10.0/24

运维自动化神器ansible之安装(一)

运维自动化神器ansible之安装(一) 一.安装部署 yum install ansible 通过rpm -ql命令我们可以看到 ansible 有很多的子命令以及他们的安装位置. [[email protected] ~]# rpm -ql ansible | grep bin /usr/bin/ansible /usr/bin/ansible-2 /usr/bin/ansible-2.7 /usr/bin/ansible-config /usr/bin/ansible-connection

运维自动化之ansible playbook安装mysql

上次介绍了如何使用ansible playbook安装zabbix客户端(http://dl528888.blog.51cto.com/2382721/1436745),这次介绍一下如何使用playbook安装mysql. 下面是安装mysql的信息: mysql_basedir: /data/mysql/basedir                    源码目录 mysql_datadir: /data/mysql/datadir                    数据目录 mysql

llinux高级运维掌握职业技能总结

各位网友大家好,乐乐快跑跑来了,上篇我们说了中级运维所需掌握的技能,今天我们在说高级运维所需掌握的技能.大家在学习的时候,可以感觉到,每个阶段都是在前一阶段的基础上加深印象然后扩展新的内容,同样我们的高级内容也是的,那我们的高级内容要掌握那些呢?请看下面:                    1.shell脚本的熟练使用        2.数据库的熟练操作        3.数据库的主从复制和读写分离        4.服务器的硬件选型与了解        5.熟悉缓存的概念与使用缓存的软件 

运维自动化之ansible playbook安装ruby环境

本来不想打算写安装ruby的,但看几个puppet的群里有人对安装ruby比较茫然,所以这里简单介绍一下如何安装ruby. ps:话说现在也就gitlab.capistrano.puppet等软件使用ruby,最新2010年的软件好的都是python了,比如ansible.salt等. 下面是安装ruby的信息: ruby_version: 1.9.3 ruby_dir: /usr/local gem_version: 1.8.23 bundle_version: 1.6.3 可以看到ruby的

运维自动化之ansible playbook安装node环境

现在介绍如何使用ansible安装node. 下面是安装node的信息: node_dir: /data node_version: 0.10.21 node_port: 3301 可以看到node的版本是0.10.21,测试的node应用服务监听3301端口 备注:此playbook仅能对centos或者redhat的6.x版本进行安装. 下面是安装node的playbook结构 09:33:16 # tree node_* node_delete ├── files ├── handlers

运维自动化之ansible playbook安装lamp环境

下面介绍使用ansible playbook安装lamp环境 下面是apache的安装信息: apr_version: 1.5.0 apr_util_version: 1.5.3 libiconv_version: 1.14 apache_version: 2.4.7 apache_web_dir: /data/webroot/apache apache_log: /data/webroot/apache/logs apache_vhost: /data/webroot/apache/vhost