工具—远程桌面查看器--VNC 172.40.50.118:8javascript
###################################################php
opration linux高级运维css
day 04html
常见压力测试工具:java
ab -c 并发数 -n 总请求数 URLnode
http_load -p 并发数 -s 测试时间 URLpython
webbench -c 并发数 -t 测试时间 URLlinux
siege -c 并发数 -r 重复次数 URLnginx
#########################################web
nginx全局配置优化:
1.不显示Nginx具体版本号
#vim /usr/local/nginx/conf/nginx.conf
http {
server_tokens off; }
#curl -I http://192.168.4.5
worker_processes; //与CPU核心数量一致
error_logs /var/log/nginx.error_log info; //定义日志级别
##########################################
2.若是客户端访问服务器提示“Too many open files”如何解决
a) 修改系统配置[系统对不少东西有限制]
1.最大开几个进程
2.最大开几个文件
3.登陆人数
# yum -y install httpd-tools
#ab -c 2000 -n 2000 http://192.168.4.5/ (服务器报错too many open files)
event模块优化:
软件自己参数调整:
# ulimilt -a
# vim /etc/security/limits.conf /重起计算机才有效 ,永久有效
#<domain>用户*表示对全部用户有效 <type> <item> <value>
* soft nofile 100000
* hard nofile 100000
# ulimit -Hn 20000 /临时有效
# ulimit -Sn 20000 /H硬限制S软限制
# ulimilt -a
nofile 打开文件数
#ab -c 10000 -n 10000 http://192.168.4.5/ /ab并发c用户n数量
#watch -n 1 ss -s
# ss -s /列出全部打开的网络链接端口
#vim /usr/local/nginx/conf/nginx.conf
worker_processes 2; //与CPU核心数量一致
events {
worker_connections 20000; //每一个worker最大并发链接数
#########################################
3.如何解决客户端访问头部信息过长的问题(http模块优化)
测试脚本(服务器414报错,缓存不够URI Too Large) 请求的地址栏过长超过限定头部信息大小
#!/bin/bash
URL=http://192.168.4.5/index.html?
for i in {1..5000}
do
URL=${URL}v$i=$i
done
curl $URL
http {
client_header_buffer_size //默认请求包头信息的缓存
large_client_header_buffers //大请求包头部信息的缓存个数与容量
client_header_buffer_size 1k; //默认请求包头信息的缓存
large_client_header_buffers 4 4k; //大请求包头部信息的缓存个数与容量k/m/g
//先根据client_header_buffer分配,若是不够,再根据large值分配
##########################################
4.如何让客户端浏览器缓存数据(http模块优化)
在Firefox地址栏内输入about:cache将显示Firefox浏览器的缓存信息
静态缓存在用户的电脑【视频、音乐、图片】
#vim /usr/local/nginx/conf/nginx.conf
server {
location / {}
location ~ \.(jpg|jpeg|gif|png|css|js|ico|xml|flv)$ {
access_log off;
expires 30d; /过时时间30天
} }
#nginx -s reload
#find / -name "*.jpg"
#cp xx.jpg /usr/local/nginx/html/x.jpg
#firefox 192.168.4.5/x.jpg
#firefox about:cache
http://192.168.2.100/a.jpg 2727 bytes 4 2017-07-03 2017-08-02
#########################################
5.error_page 404 //自定义404错误页面
返回首页
返回自定义的报错页面
#vim /usr/local/nginx/conf/nginx.conf
server {
... ...
charset utf-8; /中文字符集
error_page 404 400 /404.html;
}
#nginx -s reload
#cd /usr/local/nginx/html
#echo "网站崩溃了" > 404.html
#########################################
调优方向:
软件:自己参数
硬件:DDR4、ddr3内存条、800Hz、CPU内核数量 2GHz 、 SDD固态盘
操做系统[内核] :/proc/里面
集群
nginx优化:
#curl -I http://192.168.4.5 (查看服务器信息-暴露版本信息)
#vim /usr/local/nginx/conf/nginx.conf
worker_processes 2; //与CPU核心数量一致
events {
worker_connections 10000; //每一个worker最大并发链接数65536
}
http {
server_tokens off; //不显示Nginx具体版本号
client_header_buffer_size 1k; //默认请求包头信息的缓存
large_client_header_buffers 4 4k; //大请求包头部信息的缓存个数与容量k/m/g
//先根据client_header_buffer分配,若是不够,再根据large值分配
######################################
http模块优化:
sendfile on; //提高Nginx读文件性能,访问速度加快
tcp_nodelay on; //关闭TCP的默认延迟发送数据,ping包
keepalive_timeout 10; //保持链接的超时时间,短期不断开,一次握手,屡次请求
gzip on; //压缩页面,节省流量 (全部浏览器都支持gzip解压,mp3、jpg多媒体文件不要压缩)
gzip_min_length 1000; //1000字节如下不压缩
gzip_comp_level 4; //压缩比例,压缩比例越高,cpu消耗越大
gzip_types text/plain text/css application/json application/x-javascript text/xml
application/xml application/xml+rss text/javascript; //压缩格式
open_file_cache max=2000 inactive=20s; //设置服务器文件缓存,最大缓存2000个文件句柄,关闭20秒内无请求的文件句柄
open_file_cache_valid 60s; //文件句柄的有效时间是60秒,60秒后过时
open_file_cache_min_uses 5; //只有访问次数超过5次会被缓存
open_file_cache_errors off; //缓存出错不报错
}
常见扩展名gzip_types:/usr/local/nginx/conf/mime.types auodio声音 video视频
########################################
缓存
浏览器[缓存]
varnish[缓存]异地
nginx硬盘[缓存]
盗连接
youku,letv,aiqiyi,tudou
防止盗链:浏览器向web服务器发送请求时;http头部信息,header的一部分;
Referer:我从哪个页面连接过来
none表示没有referer,即直接访问;blocked有referer但被防火墙或代理删除;
server_name 最后的域名
www.sina.com
Referer:www.sina.com
百度:搜索sina
连接www.sina.com
Referer:www.baidu.com
判断referer是否是www.sina.com
rewrite ^/ http://www.sina.com/a.jpg
步骤:
# cat /usr/local/nginx/conf/nginx.conf
location ~* \.(gif|jpg|png|swf|flv)$ {
valid_referers none blocked www.tarena.com;
if ($invalid_referer) {
rewrite ^/ http://www.tarena.com/403.html;
}}
nginx总结:
用户认证
虚拟主机:IP,端口,域名
SSL加密网站
调度器(负载均衡,web高可用)
LNMP(动态)
地址重写
优化[并发,版本,压缩,缓存,keepalive,自定义报错]
++++++++++++++++++++++++++++++++++++++
tomcat概述:
PHP网站开发;shell运维。java通用;c语言 通用;python通用
apache,nginx:php 不支持java
JAVA网站:Tomcat,weblogic,websphere,Jboss,resin
java的标准: 标准版SE、企业版EE、移动版ME
JDK:java软件开发工具包,运行环境、java工具(编译、排错、打包等)、基础类库
JRE:JDK的子集,java标准实现和核心类库,无工具
红帽光盘自带openjdk,和oracle官方jdk
java Servlet:针对网站,一种扩展web服务器功能的组件规范。可以以种可移植的方法来提供动态的、面向用户的内容,处理用户请求。
常见Servlet容器:IBM--websphere、Oracle--weblogic、Apache--tomcat、RedHat--Jboss
JSP(java server page):网页上的代码以.jsp结尾,SUN推出的相似于ASP的镶嵌型的JSP,把JSP TAG镶嵌到HTML语句中,大大简化和方便了网页的设计和修改
#######################################
bin/ 主程序目录--开startup关shutdown服务; lib/ 库文件目录 ; logs/ 日志目录; temp/ 临时目录 ;work/ 自动编译目录 ; conf/ 配置文件目录 ; webapps/ 页面目录;
server.xml主配置文件;context.xml定义会话管理器JDBC等;tomcat-users.xml用户认证的账号和密码配置文件
tomcat[java编写的Web服务器,可自动解压包,严格区分大小写且无报错提示,需看logs(tailf),启动慢-需等待生成随机数]
查看日志:grep 'failed' /usr/local/tomcat/logs/catalina.2017-07-03.log服务日志 localhost虚拟主机日志
端口8005==shutdown关闭服务; engine调度器 ;appbase基础目录; docbase页面路径;path指定项目不写默认为ROOT项目;
#######################################
安装并启动tomcat:
系统自带默认已安装:java-1.8.0-openjdk.x86_64
cd lnmp_soft
tar -xf apache-tomcat-....
mv apache-tomcat... /usr/local/tomcat //移动到哪就装在哪
/usr/local/tomcat/bin/startup.sh 启动服务
测试页面访问:
netstat -antpu | grep 8080 或java //端口为8080
firefox http://192.168.2.100:8080
tomcat配置文件模版框架:connector 与engine平级
#vim /usr/local/tomcat/conf/server.xml
<server>
<service>
<connector port=8080 /> /默认8080,可改为80端口
<engine default=localhost> /调度器,调用域名
<host name=localhost appbase=webapps>
</host> /一个host一个网站,域名、路径
<host name=www.a.com appbase=
/usr/local/tomcat/webapps/xxx>
</host>
</engine>
</service>
</server>
#######################################
实验1:基于域名的虚拟主机www.a.com,www.b.com
vim /usr/local/tomcat/conf/server.xml
... ...
<Engine ...>
<Host name="www.a.com" appBase="a"
unpackWARs="true" autoDeploy="true">
</Host>
<Host name="www.b.com" appBase="b"
unpackWARs="true" autoDeploy="true">
</Host>
</Engine>
#cd /usr/local/tomcat/
#mkdir -p {a,b}/ROOT
#echo "AAA" > a/ROOT/index.html
#echo "BBB" > b/ROOT/index.html
#/usr/local/tomcat/bin/shutdown.sh
#/usr/local/tomcat/bin/startup.sh
#curl http://www.a.com:8080
#curl http://www.b.com:8080
#####################################
实验2:设置自定义网页ROOT路径(注意大小写)
#vim /usr/local/tomcat/conf/server.xml
... ...
<Host name="www.a.com" appBase="a"
unpackWARS="true" autoDeploy="true">
<Context path="" docBase="chen" reloadable="true"/>
</Host>
<Host name="www.b.com" appBase="b"
unpackWARS="true" autoDeploy="true">
</Host>
#mkdir -p /usr/local/tomcat/a/chen
#echo "chenguizhen" > /usr/local/tomcat/a/chen/index.html
#/usr/local/tomcat/bin/shutdown.sh
#/usr/local/tomcat/bin/startup.sh
实验3:当用户访问test时转到/var/www/html/下找页面,(至关于nginx里的rewrite)
#vim /usr/local/tomcat/conf/server.xml
... ...
<Host name="www.a.com" appBase="a"
unpackWARS="true" autoDeploy="true">
<Context path="/test" docBase="/var/www/html/" reloadable="true"/>
</Host>
#/usr/local/tomcat/bin/shutdown.sh
#/usr/local/tomcat/bin/startup.sh
测试是否打开/var/www/html下的首页:
#firefox http://www.a.com:8080/test/
#########################################
实验4:加密站点
装完jdk后有keytool工具包(注释为<!-- -->)
apache[httpd:80\443, tomcat 8080\8443]
SSL加密网站:
1.生成密钥:
# keytool -genkeypair -alias tomcat -keyalg RSA -keystore /usr/local/tomcat/keystore
备注:
-genkeypair 生成密钥
-alias 别名
-keyalg 算法为RSA
-keystore 密钥文件存储路径及文件名
-keysize 默认1024位
-validity<valDays>有效期天数默认一年,到期网站访问不了
# keytool -genkeypair --help【查看帮助】
2.调用密钥:
# vim /usr/local/tomcat/conf/server.xml / ...84行左右
<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.重启服务测试
firefox https://192.168.2.100:8443
tomcat端口和虚拟主机是独立的,8443能够加密全部网站
8009没有用,能够注释掉
########################################
每一个虚拟主机能够作独立日志
给b网站加日志:复制到b的host里
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs"
prefix="www_b_access_log" suffix=".txt" 扩展名txt
pattern="%h %l %u %t "%r" %s %b" /> /名称上自动加时间
Tomcat 优化
修改Connector属性
<Connector port="8080" protocol="HTTP/1.1"
maxTreads="1000" /最大线程
minSpareTreads="100" /最小空闲线程
maxSpareTreads="1000" /最大空闲线程
enableLookups="false" /不要支持查询dns解析
URIEncoding="utf-8" /编码
acceptCount="1000" /端口队列最大数
/>
1 案例1:Nginx常见问题处理
2 案例2:安装部署Tomcat服务器
3 使用Tomcat部署虚拟主机
1 案例1:Nginx常见问题处理
1.1 问题
本案例要求对Nginx服务器进行适当优化,以提高服务器的处理性能:
而后客户机访问此Web服务器验证效果:
1.2 方案
使用2台RHEL7虚拟机,其中一台做为Nginx服务器(192.168.4.5)、另一台做为测试用的Linux客户机(192.168.4.100),如图-1所示。
图-1
Nginx优化主要从配置文件着手,常见优化参数以下:
1.3 步骤
实现此案例须要按照以下步骤进行。
步骤一:构建Nginx服务器
1)源码安装Nginx软件
1 [root@svr5 ~]# yum -y install gcc pcre-devel openssl-devel //安装常见依赖包
2 [root@svr5 ~]# useradd -s /sbin/nologin nginx
3 [root@svr5 ~]# tar -zxvf nginx-1.8.0.tar.gz
4 [root@svr5 ~]# cd nginx-1.8.0
5 [root@svr5 nginx-1.8.0]# ./configure \
6 > --prefix=/usr/local/nginx \ //指定安装路径
7 > --user=nginx \ //指定用户
8 > --group=nginx \ //指定组
9 > --with-http_ssl_module //开启SSL加密功能
10 [root@svr5 nginx-1.8.0]# make && make install //编译并安装
2)启用Nginx服务并查看监听端口状态
1 [root@svr5 ~]# /usr/local/nginx/sbin/nginx
2 [root@svr5 ~]# netstat -anptu | grep nginx
3 tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 10441/nginx
步骤二:优化前从客户机访问Nginx服务器测试
1)使用ab高并发测试
1 [root@svr100 ~]# ab –n 2000 –c 2000 http://192.168.4.5/
2 Benchmarking 192.168.4.5 (be patient)
3 socket: Too many open files (24) //提示打开文件数量过多
2)使用脚本测试长头部请求是否能得到响应
1 [root@svr100 ~]# cat buffer.sh
2 #!/bin/bash
3 URL=http://192.168.4.5/index.html?
4 for i in {1..5000}
5 do
6 URL=${URL}v$i=$i
7 done
8 curl $URL
9 [root@svr100 ~]# chmod +x buffer.sh
10 [root@svr100 ~]# ./ buffer.sh
11 .. ..
12 <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浏览器的缓存信息,如图-2所示。
图-2
4)客户端使用浏览器访问不存在的页面
1 [root@svr5 ~]# firefox http://192.168.4.5/tt.html //访问不存在的页面
步骤三:优化Nginx服务器
1)修改Nginx配置文件
1 [root@svr5 ~]# vim /usr/local/nginx/conf/nginx.conf
2 .. ..
3 worker_processes 2; //与CPU核心数量一致
4 events {
5 worker_connections 10000; //每一个worker最大并发链接数
6 use epoll;
7 }
8 http {
9 client_header_buffer_size 1k; //默认请求包头信息的缓存
10 large_client_header_buffers 4 4k; //大请求包头部信息的缓存个数与容量
11
12 server {
13 listen 80;
14 server_name www.tarena.com;
15 location / {
16 root html;
17 index index.html index.htm;
18 }
19 location ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$ {
20 expires 30d; //定义客户端缓存时间为30天
21 }
22 error_page 404 /40x.html; //自定义错误页面
23 location = /40x.html {
24 root html;
25 }
26 }
27 }
2)修改Linux操做系统最大打开文件数
经过修改/etc/security/limits.conf文件修改打开文件最大数量:
1 [root@svr5 ~]# vim /etc/security/limits.conf
2 * soft nofile 100000
3 * hard nofile 100000
4 [root@svr5 ~]# ulimit –Hn 10000
5 [root@svr5 ~]# ulimit –Sn 10000
3)提早生成404错误页面,供测试使用:
1 [root@svr5 ~]# vim /usr/local/nginx/html/40x.html
2 <h1>~~~~^^^Error^^^~~~</h1>
步骤四:优化后从客户机访问Nginx服务器测试
对Nginx服务器进行各类参数优化后,在客户端访问服务器页面,对比优化前与优化后的区别,验证优化是否生效。
2 案例2:安装部署Tomcat服务器
2.1 问题
本案例要求部署Tomcat服务器,具体要求以下:
而后客户机访问此Web服务器验证效果:
2.2 方案
使用2台RHEL7虚拟机,其中一台做为Tomcat服务器(192.168.2.5)、另一台做为测试用的Linux客户机(192.168.2.100),如图-3所示。
图-3
使用RPM安装JDK基础环境
使用源码安装部署Tomcat服务器
调整Tomcat配置文件,禁用默认的8009端口
2.3 步骤
实现此案例须要按照以下步骤进行。
步骤一:部署服务器软件
1)使用RPM安装JDK环境
1 [root@svr100 ~]# rpm -ivh jdk-8u77-linux-x64.rpm //安装JDK
2 [root@svr100 ~]# rpm -q jdk1.8.0_77-1.8.0_77-fcs.x86_64 //查看软件安装结果
3 [root@svr100 ~]# java –version //查看JAVA版本
2)安装Tomcat
1 [root@svr100 ~]# tar -xzf apache-tomcat-8.0.30.tar.gz
2 [root@svr100 ~]# mv apache-tomcat-8.0.30 /usr/local/tomcat
3 [root@svr100 ~]# ls /usr/local/tomcat
4 bin/ //主程序目录
5 lib/ //库文件目录
6 logs/ //日志目录
7 temp/ //临时目录
8 work/ //自动编译目录jsp代码转换servlet
9 conf/ //配置文件目录
10 webapps/ //页面目录
步骤二:修改Tomcat配置文件
1)建立测试JSP页面
1 [root@svr100 ~]# vim vim /usr/local/tomcat/webapps/ROOT/test.jsp
2 <html>
3 <body>
4 <center>
5 Now time is: <%=new java.util.Date()%> //显示服务器当前时间
6 </center>
7 </body>
8 </html>
步骤三:验证测试
1)服务器验证端口信息
1 [root@svr100 ~]# netstat -nutlp |grep java //查看java监听的端口
2 tcp 0 0 :::8080 :::* LISTEN 2778/java
3 tcp 0 0 ::ffff:127.0.0.1:8005 :::* LISTEN 2778/java
2)客户端浏览测试页面
1 [root@client ~]# firefox http://127.0.0.1:8080
2 [root@client ~]# firefox http://172.0.0.1:8080/test.jsp
3 使用Tomcat部署虚拟主机
3.1 问题
沿用练习二,使用Tomcat部署加密虚拟主机,实现如下要求:
3.2 方案
修改server.xml配置文件,建立两个域名的虚拟主机,修改以下两个参数块:
1 <Host name=www.test.com appBase="test" unpackWARS="true" autoDeploy="true">
2 </Host>
3 <Host name="www.tomcat.com" appBase="tom" unpackWARS="true" autoDeploy="true">
4 </Host>
生产SSL密钥与证书文件
1 #keytool -genkeypair -alias tomcat -keyalg RSA -keystore /usr/local/tomcat/conf/cert
3.3 步骤
实现此案例须要按照以下步骤进行。
步骤一:配置服务器设置
1)修改server.xml配置文件,建立虚拟主机
1 [root@svr100 ~]# vim /usr/local/tomcat/conf/server.xml
2 … …
3 <Host name="www.test.com" appBase="test" unpackWARS="true" autoDeploy="true">
4 </Host>
5 <Host name="www.tomcat.com" appBase="tom" unpackWARS="true" autoDeploy="true">
6 </Host>
2)建立虚拟主机对应的页面根路径
1 [root@svr100 ~]# mkdir -p /usr/local/tomcat/{test,tom}/ROOT
2 [root@svr100 ~]# echo “test.com” > /usr/local/tomcat/test/ROOT/index.html
3 [root@svr100 ~]# echo “tomcat.com” > /usr/local/tomcat/tom/ROOT/index.html
3)建立加密用的私钥和证书文件
1 [root@svr100 ~]# keytool -genkeypair -alias tomcat -keyalg RSA -keystore /usr/local/tomcat/conf/cert //提示输入密码为:123456
4)再次修改server.xml配置文件,建立加密链接的Connector
1 [root@svr100 ~]# vim /usr/local/tomcat/conf/server.xml
2 … …
3 <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
4 maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
5 keystoreFile="/usr/local/tomcat/conf/keystore" keystorePass="123456" clientAuth="false" sslProtocol="TLS" />
5)为每一个虚拟主机设置不一样的日志文件
1 [root@svr100 ~]# vim /usr/local/tomcat/conf/server.xml
2 <Host name="www.test.com" appBase="test" unpackWARS="true" autoDeploy="true">
3 <Valve className="org.apache.catalina.valves.AccessLogValve"
4 prefix="test_access" suffix=".log"
5 pattern="common"/>
6 </Host>
7 <Host name="www.tomcat.com" appBase="tom" unpackWARS="true" autoDeploy="true">
8 <Valve className="org.apache.catalina.valves.AccessLogValve"
9 prefix="tomcat_access" suffix=".log"
10 pattern="common"/>
11 </Host>
6)重启Tomcat服务器
1 [root@svr100 ~]# /usr/local/tomcat/bin/catalina.sh stop
2 [root@svr100 ~]# /usr/local/tomcat/bin/catalina.sh start
步骤二:配置客户端设置
1)客户端设置host文件,并浏览测试页面进行测试
1 [root@client ~]# vim /etc/hosts
2 … …
3 192.168.4.5 www.test.com www.tomcat.com
4 [root@client ~]# firefox http://www.test.com:8080/
5 [root@client ~]# firefox http://www.tomcat.com:8080/
6 [root@client ~]# firefox https://www.test.com:8443/
7 [root@client ~]# firefox https://www.test.com:8443/
2)查看服务器日志文件
1 [root@svr100 ~]# tail /usr/local/tomcat/logs/test_access.log
2 [root@svr100 ~]# tail /usr/local/tomcat/logs/tomcat_access.log