运维最佳
集中化
自动化
标准化
虚拟化
分布式
1)使用yum安装squid软件包:
2)修改/etc/squid/squid.conf配置文件:
[root@svr5 ~]# vim /etc/squid/squid.conf
.. ..
http_port 80 vhost //设置反向代理
visible_hostname svr5.tarena.com //设置主机名,默认没有该语句
cache_peer 192.168.2.100 parent 80 0 originserver //定义后端真实服务器信息
cache_dir ufs /var/spool/squid 200 16 256 //硬盘缓存,缓存容量为200M,自动创建16个一级子目录和256个二级子目录
http_access allow all
3)启动squid服务,并设置为开机启动:
4)squid服务通过TCP 80端口监听客户端请求:
curl http://192.168.4.5
优点
加速网站
×××
squid代理:功能更全面,性能更差
squid缓存是存在硬盘/var/spool/squid
varnish代理:功能弱,性能更强,专门做反向代理。
缓存:内存或硬盘
步骤二:部署Varnish缓存服务器
1)编译安装软件
[root@svr5 ~]# yum -y install gcc readline-devel pcre-devel //安装软件依赖包
[root@svr5 ~]# useradd -s /sbin/nologin varnish //创建账户
[root@svr5 ~]# tar -xzf varnish-3.0.6.tar.gz
[root@svr5 ~]# cd varnish-3.0.6
[root@svr5 varnish-3.0.6]# ./configure --prefix=/usr/local/varnish
[root@svr5 varnish-3.0.6]# make && make install
2)复制启动脚本及配置文件
[root@svr5 varnish-3.0.6]# cp redhat/varnish.initrc /etc/init.d/varnish
[root@svr5 varnish-3.0.6]# cp redhat/varnish.sysconfig /etc/sysconfig/varnish
[root@svr5 varnish-3.0.6]# ln -s /usr/local/varnish/sbin/varnishd /usr/sbin/
[root@svr5 varnish-3.0.6]# ln -s /usr/local/varnish/bin/* /usr/bin/
3)修改Varnish文件
[root@svr5 ~]# vim /etc/sysconfig/varnish (前端配置)
66行:VARNISH_LISTEN_PORT=80 #默认端口
89行:VARNISH_STORAGE_SIZE=64M #定义缓存大小
92行:VARNISH_STORAGE="malloc,${VARNISH_STORAGE_SIZE}" #基于内存方式缓存
4)修改代理配置文件
[root@svr5 ~]# mkdir /etc/varnish
[root@svr5 ~]# cp /usr/local/varnish/etc/default.vcl /etc/varnish/
[root@svr5 ~]# uuidgen > /etc/varnish/secret
[root@svr5 ~]# vim /etc/varnish/default.vcl (后端配置)
backend default {
.host = "192.168.2.100";
.port = "80";
}
[root@svr5 ~]# service varnish start
启动服务 /etc/init.d/varnish start #会有错误,不用理
varnishlog 内存日志
varnishncsa 程序日志
varnish缓存过期
1.等(自动更新)
2.手动更新
(1)进入后台管理
varnishadm -S /etc/varnish/secret -T 127.0.0.1:6082
输入 ban.url . 清理所有
非交互清理
varnishadm -S /etc/varnish/secret -T 127.0.0.1:6082 ban.url .
nginx
./configure --with-模块名称 选择需要安装的模块
./configure --help|grep ssl 查询模块名
配置安装方式
make 根据你的选择,把源码变成二进制
1)使用源码包安装nginx软件包
[root@svr5 ~]# yum –y install gcc pcre-devel openssl-devel //安装常见依赖包
[root@svr5 ~]# useradd –s /sbin/nologin nginx //使用普通用户运行,防止被攻击后只有普通用户权限
[root@svr5 ~]# tar -xf nginx-1.8.0.tar.gz //通常加同名用户配置运行
[root@svr5 ~]# cd nginx-1.8.0
[root@svr5 nginx-1.8.0]# ./configure \
--prefix=/usr/local/nginx \ //指定安装路径
--user=nginx \ //指定用户
--group=nginx \ //指定组
--with-http_ssl_module //开启SSL加密功能
.. ..
nginx path prefix: "/usr/local/nginx"
nginx binary file: "/usr/local/nginx/sbin/nginx"
nginx configuration prefix: "/usr/local/nginx/conf"
nginx configuration file: "/usr/local/nginx/conf/nginx.conf"
nginx pid file: "/usr/local/nginx/logs/nginx.pid"
nginx error log file: "/usr/local/nginx/logs/error.log"
nginx http access log file: "/usr/local/nginx/logs/access.log"
nginx http client request body temporary files: "client_body_temp"
nginx http proxy temporary files: "proxy_temp"
nginx http fastcgi temporary files: "fastcgi_temp"
nginx http uwsgi temporary files: "uwsgi_temp"
nginx http scgi temporary files: "scgi_temp"
[root@svr5 nginx-1.7.10]# make && make install //编译并安装
升级
只更新程序
cp -rp objs/nginx /usr/local/nginx/sbin/
2)nginx命令的用法
[root@svr5 ~]# /usr/local/nginx/sbin/nginx //启动服务
[root@svr5 ~]# /usr/local/nginx/sbin/nginx -s stop //关闭服务
[root@svr5 ~]# /usr/local/nginx/sbin/nginx -s reload //不关闭服务,重新加载配置文件
[root@svr5 ~]# /usr/local/nginx/sbin/nginx –V //查看软件信息,重要可查已安装模块
配置文件
vim /usr/local/nginx/conf/nginx.conf
全局设置【用户,进程,并发】
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
配置用户密码登陆
server {
listen 80;
server_name localhost;
auth_basic "hehe:";
auth_basic_user_file "/usr/local/nginx/pass"; #文件不存在,自建文件存帐号密码
location / {
root html;
index index.html index.htm;
}
安装 yum -y install httpd-tools.x86_64 生成密码文件
命令:htpasswd -c /usr/local/nginx/pass tom 后回车输入密码
追加用户 htpasswd /usr/local/nginx/pass jay (不加C,新建才需要)
日志: tailf /usr/local/nginx/logs/error.log
虚拟主机:
1.基于域名
选择 # another virtual host 的示例修改
ctrl+v 下键选择 后x 删除注释
server {
listen 80;
server_name www.b.com;
location / {
root biebb;
index index.html index.htm;
}
}
2.基于端口
server {
listen 8080;
server_name www.a.com;
location / {
root biebb;
index index.html index.htm;
}
}
3.基于IP
server {
listen 192.168.4.5:80;
server_name www.a.com;
location / {
root biebb;
index index.html index.htm;
}
}
客户端/etc/hosts 本地域名解析文件,比DNS优先级别高
IP www.a.com
IP www.b.com
1.1.1.1 www.baidu.com
192.168.4.5 www.a.com www.b.com
https
加密算法
1.对称加密
2.非对称加密
3.哈希值[数据安全] md5sum 文件
1)生成私钥与证书
[root@svr5 ~]# cd /usr/local/nginx/conf
[root@svr5 ~]# openssl genrsa -out cert.key //生成私钥
[root@svr5 ~]# openssl req -new -x509 -key cert.key -out cert.pem //生成证书
除了国家名2个字母,其他随便填
国家,省份,城市,公司,部门,主机名,邮箱
2)修改Nginx配置文件,设置加密网站的虚拟主机
[root@svr5 ~]# vim /usr/local/nginx/conf/nginx.conf
… …
server {
listen 443 ssl;
server_name www.cc.com;
ssl_certificate cert.pem;
ssl_certificate_key cert.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
}
}
nginx 代理(调度器)
web1
nginx web2
client proxy web3
负载均衡
健康检查(web高可以用)
置Nginx服务器,添加服务器池,实现反向代理功能
1)修改/usr/local/nginx/conf/nginx.conf配置文件
[root@svr5 ~]# vim /usr/local/nginx/conf/nginx.conf
.. ..
http {
.. ..
upstream webserver {
ip_hash;
server 192.168.2.100 weight=1 max_fails=2 fail_timeout=10 down;
server 192.168.2.200 weight=2 max_fails=2 fail_timeout=10;
} #定义集群
.. ..
server {
listen 80;
server_name www.tarena.com;
location / {
proxy_pass http://webserver;
}
}
weight 权重越高,分配越多
max_fails 允许最大失败次数
fail_timeout 失败后不再请求的时间
down 指明不可用
ip_hash 相同客户端访问相同服务器
部署LNMP环境
在RHEL7系统中,源码安装Nginx,使用RPM包安装MariaDB、PHP、PHP-FPM软件。
操作过程中需要安装的软件列表如下:
nginx
mariadb、mariadb-server、mariadb-devel
php、php-fpm、php-mysql
location ~ / {
proxy_pass http://webs;
root html;
index index.html index.htm;
}
nginx配置加 ~ 可以加正则表达式
开启动态文件配置
location ~ .php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
当用户访问PHP页面时:
1.找页面的位置.
2.把找到的页面给了9000(PHP)
查看日志
tailf /usr/local/nginx/logs/error.log
ls /var/log/php-fpm/*
地址重写
1.原有页面被删
2.域名重定向
rewrite 旧 新 [选项]
步骤一:修改配置文件(访问a.html重定向到b.html)
1)修改Nginx服务配置:
[root@svr5 ~]# vim /usr/local/nginx/conf/nginx.conf
.. ..
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
rewrite /a.html /b.html redirect ; #redirect 重新加载地址栏显示
}
}
可以缩短路径
rewrite /a.html /monce/sss/b.html
访问192.168.4.5跳转到www.tmooc.cn
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
rewrite ^/ http://www.tmooc.cn;
location / {
root html;
index index.html index.htm;
}
访问192.168.4.5/a.html跳转到www.tmooc.cn/a.html
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
rewrite ^/(.*) http://www.tmooc.cn/$1; #ngin里用$1代表复制(.*),shell则用\1
location / {
root html;
index index.html index.htm;
}
根据浏览器访问不同页面
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
if ($http_user_agent ~* curl){ # *代表不区分大小写
rewrite ^/(.*)$ /curl/$1 break; #代表所有页面转到html/curl目录下
}
测试
curl http://192.168.4.5/test.html
irefox http://192.168.4.5/test.html
浏览器标示【人-地址栏】 user_agent
设置--浏览设置--浏览器标示[UA]
浏览器【把自己的各种信息都给了服务器】
uc伪装 【设置--浏览器标示--【电脑,手机】】
curl -A firefox http://192.168.4.5/test.html # -A 伪装为 firefox
rewrite 旧地址 新地址 [选项]; #选项可加可不加
旧地址(支持正则)
last 不再读其他rewrite,匹配的rewrite才生效,不匹配不生效。
break 不再读其他语句,结束。
redirect 让地址栏变化(临时重定向)
permament 让地址栏变化(永久重定向)
nginx 优化
1.不显示版本号,为了安全
http {
include mime.types;
default_type application/octet-stream;
server_tokens off;
加server_tokens off;
2.并发量
测试 ab -c 1025 -n 1025 http://192.168.4.5/
1)nginx配置文件
worker_processes 2; //与CPU核心数量一致
worker_connections 65535; //每个worker最大并发连接数,可以往高的写
并发量=worker_processes*worker_connections
2)Linux系统内核
ulimit -a #查看linux用户数量限制
ulinmit -Hn 100000 #H硬限制n最大文件数量 (只有超级用户可以修改),需先修改
ulimit -Sn 100000 #-S软限制n最大文件数量 (普通用户可以修改)
ss -ntup |grep nginx 查看实时连接情况
永久设置
vim /etc/security/limits.conf
#<domain> <type> <item> <value>
#
- hard nofile 100000
- soft nofile 100000
3.头部信息过长
client_header_buffer_size 1k; //默认请求包头信息的缓存
large_client_header_buffers 4 4k; //大请求包头部信息的缓存个数与容量 4*4k的容量,单位小写
4.nginx 压缩(速度,流量,nginx自动压缩,浏览器自动解压)
gzip on; #开启压缩功能
gzip_min_length 1000; #最小1000字节才压缩
gzip_comp_level 4; #压缩的比例1-9,数字越大压缩率越大,默认4
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript; #对什么格式的文件压缩。
对MP4,MP4,jpg不压缩,因为这些格式已经时压缩的了,多媒体文件一般已经时压缩格式。
文件格式参考 vim /usr/local/nginx/conf/mime.types 文件。
5.让用户的浏览器缓存数据
对不变化的数据缓存,
location ~* .(jpg|jpeg|gif|png|css|js|ico|xml)$ {
expires 30d; //定义客户端缓存时间为30天
}
6.自定义错误页面
error_page 404 /index.html;
error_page 414 /c.html;
error_page 401 402 403 414 /c.html;
charset 改成,支持中文
charset utf-8;
步骤二:优化前从客户机访问Nginx服务器测试
1)使用ab高并发测试
[root@svr100 ~]# ab –n 2000 –c 2000 http://192.168.4.5/
Benchmarking 192.168.4.5 (be patient)
socket: Too many open files (24) //提示打开文件数量过多
2)使用脚本测试长头部请求是否能获得响应
[root@svr100 ~]# 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
[root@svr100 ~]# chmod +x buffer.sh
[root@svr100 ~]# ./ 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浏览器的缓存信息,如图-2所示。
图-2
4)客户端使用浏览器访问不存在的页面
[root@svr5 ~]# firefox http://192.168.4.5/tt.html //访问不存在的页面
步骤三:优化Nginx服务器
1)修改Nginx配置文件
[root@svr5 ~]# 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.com;
location / {
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文件修改打开文件最大数量:
[root@svr5 ~]# vim /etc/security/limits.conf
- soft nofile 100000
- hard nofile 100000
[root@svr5 ~]# ulimit –Hn 100000
[root@svr5 ~]# ulimit –Sn 100000
3)提前生成404错误页面,供测试使用:
[root@svr5 ~]# vim /usr/local/nginx/html/40x.html
<h1>~~^^^Error^^^~</h1>
步骤四:优化后从客户机访问Nginx服务器测试
对Nginx服务器进行各种参数优化后,在客户端访问服务器页面,对比优化前与优化后的区别,验证优化是否生效。
TOM
步骤一:部署服务器软件
1)使用RPM安装JDK环境
[root@svr5 ~]# yum –y install java-1.8.0-openjdk //安装JDK
[root@svr5 ~]# yum –y install java-1.8.0-openjdk-headless //安装JDK
[root@svr5 ~]# java –version //查看JAVA版本
2)安装Tomcat
[root@svr5 ~]# tar -xzf apache-tomcat-8.0.30.tar.gz
[root@svr5 ~]# mv apache-tomcat-8.0.30 /usr/local/tomcat
[root@svr5 ~]# ls /usr/local/tomcat
bin/ //主程序目录
lib/ //库文件目录
logs/ //日志目录
temp/ //临时目录
work/ //自动编译目录jsp代码转换servlet
conf/ //配置文件目录
webapps/ //页面目录
步骤二:修改Tomcat配置文件
1)创建测试JSP页面
[root@svr5 ~]# vim /usr/local/tomcat/webapps/ROOT/test.jsp
<html>
<body>
<center>
Now time is: <%=new java.util.Date()%> //显示服务器当前时间
</center>
</body>
</html>
2)启动服务
[root@svr5 ~]# /usr/local/tomcat/bin/startup.sh
3 使用Tomcat部署虚拟主机
3.1 问题
沿用练习二,使用Tomcat部署加密虚拟主机,实现以下要求:
实现两个基于域名的虚拟主机,域名分别为:www.aa.com和 www.bb.com
使用www.aa.com域名访问的页面根路径为/usr/local/tomcat/aa/ROOT
使用www.bb.com域名访问的页面根路径为/usr/local/tomcat/bb/ROOT
访问页面时支持SSL加密通讯
私钥、证书存储路径为/usr/local/tomcat/conf/cert
每个虚拟主机都拥有独立的访问日志文件
3.2 方案
修改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
3.3 步骤
实现此案例需要按照如下步骤进行。
步骤一:配置服务器虚拟主机
1)修改server.xml配置文件,创建虚拟主机
[root@svr5 ~]# vim /usr/local/tomcat/conf/server.xml
… …
<Host name="www.aa.com" appBase="aa" unpackWARS="true" autoDeploy="true">
</Host> #不要放默认HOST范围内
<Host name="www.bb.com" appBase="bb" unpackWARS="true" autoDeploy="true">
</Host>
2)创建虚拟主机对应的页面根路径
[root@svr5 ~]# mkdir -p /usr/local/tomcat/{aa,bb}/ROOT
[root@svr5 ~]# echo "AAA" > /usr/local/tomcat/aa/ROOT/index.html
[root@svr5 ~]# echo "BBB" > /usr/local/tomcat/bb/ROOT/index.html
3)重启Tomcat服务器
[root@svr5 ~]# /usr/local/tomcat/bin/shutdown.sh
[root@svr5 ~]# /usr/local/tomcat/bin/startup.sh
4)客户端设置host文件,并浏览测试页面进行测试
[root@client ~]# vim /etc/hosts
… …
192.168.4.5 www.aa.com www.bb.com
[root@client ~]# firefox http://www.aa.com:8080/
[root@client ~]# firefox http://www.bb.com:8080/
步骤二:修改网站的首页目录(非必须)
1)使用docBase参数可以修改默认网站首页路径
[root@svr5 ~]# 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>
… …
[root@svr5 ~]# mkdir /usr/local/tomcat/aa/base
[root@svr5 ~]# echo "BASE" > /usr/local/tomcat/aa/base/index.html
[root@svr5 ~]# /usr/local/tomcat/bin/shutdown.sh
[root@svr5 ~]# /usr/local/tomcat/bin/startup.sh
步骤三:跳转(非必须)
1)当用户访问http://www.aa.com/test打开/var/www/html目录下的页面
[root@svr5 ~]# 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>
… …
[root@svr5 ~]# echo "Test" > /var/www/html/index.html
[root@svr5 ~]# /usr/local/tomcat/bin/shutdown.sh
[root@svr5 ~]# /usr/local/tomcat/bin/startup.sh
步骤四:配置Tomcat支持SSL加密网站(所有网站都支持HTTPS加密,针对8443端口)
1)创建加密用的私钥和证书文件
[root@svr5 ~]# keytool -genkeypair -alias tomcat -keyalg RSA -keystore /usr/local/tomcat/keystore //提示输入密码为:123456
2)再次修改server.xml配置文件,创建支持加密连接的Connector
[root@svr5 ~]# 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服务器
[root@svr5 ~]# /usr/local/tomcat/bin/catalina.sh stop
[root@svr5 ~]# /usr/local/tomcat/bin/catalina.sh start
4)客户端设置host文件,并浏览测试页面进行测试
[root@client ~]# vim /etc/hosts
… …
192.168.4.5 www.aa.com www.bb.com
[root@client ~]# firefox https://www.test.com:8443/
[root@client ~]# firefox https://www.test.com:8443/
memcache
查找依赖包 yum list |grep memcache
yum -y install php-pecl-memcache.x86_64
需装依赖包
步骤一:构建memcached服务
1)使用yum安装软件包memcached
[root@svr5 ~]# yum -y install memcached
[root@svr5 ~]# rpm -qa memcached
memcached-1.4.15-9.el7.x86_64
2)启动服务并查看网络连接状态验证是否开启成功:
[root@svr5 ~]# systemctl start memcached
[root@svr5 ~]# systemctl status memcached
[root@svr5 ~]# netstat -anptu | grep memcached
tcp 0 0 0.0.0.0:11211 0.0.0.0: LISTEN 2839/memcached
tcp 0 0 :::11211 ::: LISTEN 2839/memcached
udp 0 0 0.0.0.0:11211 0.0.0.0: 2839/memcached
udp 0 0 :::11211 ::: 2839/memcached
步骤二:使用telnet访问memcached服务器
1)使用yum安装telnet
[root@svr5 ~]# yum –y install telnet
2)使用telnet连接服务器测试memcached服务器功能,包括增、删、改、查等操作。
[root@svr5 ~]# telnet 192.168.4.5 11211
Trying 192.168.4.5...
……
set name 0 180 3 //定义变量,变量名称为name,保存180秒
plj //输入变量的值,值为plj
STORED
get name //获取变量的值
VALUE name 0 3 //输出结果
plj
END
add myname 0 180 10 //新建,myname不存在则添加,存在则报错 0代表数据不压缩,存在180秒 3个字符
set myname 0 180 10 //添加或替换变量,需输入10个值
replace myname 0 180 10 //替换,如果myname不存在则报错
get myname //读取变量
append myname 0 180 10 //向变量中追加数据,会追加10个值
delete myname //删除变量
stats //查看状态
flush_all //清空所有
quit //退出登录
nginx优化
1.版本号隐藏
2.并发量(配置文件:进程数*并发量)
linux内存(最大文件数量)ulimit
/etc/security/limits.conf
3.压缩页面80-40K
4.414报错服务器缓存不够 buffer_size
5.让用户的浏览器缓存(仅缓存静态数据,不会变化的数据,图片,视频,音频)
location ~.(jpg|gif|png|icon|mp3|mp4|avi|ravm|rvm)
{
expires 30d;
}
6.服务报错(默认404页面)
error_page 404 /xx.html
tomcat[java]
java[JDK套件],open-jdk
tomcat,jobss,weblogic
tar -xf tomcat
mv tomcat /usr/local/tomcat
vim /usr/local/tomcat/server.xml
<server>
<service>
<connector port=8080>
让tomcat读写用户信息都在memcached上
(默认本地)
java-[扩张包] ---------可以连接memcached
复制 asm-5.1.jar memcached-session-manager-tc8-1.9.2.jar minlog-1.3.0.jar msm-kryo-serializer-1.9.2.jar reflectasm-1.11.1.jar kryo-3.0.3.jar spymemcached-2.11.1.jar kryo-serializers-0.34.jar memcached-session-manager-1.9.2.jar
到 /usr/local/tomcat/lib/ 目录下
cp context.xml /usr/local/tomcat/conf/
<Context>
context.xml内容
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" #调用扩张包
memcachedNodes="mem1:192.168.4.5:11211" #memcached名字.地址
requestUriIgnorePattern=".*.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.JavaSerializationTranscoderFactory"/>
</Context>
memcached特点:内存数据库,重启,关机数据丢失,数据类型少,数度快
预分配内存
redis特点:不希望数据丢失,数据库快,基于内存,持久化存储,数据类型更多,相比memcache慢
安装redis
cd lnmp_soft
tar -xf redis-3.0.6.tar.gz
cd redis-3.0.6 #不用configer ,源包自带
make
make install
但是安装后,没有把程序放到/bin下,也没有配置文件
./utils/install_server.sh 一直回车即可。
redis-benchmark 测试redis性能
redis命令不区分大小写,不设EX ,PX为永久有效
1.字符类型key=value
set key value
get key
append
2.hash ,关系数据存储
tom{
name=tom
age=22
sex=male
}
hmset tomg sex male phone 122 name tom #设置多个key和vale
3.列表(先进后出数据),所有历史记录的功能都使用这种模式
lpush 压入
lpush list a
lpush list b
lpush list c
LRANGE list 0 -1 #读取列表,返回0开始到-1(代表所有)数据
pull 拉出
4.数据生命周期
ttl key #-1代表用不过期,-2代表已过期
EXPIRE key 10 #设置过期时间为10秒
PERSIST key #设置为永不过期
keys * #查询所有数据
del key #删除数据
redis #默认有16张表,0~15 ,
select 1 #切换查询的表
redis 软件自身支持集群支持主从
vim /etc/redis/6379.conf #配置文件
save 900 1 #900秒内有1条记录变化就保存
save 300 10 #300秒内有10条记录变化就保存
save 60 10000 #60秒内有10000条记录变化就保存,3条命令独立
397行: requirepass 123456 #设置密码
/etc/init.d/redis_6379 restart #重启
redis-cli -a 123456 #-a 密码登陆
修改启动脚本43行加个-a 密码,方便控制启动
vim /etc/init.d/redis_6379
$CLIEXEC -a 123456 -p $REDISPORT shutdown
脚本可以用非交互
从服务器(实际工作可以也设置密码)
vim /etc/redis/6379.conf #配置文件211行,218行
211: slaveof 192.168.2.100 6379 #配主服务器
218 : masterauth 123456 #配主服务器密码
/etc/init.d/redis_6379 restart #重启
SVN
版本控制的核心【服务器:共享目录】
并行
串行
所有数据都有备份
步骤一:安装Subversion服务器
1)YUM安装subversion软件
[root@svr5 ~]# yum -y install subversion
[root@svr5 ~]# rpm -q subversion
2)创建版本库
[root@svr5 ~]# mkdir /var/svn/
[root@svr5 ~]# svnadmin create /var/svn/project #创建目录
[root@svr5 ~]# ls /var/svn/project/
conf/ db/ format hooks/ locks/ README.txt
导入目录,数据不是明文显示
cd 到需导入的目录
svn import . file:///var/svn/project1 -m "注释" #将当前目录导入创建的目录下 -m 后面是注释
查看导入的数据
svn list file:///var/svn/project1
3)修改配置文件,创建账户与密码
[root@svr5 ~]# vim /var/svn/project/conf/svnserve.conf #参数不能有空格,顶格写
[general]
These options control access to the repository for unauthenticated
and authenticated users. Valid values are "write", "read",
and "none". The sample settings below are the defaults.
anon-access = none //19行,匿名无任何权限
auth-access = write //20行,有效账户可写
The password-db option controls the location of the password
database file. Unless you specify a path starting with a /,
the file's location is relative to the directory containing
this configuration file.
If SASL is enabled (see below), this file will NOT be used.
Uncomment the line below to use the default password file.
password-db = passwd //密码文件,27行
The authz-db option controls the location of the authorization
rules for path-based access control. Unless you specify a path
starting with a /, the file's location is relative to the the
directory containing this file. If you don't specify an
authz-db, no path-based access control is done.
Uncomment the line below to use the default authorization file.
authz-db = authz //ACL访问控制列表文件,34行
This option specifies the authentication realm of the repository.
If two repositories have the same authentication realm, they should
have the same password database, and vice versa. The default realm
is repository's uuid.
realm = My First Repository
[root@srv5 ~]# vim /var/svn/project/conf/passwd #账户文件
… …
[users]
harry = pass //用户名和密码
tom= pass //用户名和密码
[root@svr5 ~]# cat /var/svn/project/conf/authz #为每个目录作权限
[aliases]
joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average
[groups]
harry_and_tom = harry,tom //定义组账户,组成员为harry和tom
[/] //定义ACL访问控制
harry = rw //用户对项目根路径可读可写
tom = rw
- = r //其他人只读
4)启动服务 2种方法
方法1: #只把/var/svn/projecte1/ 目录共享出去
svnserve -d -r /var/svn/projecte1/ #-d 放后台 -r 指定目录
方法2: #把所有共享目录都发布出去
[root@svr5 ~]# systemctl start svnserve
[root@svr5 ~]# netstat -nutlp |grep svnserve
tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 4043/svnserve
步骤二:客户端测试
下载共享
svn co --username tom --password 132456 svn://192.168.2.100/ code
co(checkout)下载,从svn://192.168.2.100下载到本地的code目录(该目录会自动创建)
修改文件后:
svn ci -m "test" #提交文件
更新文件
svn update
日志
svn log svn://192.168.2.100/var/svn/project1
信息
svn info svn://192.168.2.100/var/svn/project1
新建文件
vim 2.sh
svn add 2.sh
svn ci -m "222"
新建目录
svn mkdir adc
文件重命名
svn mv a.sh b.sh
文件复制
svn cp a.sh aback.sh
文件删除
svn rm zz.sh
svn diff 对比和服务器差异
svn diff 2.sh 对比文件差异
svn cat svn://192.168.2.100/文件名 查看服务器文件
数据还原
1.未提交
svn revert 2.sh 未提交文件还原
2.已提交
svn merge -r6:1 文件
3.本地修改,并提交
cd /tmp
svn -r2 co svn://192.168.2.100 code2 #下载第二2个版本
多人协同
1.修改不同文件
2.修改相同文件不同行
3.修改相同文件相同行
删除多余的,保留好一个 ,mine结尾的为自己修改的
SVN数据备份
步骤二:使用dump指令备份版本库数据
[root@srv5 ~]# svnadmin dump /var/svn/project > project.bak
- Dumped revision 0.
- Dumped revision 1.
- Dumped revision 2.
- Dumped revision 3.
使用备份还原
svnadmin load /var/svn/project2/ < project.bak
制作nginx的RPM包
**生产环境不安装gcc包
1.什么是rpm包
1)rmp是压缩包
yum install 依赖包
先安装一次源码包
./configure
make
make install
/usr/local/nginx
2)rpm包含一些描述信息
步骤:
1.安装rpm-build软件包
yum -y install rpm-build
2)生成rpmbuild目录结构
[root@svr5 ~]# rpmbuild -ba nginx.spec #忽咧报错
[root@svr5 ~]# ls /root/rpmbuild
BUILD BUILDROOT RPMS SOURCES SPECS SRPM
BUILD
BUILDROOT #假根(对rpmbuild这个软件)
RPMS #打包后文件的路径
SOURCES #存放源码包的目录
SPECS #配置文件(基本信息,源码安装步骤)
SRPMS
3)准备工作,将源码软件复制到SOURCES目录
[root@svr5 ~]# cp nginx-1.8.0.tar.gz /root/rpmbuild/SOURCES/
4)创建并修改SPEC配置文件
[root@svr5 ~]# vim SPECS/nginx.spec #必须spec结尾,可以自定义名称,不用则#注释
Name:nginx
Version:1.8.0
Release: 1%{?dist}
Summary:test
License:GPL #一般协议都是GPL,代表可以随意传播安装
URL: www.test.com
Source0:nginx-1.8.0.tar.gz
#BuildRequires: #提示依赖包
#Requires:
%description
test too
%prep
%setup -q #作用,tar解压后cd进去
%build
./configure #修改为./configure --with-http_ssl_module
make %{?_smp_mflags}
%install
make install DESTDIR=%{buildroot}
mkdir -p %{buildroot}/etc/init.d/
install /root/rpmbuild/SPECS/nginx.sh %{buildroot}/etc/init.d/
##注意,这里是将一个脚本拷贝到安装目录,如果没有则不需要该指令
%files
%doc
/etc/init.d/nginx.sh #将前面拷贝的脚本,打包到RPM中
/usr/local/nginx/* #指定打包的目录
%changelog
步骤二:使用配置文件创建RPM包
1)安装依赖软件包
[root@svr5 ~]# yum –y install gcc pcre-devel zlib-devel
2)rpmbuild创建RPM软件包
[root@svr5 ~]# rpmbuild -ba SPECS/nginx.spec
[root@svr5 ~]# ls RPMS/x86_64/nginx-1.8.0-1.x86_64.rpm
[root@svr5 ~]# rpm -qpi RPMS/x86_64/nginx-1.8.0-1.x86_64.rpm
步骤三:安装、卸载软件
[root@svr5 ~]# rpm -ivh RPMS/x86_64/nginx-1.8.0-1.x86_64.rpm
[root@svr5 ~]# rpm -qa |grep nginx
[root@svr5 ~]# /usr/local/nginx/sbin/nginx
[root@svr5 ~]# curl http://127.0.0.1/
[root@svr5 ~]# /usr/local/nginx/sbin/nginx -s stop
[root@svr5 ~]# rpm -e nginx
优化tcp 修改/etc/sysctl.sys
参考地址 http://www.360doc.com/content/14/0606/16/3300331_384326124.shtml
yum -y install unix2dos #unlin文本转windown 文本
本文转自sweak_h 51CTO博客,原文链接:http://blog.51cto.com/13478354/2058288,如需转载请自行联系原作者