博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
nginx服务器
阅读量:3942 次
发布时间:2019-05-24

本文共 44065 字,大约阅读时间需要 146 分钟。

构建Nginx服务器

主机名 IP地址

client eth0(192.168.4.10/24)
proxy eth0(192.168.4.5/24)
eth1(192.168.2.5/24)
web1 eth1(192.168.2.100/24)
web2 eth1(192.168.2.200/24)

构建Nginx服务器

[root@proxy ~]# yum -y install gcc pcre-devel openssl-devel        //安装依赖包[root@proxy ~]# useradd -s /sbin/nologin nginx[root@proxy ~]# tar  -xf   nginx-1.10.3.tar.gz[root@proxy ~]# cd  nginx-1.10.3[root@proxy nginx-1.10.3]# ./configure   \> --prefix=/usr/local/nginx           指定安装路径> --user=nginx   \                    指定用户> --group=nginx  \                    指定组> --with-http_ssl_module              开启SSL加密功能[root@proxy nginx-1.10.3]# make && make install       							编译并安装conf	配置文件	html	网页	logs	日质	sbin	程序[root@proxy ~]# /usr/local/nginx/sbin/nginx                    	启动服务[root@proxy ~]# /usr/local/nginx/sbin/nginx -s stop            			关闭服务[root@proxy ~]# /usr/local/nginx/sbin/nginx -s reload        			重新加载配置文件[root@proxy ~]# /usr/local/nginx/sbin/nginx -V                			查看软件信息[root@proxy ~]# ln -s /usr/local/nginx/sbin/nginx /sbin/        			方便后期使用[root@proxy ~]# netstat  -anptu  |  grep nginx[root@client ~]# curl http://192.168.4.5					测试首页文件[root@client ~]# firefox http://192.168.4.52.用户认证[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf.. ..server {                    35行        listen       80;        server_name  localhost;        auth_basic "Input Password:";                    #提示信息        auth_basic_user_file "/usr/local/nginx/pass";        			#密码文件        location / {            root   html;            index  index.html index.htm;        }  }[root@proxy ~]# yum -y install  httpd-tools[root@proxy ~]# htpasswd -c /usr/local/nginx/pass   tom        				#创建密码文件[root@proxy ~]# htpasswd  /usr/local/nginx/pass   lsc      				#追加用户,不使用-c选项[root@proxy ~]# cat /usr/local/nginx/pass[root@proxy ~]# nginx -s reload[root@client ~]# firefox http://192.168.4.5					#输入密码后可以访问[root@proxy ~]# vim /usr/local/nginx/conf/nginx.confserver {				35行        listen       80;			端口        server_name  www.A.com;	域名auth_basic "ILY";				认证提示符auth_basic_user_file "/usr/local/nginx/pass";					认证密码文件		#charset koi8-r;		#access_log  logs/host.access.log  main;		location / {		root   html;		指定网站根路径		index  index.html index.htm;        }}........................................:84,93s/#//		把#号替换为空server {				84行	listen       80;			端口	server_name  www.B.com;		域名	charset utf-8;			编码(可以打中文)	location / {		root web;			指定网站根路径		index  index.html index.htm;	}}    [root@proxy ~]# mkdir /usr/local/nginx/web    [root@proxy ~]# echo "加油!" > /usr/local/nginx/web/index.html    [root@client ~]# vim /etc/hosts    192.168.4.5   www.A.com         www.B.com    [root@client ~]# firefox http://www.A.com    [root@client ~]# firefox http://www.B.com[root@proxy ~]# cd /lnmp_soft/php_scripts加密模块对称加密	非对称加密	信息校验111--111	123--ufgdg	AES、DES	RSA、DSA	MD5、sha256除了MD5其它加密方法都是安全的root@client ~]# md5sum anaconda-ks.cfg 81a24d454319c2a5b8b806828e370367  anaconda-ks.cfg		信息校验

生成私钥与证书

[root@proxy ~]# cd /usr/local/nginx/conf[root@proxy conf]# openssl genrsa > cert.key                 生成私钥[root@proxy conf]# openssl req -new -x509 -key cert.key > cert.pem      生成证书			CN[root@proxy conf]# vim /usr/local/nginx/conf/nginx.conf........................................................server {	listen       443 ssl;	server_name  www.C.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;		}	}}[root@proxy ~]# nginx -s reload[root@client ~]# vim /etc/hosts192.168.4.5   www.A.com         www.B.com       www.C.com[root@client ~]# firefox https://www.C.com			信任证书后可以访问

部署LNMP环境

安装的软件

nginx,mariadb,mariadb-server,mariadb-devel,php,php-fpm,php-mysql[root@proxy ~]# yum -y install gcc openssl-devel pcre-devel[root@proxy ~]# useradd -s /sbin/nologin  nginx[root@proxy ~]# tar -xvf nginx-1.12.2.tar.gz[root@proxy ~]# cd nginx-1.12.2[root@proxy nginx-1.12.2]# ./configure   \> --user=nginx   --group=nginx \> --with-http_ssl_module[root@proxy ~]# make && make install[root@proxy ~]# yum -y install   mariadb   mariadb-server   mariadb-devel[root@proxy ~]# yum -y  install  php   php-mysql[root@proxy ~]# cd lnmp_soft/[root@proxy lnmp_soft]# yum -y  install php-fpm-5.4.16-42.el7.x86_64.rpm[root@proxy ~]# vim /usr/local/nginx/html/lsc.php
[root@proxy ~]# php /usr/local/nginx/html/lsc.php[root@proxy ~]# systemctl stop httpd 如果该服务存在则关闭该服务[root@proxy ~]# /usr/local/nginx/sbin/nginx 启动Nginx服务[root@proxy ~]# netstat -utnlp | grep :80[root@proxy ~]# systemctl start mariadb 启动服务器[root@proxy ~]# systemctl status mariadb 查看服务状态[root@proxy ~]# systemctl enable mariadb 设置开机启动[root@proxy ~]# systemctl start php-fpm 启动服务[root@proxy ~]# systemctl status php-fpm 查看服务状态[root@proxy ~]# systemctl enable php-fpm 设置开机启动[root@proxy ~]# firewall-cmd --set-default-zone=trusted[root@proxy ~]# setenforce 0[root@proxy ~]# ps axu | grep php####################################################

LNMP 测试代码,访问 多进程的程序 程序 (硬盘) 进程 (内存) 线程 修改nginx,实现: 如果是静态,则nginx直接返回给用户 如果是php,则卷发给9000端口,php执行,返回

[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conflocation匹配用户的地址栏(域名后面开始)http{	server {		listen 80;		server_name www.D.com;location / { allow all; }		  允许  所有location /abc { deny 1.1.1.1; allow all; }		      拒绝   1.1.1.1     允许  所有location ~ \.php$ { deny all; }		    允许  所有		}	}[root@client ~]# vim /etc/hosts192.168.4.5   www.A.com         www.B.com       www.C.com     www.D.com[root@client ~]# firefox http://www.D.com###################################################[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf		location ~ \.php$ {	65行		root	html;		fastcgi_pass   127.0.0.1:9000;	#	fastcgi_index  index.php;	#	fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;		include        fastcgi.conf;	}[root@client ~]# firefox http://192.168.4.5/lsc.php####################################################

1.安装LNMP,启动服务

2.修改nginx配置 (nginx------->PHP) 动静分离
3.通过编写PHP代码,连接数据库 (读写操作) mysql.php[命令] http://192.168.4.5/mydql.php Nginx--------->PHP----------->MySQL LNMP常见问题 Nginx的默认访问日志文件为/usr/local/nginx/logs/access.log Nginx的默认错误日志文件为/usr/local/nginx/logs/error.log PHP默认错误日志文件为/var/log/php-fpm/www-error.log 如果动态网站访问失败,可用参考错误日志,查找错误信息

#####################################################[root@proxy ~]# cd lnmp_soft/php_scripts/[root@proxy php_scripts]# vim mysql.php[root@proxy php_scripts]# cp mysql.php   /usr/local/nginx/html/[root@client ~]# firefox http://192.168.4.5/mysql.php什么是地址重写?(地址栏被重写,改写了)	www.360buy.com------------>www.jd.com[root@proxy ~]# vim /usr/local/nginx/conf/nginx.confserver {	listen       80;	server_name  www.A.com;	rewrite /a.html   /b.html;#auth_basic "I L Y";#auth_basic_user_file "/usr/local/nginx/pass";		location / {		root   html;		index  index.html index.htm;	}[root@proxy ~]# echo "BBb" > /usr/local/nginx/html/b.html[root@proxy ~]# nginx -s reload[root@client ~]# firefox http://192.168.4.5/a.html[root@room9pc01 ~]# nslookup www.baidu.com访问a.html重定向到b.html(跳转地址栏)http://192.168.4.5a.html ---->http://192.168.4.5/b.htmlhttp://www.a.com/a.html --->http://www.a.com/b.html[root@proxy ~]# vim /usr/local/nginx/conf/nginx.confserver {	listen       80;	server_name  www.A.com;	rewrite ^/ http://www.tmooc.cn;	38行[root@proxy ~]# nginx -s reload####################################################[root@proxy ~]# vim /usr/local/nginx/conf/nginx.confserver {	listen       80;	server_name  www.A.com;	#rewrite ^/ http://www.tmooc.cn;	rewrite /(.*) http://www.tmooc.cn/$1;39行[root@proxy ~]# nginx -s reload[root@room9pc01 ~]# tailf /var/log/httpd/access_log

用360浏览器访问真机IP出来测试页面 电脑:访问 (宽) curl 手机:访问 (寨) firefox

vim /local/nginx/html/lsc.html(宽)	vim /local/nginx/html/手机/lsc.html(寨)	if ($http_user_agent ~* "firefox") {	rewrite   /lsc.html  /手机/lsc/html;	}电脑:firefox http://www.baidu.lsc.html手机:firefox http://www.baidu.lsc.html#####################################################[root@proxy ~]# vim /usr/local/nginx/lsc.html		lam[root@proxy ~]# mkdir /usr/local/nginx/html/firefox[root@proxy ~]# vim /usr/local/nginx/html/firefox/lsc.html		lsc[root@client ~]# curl http://192.168.4.5/lsc.html302 Found

302 Found


nginx/1.12.2
[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf server { listen 80; server_name www.A.com; #rewrite ^/ http://www.tmooc.cn; #rewrite /(.*) http://www.tmooc.cn/$1;#auth_basic "I L Y";# auth_basic_user_file "/usr/local/nginx/pass";

这里,~符号代表正则匹配,符号代表不区分大小写 if ($http_user_agent ~ “firefox”) { 识别客户端firefox浏览器

rewrite ^/(.*)$ /firefox/$1;    42行	}[root@proxy ~]# nginx -s reload[root@client ~]# curl http://192.168.4.5/lsc.htmllam[root@client ~]# firefox http://192.168.4.5/lsc.htmllsc地址重写格式【总结】rewrite 旧地址 新地址 [选项];last 不再读其他rewritebreak 不再读其他语句,结束请求redirect 临时重定向permament 永久重定向方法1[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf	rewrite /a.html /b.html last;      rewrite /b.html /c.html;[root@proxy ~]# echo "aaa" > /usr/local/nginx/html/a.htmlupstream webserver {        server 192.168.2.100:80 max_fails=1 fail_timeout=20;        server 192.168.2.200:80;        }[root@proxy ~]# echo "bbb" > /usr/local/nginx/html/b.html[root@proxy ~]# echo "ccc" > /usr/local/nginx/html/c.html[root@proxy ~]# nginx -s reload[root@client ~]# firefox http://192.168.4.5/a.html			bbb[root@client ~]# firefox http://192.168.4.5/b.html			ccc方法2[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf	location /a.html {	rewrite /a.html /b.html break;	}	location /b.html {	rewrite /b.html /c.html;		root   html;		index  index.html index.htm;	}[root@proxy ~]# nginx -s reload[root@client ~]# firefox http://192.168.4.5/a.html			bbb[root@client ~]# firefox http://192.168.4.5/b.html			ccc#####################################################[root@web1 ~]# yum -y install httpd[root@web1 ~]# echo "192.168.2.100" > /var/www/html/index.html[root@web1 ~]# systemctl start httpd[root@web2 ~]# yum -y install httpd[root@web2 ~]# echo "192.168.2.200" > /var/www/html/index.html[root@web2 ~]# systemctl start httpd[root@proxy ~]# curl http://192.168.2.100192.168.2.100[root@proxy ~]# curl http://192.168.2.200192.168.2.200[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf#       location /a.html {#       rewrite /a.html /b.html break;#       }#       location /b.html {#       rewrite /b.html /c.html;.................................................http {.................................................upstream webserver {通过ip_hash设置调度规则为:相同客户端访问相同服务器        server 192.168.2.100:80;        server 192.168.2.200:80;        }.................................................server {#       rewrite ^/(.*) http://www.tmooc.cn/$1;#auth_basic "I L Y";#        auth_basic_user_file "/usr/local/nginx/pass";        #if ($http_user_agent ~* "firefox") {        #rewrite ^(.*)$   /firefox/$1;        #}#       location /a.html {#       rewrite /a.html /b.html break;#       }#       location /b.html {#       rewrite /b.html /c.html;        location / {        proxy_pass http://webserver;            root   html;            index  index.html index.htm;        }[root@proxy ~]# nginx -s reload[root@client ~]# curl http://192.168.4.5192.168.2.100[root@client ~]# curl http://192.168.4.5192.168.2.200

weight设置服务器权重值,默认值为1 max_fails设置最大失败次数 fail_timeout设置失败超时时间,单位为秒 down标记服务器已关机,不参与集群调度


[root@proxy ~]# vim /usr/local/nginx/conf/nginx.confupstream webserver {        server 192.168.2.100:80 weight=2;						全中是2        server 192.168.2.200:80;	默认是1        }[root@proxy ~]# nginx -s reload[root@client ~]# curl http://192.168.4.5192.168.2.100[root@client ~]# curl http://192.168.4.5192.168.2.100[root@client ~]# curl http://192.168.4.5192.168.2.200[root@proxy ~]# vim /usr/local/nginx/conf/nginx.confupstream webserver {        server 192.168.2.100:80 max_fails=4					最大失败次数4次fail_timeout=20;如果失败了超时时间20秒        server 192.168.2.200:80;        }[root@proxy ~]# nginx -s reload[root@client ~]# curl http://192.168.4.5192.168.2.100[root@client ~]# curl http://192.168.4.5192.168.2.200[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf.. ..http {.. ..upstream webserver {                server 192.168.2.100 weight=1 max_fails=1 fail_timeout=30;                server 192.168.2.200 weight=2 max_fails=2 fail_timeout=30;                server 192.168.2.101 down;        }#weight设置服务器权重值,默认值为1#max_fails设置最大失败次数#fail_timeout设置失败超时时间,单位为秒#down标记服务器已关机,不参与集群调度.. ..server {        listen        80;        server_name  localhost;            location / {            proxy_pass http://webserver;        }}[root@proxy ~]# nginx -s reload[root@client ~]# curl http://192.168.4.5192.168.2.100[root@client ~]# curl http://192.168.4.5192.168.2.200[root@client ~]# curl http://192.168.4.5192.168.2.200相同客户端访问相同Web服务器:nginx		web1(登陆,记住你的登陆状态proxy 		web2(登陆)[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf 			ip_hash;	server 192.168.2.100 weight=1 max_fails=2 fail_timeout=10;	server 192.168.2.200 weight=2 max_fails=2 fail_timeout=10;        }[root@proxy ~]# nginx -s reload[root@client ~]# curl http://192.168.4.5192.168.2.200一直是192.168.2.200[root@web2 ~]# systemctl stop httpd[root@client ~]# curl http://192.168.4.5192.168.2.100一直是192.168.2.100IP----------------->IP (23.35.11.87)hash%2 =0IP----------------->IP (23.35.11.87)hash%2 =0IP----------------->IP (1.1.1.1)HASH%2 =1IP----------------->IP (1.1.1.1)HASH%2 =1[root@client ~]# echo 192.168.4.5 | md5sum

7层http代理[dhcp,ftp,ssh,http,dns…]

4层tcp/udp代理

http {	upstrream 名称  {}	proxy_pass http://名称;}Nginx的TCP/UDP调度器卸载[root@proxy ~]# killall nginx		把nginx全部杀死[root@proxy ~]# rm -rf /usr/local/nginx/	把配置文件删除编译安装必须要使用--with-stream参数开启4层代理模块[root@proxy ~]# tar -xf nginx-1.12.2.tar.gz[root@proxy ~]# cd nginx-1.12-2[root@proxy nginx-1.12.2]# ./configure --with-http_ssl_module --with-strean[root@proxy nginx-1.12.2]# make && make install配置Nginx服务器,添加服务器池,实现TCP/UDP反向代理功能[root@proxy nginx-1.12.2]# vim /usr/local/nginx/conf/nginx.confstream {        upstream lsc {	hash $remote_addr consistent;	不变        server 192.168.2.100:22; #后端SSH服务器的IP和端口        server 192.168.2.200:22;}        server {        listen 123;		  #Nginx监听的端口        proxy_pass lsc;}}http {[root@proxy nginx-1.12.2]# nginx[root@client ~]# ssh 192.168.4.5[root@client ~]# ssh -p 123 192.168.4.5[root@web1 ~]# [root@client ~]# ssh -p 123 192.168.4.5[root@web2 ~]#

nginx功能: 虚拟主机,用户认证,加密,LNMP,地址重写,集群调度(代理) 优化nginx 如何自定义返回给客户端的404错误页面 如何查看服务器状态信息 如果客户端访问服务器提示“Too many open files”如何解决 如何解决客户端访问头部信息过长的问题 如何让客户端浏览器缓存数据 日志切割 开启gzip压缩功能,提高数据传输效率 开启文件缓存功能

修改Nginx配置文件,自定义报错页面

[root@proxy nginx-1.12.2]# vim /usr/local/nginx/conf/nginx.conferror_page   404  /40x.html;    #自定义错误页面[root@proxy ~]# vim /usr/local/nginx/html/404.html         		 #生成错误页面Ym Lost my page.[root@client ~]# firefox http://192.168.4.5/xxxxYm Lost my page

如何查看服务器状态信息(非常重要的功能)

[root@proxy ~]# killall nginx[root@proxy ~]# rm -rf /usr/local/nginx/[root@proxy ~]# yum -y reinstall gcc pcre-devel openssl-devel				安装常见依赖包[root@proxy ~]# cd lnmp_soft/[root@proxy lnmp_soft]# tar -zxvf nginx-1.12.2.tar.gz[root@proxy nginx-1.12.2]# ./configure > --with-http_ssl_module 		开启SSL加密功能> --with-stream 				开启TCP/UDP代理模块> --with-http_stub_status_module	开启status状态页面[root@proxy nginx-1.12.2]# make && make install						编译并安装

代理服务器 web1 client------------->代理服务器 web2 7层代理:只能做web代理

http{		upstream 名称 {			ip_hash;			server ip1 weight=2 max_fails=3 fail_timeout=20;			server ip2;	}	server {		listen 80;		server_name xxx;		proxy_pass http://名称1;		}	}4层代理:tcp,udp,所有服务的代理dns,mysql,smtp	./configure --with-stream		stream {			upstream {server ip1; server ip2}			server {listen 123; proxy_pass 名称2}}	http{}	nginx代理,httpd代理,tomcat代理	nginx代理(web,代理,正则,4层代理新功能)	haproxy代理(效露更快,功能更强,正则支持渣)	office,wps

***优化:

1.自定义报错,默认报错404,error_page 404 /文件名;

2.査看nginx状态模块–with-http_stub_status_module

如何查看服务器状态信息(非常重要的功能)

[root@proxy ~]# killall nginx[root@proxy ~]# rm -rf /usr/local/nginx/[root@proxy ~]# yum -y reinstall gcc pcre-devel openssl-devel				安装常见依赖包[root@proxy ~]# cd lnmp_soft/[root@proxy lnmp_soft]# tar -zxvf nginx-1.12.2.tar.gz[root@proxy nginx-1.12.2]# ./configure > --with-http_ssl_module 		开启SSL加密功能> --with-stream 				开启TCP/UDP代理模块> --with-http_stub_status_module	开启status状态页面[root@proxy nginx-1.12.2]# make && make install						编译并安装[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf        location /ABC {                stub_status on;			#allow IP地址;			允许			#deny  IP地址;			拒绝                }[root@proxy ~]# nginx[root@client ~]# curl http://192.168.4.5/ABCActive connections: 1Active connections:当前活动的连接数量server accepts handled requestsAccepts:已经接受客户端的连接总数量 Handled:已经处理客户端的连接总数量 37 37 319  握手 请求Reading: 0 Writing: 1 Waiting: 0Reading:当前服务器正在读取客户端请求头的数量Writing:当前服务器正在写响应信息的数量Waiting:当前多少客户端在等待服务器的响应优化Nginx并发量	静态网页 (上万)	大小10K	动态网页 (几千)[root@proxy ~]# ab -c 200 -n 200 http://192.168.4.5/			ab(浏览器) -c(多少人) -n(多少次) 网站[root@client ~]# firefox http://192.168.4.5/ABC[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf.. ..worker_processes  2;           与CPU核心数量一致events {worker_connections 65535;      每个worker最大并发连接数use epoll;}[root@proxy ~]#  which ab/usr/bin/ab[root@proxy ~]# rpm -qf /usr/bin/ab优化Linux内核参数(最大文件数量)Linux内核对计算机可以打开多少文件是有限制的1024[root@proxy ~]# ulimit -a	     查看所有属性值[root@proxy ~]# ulimit -Hn 100000   设置硬限制(临时规则)[root@proxy ~]# ulimit -Sn 100000   设置软限制(临时规则)[root@proxy ~]# vim /etc/security/limits.conf............................................\*		soft	nofile		100000用户或组	软限制	需要限制的项目		限制的值*		hard	nofile		100000用户或组	软限制	需要限制的项目		限制的		硬限制或软限制[root@proxy ~]# ab -c 2000 -n 2000 http://192.168.4.5/优化Nginx数据包头缓存[root@proxy ~]# cat lnmp_soft/buffer.sh #!/bin/bashURL=http://192.168.4.5/index.html?for i in {1..5000}do    URL=${URL}v$i=$idonecurl $URL		经过5000次循环后,生成一个长的URL地址栏[root@proxy ~]# ./buffer.sh.. ..

414 Request-URI Too Large

提示头部信息过大[root@proxy ~]# vim /usr/local/nginx/conf/nginx.confhttp { include mime.types; default_type application/octet-stream;client_header_buffer_size 1k; 默认请求包头信息的缓存large_client_header_buffers 4 1m; 大请求包头部信息的缓存个数与容量[root@proxy ~]# nginx -s reload[root@proxy lnmp_soft]# bash buffer.sh以Firefox浏览器为例,在Firefox地址栏内输入about:cache[root@proxy ~]# vim /usr/local/nginx/conf/nginx.confserver { listen 80; server_name localhost; location ~* \.(jpg|png)$ { expires 30d;有效期30天 }[root@proxy ~]# nginx -s reload[root@proxy ~]# cp /usr/share/backgrounds/day.jpg /usr/local/nginx/html/[root@proxy ~]# nginx -s reload[root@client ~]# firefox http://192.168.4.5/day.jpg日志切割[root@proxy ~]# cd /usr/local/nginx/logs/[root@proxy logs]# ab -c 100 -n 100000 http://192.168.4.5/[root@proxy logs]# mv access.log access-19-03-14.log[root@proxy logs]# cat nginx.pid1996[root@proxy logs]# kill -USR1 1996自动生成access.log[root@proxy ~]# kill -l[root@proxy ~]# ps aux | grep a.sh 査进程号19)SIGSTOP睡一会18)SIGCONT醒来[root@proxy ~]# kill -19 进程号[root@proxy ~]# kill -18 进程号

日志文件越来越大怎么办?单个文件10G? 如何切割?(非常常见的面试题) 每周5的03点03分自动执行脚本完成日志切割工作

[root@proxy ~]# vim /usr/local/nginx/logbak.sh#!/bin/bashdate=`date +%Y%m%d`logpath=/usr/local/nginx/logsmv $logpath/access.log $logpath/access-$date.logmv $logpath/error.log $logpath/error-$date.logkill -USR1 $(cat $logpath/nginx.pid)[root@proxy ~]# crontab -e03 03 * * 5  /usr/local/nginx/logbak.sh对页面进行压缩处理[root@proxy logs]# cd /usr/local/nginx/html/[root@proxy html]# ll -h day.jpg[root@proxy html]# gzip day.jpg[root@proxy html]# ll -h day.jpg.gz[root@proxy html]# cd /usr/local/nginx/conf/[root@proxy conf]# vim mime.typesaudio/mpeg		mp3[root@proxy ~]# vim /usr/local/nginx/conf/nginx.confhttp {.........................................	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;			对特定文件压缩,类型参考mime.types..........................................	}[root@proxy ~]# nginx -s reload服务器内存缓存http { open_file_cache	max=2000	inactive=20s;        open_file_cache_valid	60s;        open_file_cache_min_uses 5;        open_file_cache_errors	off;

设置服务器最大缓存2000个文件句柄,关闭20秒内无请求的文件句柄 #文件句柄的有效时间是60秒,60秒后过期 #只有访问次数超过5次会被缓存

}

优化:8个点

######################################################[web1]编译安装[root@proxy ~]# scp /lnmp_soft.tar.gz   root@192.168.2.100:/[root@web1 ~]# tar -xf /lnmp_soft.tar.gz[root@web1 ~]# cd lnmp_soft/[root@web1 lnmp_soft]# yum -y install gcc pcre-devel   openssl-devel[root@web1 lnmp_soft]# useradd -s /sbin/nologin nginx[root@web1 lnmp_soft]# tar -xf nginx-1.12.2.tar.gz[root@web1 lnmp_soft]# cd nginx-1.12.2/[root@web1 nginx-1.12.2]# ./configure --user=nginx --group=nginx --with-http_ssl_module[root@web1 nginx-1.12.2]# make && make install部署LNMP[root@web1 lnmp_soft]# yum -y install mariadb mariadb-server mariadb-devel[root@web1 lnmp_soft]# yum -y install php php-mysql.x86_64[root@web1 lnmp_soft]# yum -y install php-fpm-5.4.16-42.el7.x86_64.rpm [root@web1 ~]# vim /usr/local/nginx/conf/nginx.conf		location ~ \.php$ {	70行		root           html;		fastcgi_pass   127.0.0.1:9000;#		fastcgi_index  index.php;#		fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;		include        fastcgi.conf;		}[root@web1 ~]# /usr/local/nginx/sbin/nginx		一个端口只能被一个程序使用		nginx用:80	httpd用:80[root@web1 ~]# systemctl restart mariadb[root@web1 ~]# systemctl enable mariadb[root@web1 ~]# systemctl restart php-fpm[root@web1 ~]# systemctl enable php-fpm

Session:存储在服务器端,保存用户名,登陆状态等信息

Cookies:由服务器下发给客户端,保存在客户端的一个文件里
保存的内容主要包括:SessionID

登陆client-------------->server		SID1.用户名,密码----------------->验证 (登陆成功): 生成文件(tom,logined)[root@web1 ~]# echo a | md5sum		文件名60b725f10c9c85c70d97880dfe8191b3  -2.返回页面<-------------------数据包的头部信息(cookies:Sid)3.浏览器保存cookies=Sidclient  F5-------------->server		SID4.再次访问浏览器(cookies)------>Sid[root@web1 ~]# cd lnmp_soft/php_scripts/[root@web1 php_scripts]# tar -xf php-memcached-demo.tar.gz[root@web1 php_scripts]# cd php-memcached-demo/[root@web1 php-memcached-demo]# cp -r * /usr/local/nginx/html/用浏览器访问192.168.2.100/index.php你登陆的用户名,密码都是对了[root@web1 php-memcached-demo]# cd /var/lib/php/session/#####################################################构建memcached服务[root@proxy ~]# yum -y install memcached.x86_64[root@proxy ~]# rpm -qa memcached[root@proxy ~]# systemctl status memcached[root@proxy ~]# systemctl restart memcached[root@proxy ~]# systemctl enable memcached[root@proxy ~]# vim /usr/lib/systemd/system/memcached.service[root@proxy ~]# vim /etc/sysconfig/memcached[root@proxy ~]# cd /usr/lib/systemd/system			启服务都在这个路径下[root@proxy system]# ll[root@proxy ~]# ss -antlp | grep memcached[root@proxy ~]# netstat -antlp | grep memcached			2个都能査看端口-a显示所有端口的信息-n以数字格式显示端口号-t显示TCP连接的端口-u显示UDP连接的端口-l显示服务正在监听的端口信息,如httpd启动后,会一直监听80端口-p显示监听端口的服务名称是什么(也就是程序名称)[root@proxy ~]# setenforce 0[root@proxy ~]# firewall-cmd --set-default-zone=trusted[root@proxy ~]# yum -y install telnet			远程连接[root@proxy ~]# telnet 192.168.4.5 11211...........................................................##提示:0表示不压缩,180为数据缓存时间,3为需要存储的数据字节数量。set name 0 180 3			定义变量,变量名称为nameplj			输入变量的值,值为plj                STOREDget name				获取变量的值VALUE name 0 3			输出结果pljEND##提示:0表示不压缩,180为数据缓存时间,3为需要存储的数据字节数量。add myname 0 180 10		新建,myname不存在则添加,存在则报错set myname 0 180 10		添加或替换变量replace myname 0 180 10	     替换,如果myname不存在则报错get myname				读取变量append myname 0 180 10		向变量中追加数据delete myname			删除变量stats					查看状态flush_all				清空所有quit					退出登录

4.5 + 2.5 web1 (2.100) LNMP无法连接mysql

proxy+memcached
proxy web2 (2.200)扩展包
proxy:做nginx代理+memched启动服务
web1和web2部署LNMP环境

[root@web1 ~]# scp /lnmp_soft.tar.gz root@192.168.2.200:/[root@web2 ~]# tar -xf /lnmp_soft.tar.gz[root@web2 ~]# cd lnmp_soft/[root@web2 lnmp_soft]# tar -xf nginx-1.12.2.tar.gz[root@web2 lnmp_soft]# cd nginx-1.12.2/[root@web2 nginx-1.12.2]# yum -y install gcc pcre-devel openssl-devel[root@web2 nginx-1.12.2]# useradd -s /sbin/nologin nginx[root@web2 nginx-1.12.2]# ./configure --user=nginx --group=nginx --with-http_ssl_module[root@web2 nginx-1.12.2]# make && make install[root@web2 lnmp_soft]# yum -y install mariadb mariadb-server mariadb-devel   php   php-mysql.x86_64   php-fpm-5.4.16-42.el7.x86_64.rpm [root@web2 lnmp_soft]# vim /usr/local/nginx/conf/nginx.conf	location ~ \.php$ {		68行		root	html;		fastcgi_pass   127.0.0.1:9000;#	fastcgi_index  index.php;#	fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;		include	fastcgi.conf;		}[root@web2 lnmp_soft]# /usr/local/nginx/sbin/nginx[root@web2 lnmp_soft]# systemctl restart mariadb[root@web2 lnmp_soft]# systemctl enable mariadb[root@proxy lnmp_soft]# systemctl restart mariadb[root@proxy lnmp_soft]# systemctl enable mariadb[root@proxy ~]# ss -nutlp | grep :80	査看端口谁在用[root@proxy ~]# vim /usr/local/nginx/conf/nginx.confupstream webs {			32行        server 192.168.2.100:80;        server 192.168.2.200:80;        }...........................................................	location / {	proxy_pass http://123;		root   html;		index  index.html index.htm;	}[root@web2 ~]# /usr/local/nginx/sbin/nginx -sreload[root@web1 ~]# vim /usr/local/nginx/html/index.html

Welcome to nginx!2.100

14行[root@web1 ~]# grep h1 /usr/local/nginx/html/index.html[root@web2 ~]# cd lnmp_soft/php_scripts/[root@web2 php_scripts]# tar -xf php-memcached-demo.tar.gz[root@web2 php_scripts]# cp -r php-memcached-demo/* /usr/local/nginx/html/

默认session是存本地,所有集群有问题

memcached数据库:基于内存存数据,快,简单(没有表和数据库)
KV形式存诸数据 key=value
memcached重启后所有数据全部丢失
创建数据库,数据表(设计标题头)
表1—表2
[root@web1 ~]# cd /usr/local/nginx/html/
[root@web1 html]# vim index.php
10行
[root@web1 html]# vim home.php
15行
[root@web1 html]# cd /var/lib/php/session/
[root@web1 session]# ls
sess_l3lr6p60lp85cj1llm8teabh35
[root@web2 ~]# cd /var/lib/php/session/
sess_l3lr6p60lp85cj1llm8teabh35
[root@web1 ~]# yum list | grep memcach
[root@web1 ~]# yum -y install php-pecl-memcache.x86_64
[root@web2 ~]# yum -y install php-pecl-memcache.x86_64
[root@web1 ~]# vim /etc/php-fpm.d/www.conf
[root@web2 ~]# vim /etc/php-fpm.d/www.conf
php_value[session.save_handler] = memcache
php_value[session.save_path] = “tcp://192.168.2.5:11211”
[root@web1和2 ~]# systemctl restart php-fpm
[root@web1和2 ~]# systemctl enable php-fpm
nginx+php,Python
Tomcat+Java

部署Tomcat服务器软件

[root@web1 ~]# rpm -qa | grep jdk[root@web1 ~]# yum -y install  java-1.8.0-openjd						安装JDK[root@web1 ~]# yum -y install java-1.8.0-openjdk-headless					安装JDK[root@web1 ~]# java -version		查看JAVA版本[root@web1 ~]# cd lnmp_soft/[root@web1 lnmp_soft]# tar -xf apache-tomcat-8.0.30.tar.gz[root@web1 lnmp_soft]# mv apache-tomcat-8.0.30   /usr/local/tomcat[root@web1 lnmp_soft]# cd /usr/local/tomcat[root@web1 ~]# ls /usr/local/tomcatbin/				#主程序目录lib/				#库文件目录logs/				#日志目录  temp/				#临时目录work/				#自动编译目录jsp代码转换servletconf/				#配置文件目录webapps/			#页面目录[root@web1 ~]# ls /usr/local/tomcat/bin/startup.sh				#启动服务[root@web1 tomcat]# ss -ntulp | grep tomcat[root@web1 tomcat]# ss -ntulp | grep java[root@web1 tomcat]# firefox http://192.168.2.100:8080[root@web1 ~]# ls /usr/local/tomcat/bin/shutdown.sh				#关闭服务[root@web1 ~]# vim /usr/local/tomcat/webapps/ROOT/lsc.jsp
Now time is: <%=new java.util.Date()%> 显示服务器当前时间
[root@web1 ROOT]# firefox http://192.168.2.100:8080/lsc.jsp使用Tomcat部署虚拟主机[root@web1 ~]# vim /usr/local/tomcat/conf/server.xml.........................................................
.........................................................[root@web1 ~]# /usr/local/tomcat/bin/shutdown.sh[root@web1 ~]# /usr/local/tomcat/bin/startup.sh[root@web1 ~]# ss -nutlp | grep java[root@web1 ~]# mkdir -p /usr/local/tomcat/{A,B}/ROOT[root@web1 ~]# echo "AAA" > /usr/local/tomcat/A/ROOT/index.html[root@web1 ~]# echo "BBB" > /usr/local/tomcat/B/ROOT/index.html[root@proxy ~]# vim /etc/hosts192.168.2.100 www.A.com www.B.com[root@proxy ~]# firefox http://www.A.com:8080[root@proxy ~]# firefox http://www.B.com:8080[root@proxy ~]# firefox http://www.A.com:8080 http://www.B.com:8080 http://192.168.2.100:8080 &[root@web1 ~]# vim /usr/local/tomcat/conf/server.xml...........................................................
...........................................................[root@web1 ~]# /usr/local/tomcat/bin/shutdown.sh[root@web1 ~]# /usr/local/tomcat/bin/startup.sh[root@proxy ~]# firefox http://www.B.com:8080[root@web1 ~]# vim /usr/local/tomcat/conf/server.xml..........................................................
..........................................................[root@web1 ~]# /usr/local/tomcat/bin/shutdown.sh[root@web1 ~]# /usr/local/tomcat/bin/startup.sh[root@proxy ~]# firefox http://www.A.com:8080/tset配置Tomcat支持SSL加密网站[root@web1 ~]# keytool -genkeypair -alias tomcat -keyalg RSA -keystore /usr/local/tomcat/keystore 提示输入密码为:123456#-genkeypair 生成密钥对#-alias tomcat 密钥别名#-keyalg RSA 定义密钥算法为RSA算法#-keystore 定义密钥文件存储在:/usr/local/tomcat/keystore[root@web1 ~]# vim /usr/local/tomcat/conf/server.xml
去调[root@web1 ~]# /usr/local/tomcat/bin/shutdown.sh[root@web1 ~]# /usr/local/tomcat/bin/startup.sh[root@proxy ~]# firefox https://www.A.com:8443 https://www.B.com:8443 https://192.168.2.100:8443 &排错[root@web1 ~]# tailf /usr/local/tomcat/logs/[root@web1 ~]# tailf /usr/local/tomcat/logs/catalina.2019-03-27.log如果出错[root@web1 ~]# cd /usr/local/tomcat/logscatalina.年.月.日.logcatalina.out配置Tomcat日志[root@web1 logs]# vim /usr/local/tomcat/conf/server.xml
[root@web1 logs]# /usr/local/tomcat/bin/shutdown.sh[root@web1 logs]# /usr/local/tomcat/bin/startup.sh[root@web1 logs]# lsA.com.2019-03-27.log ....................

制作nginx的RPM包

[root@room9pc01 ~]# yum -y install git[root@room9pc01 ~]# git clone https://github.com/redhatedu/1812[root@room9pc01 ~]# ls -d 1812/[root@room9pc01 ~]# cd 1812/[root@room9pc01 1812]# cat test.sh#!/bin/bashfor i in {1..10}do	echo hello $idone[root@room9pc01 1812]# vim test.sh#!/bin/bash#this is a loop scriptfor i in {1..10}do	echo hello $idone[root@room9pc01 1812]# echo "aaa" > a.txt[root@room9pc01 1812]# git add .[root@room9pc01 1812]# git commit -m 'xx' 命令行操作(需要联网的主机,如真实机)[root@pc001 ~]# yum -y install git[root@pc001 ~]# git clone https://github.com/账户名称/仓库名称#clone指令用于将服务器仓库中的资料打包下载到本地[root@pc001 ~]# cd 仓库名称[root@pc001 ~]# 任意修改文件,或新建文件[root@pc001 ~]# git add .#add添加新文件[root@pc001 ~]# git commit -m "test"[root@pc001 ~]# git push#commit和push实现提交代码的功能[root@pc001 ~]# git pull#pull更新,类似于svn updateRPM (怎么用源码包做一个rpm包)rpm-build--读配置文件在我自己的电脑上先把源码编译安装,安装目录/usr/local/nginx把/usr/local/nginx目录打个包,rpm别人使用rpm,解压[root@web1 ~]# yum -y install gcc	必须安装gcc[root@web1 ~]# yum -y install rpm-build[root@web1 ~]# rpmbuild -ba xx.sepc			会报错,没有文件或目录[root@web1 ~]# ls /root/rpmbuild			自动生成的目录结构[root@web1 ~]# cp lnmp_soft/nginx-1.12.2.tar.gz   /root/rpmbuild/SOURCES/[root@web1 ~]# cd rpmbuild/SPECS/[root@web1 ~]# cp lnmp_soft/nginx-1.12.2.tar.gz   /root/rpmbuild/SOURCES/[root@web1 SPECS]# vim nginx.specName:nginxVersion:1.12.2Release:        1%{?dist}Summary:this is a web server#Group:License:GPLURL:www.abc.comSource0:nginx-1.12.2.tar.gz#BuildRequires: #Requires:      %descriptionthis is a web server to.%postuseradd nginxtouch /tmp/nginx.txt%prep%setup -q%build./configure --with-http_ssl_modulemake %{?_smp_mflags}%installmake install DESTDIR=%{buildroot}%files%doc/usr/local/nginx/*%changelog[root@web1 SPECS]# rpmbuild -ba nginx.spec[root@web1 SPECS]# cd /root/rpmbuild/RPMS/x86_64[root@web1 x86_64]# ls[root@web1 x86_64]# killall nginx[root@web1 x86_64]# rm -rf /usr/local/nginx/[root@web1 x86_64]# yum -y install nginx-1.12.2-111.x86_64.rpm[root@web1 x86_64]# ls /usr/local/nginx[root@web1 x86_64]# id nginx[root@web1 x86_64]# ls /tmp/nginx.txt[root@web1 x86_64]# rpm -ql nginx[root@web1 x86_64]# rpm -qi nginx

配置GRE VPN

[root@client ~]# nmcli connection add type ethernet ifname eth3 con-name eth3[root@client ~]# nmcli connection modify eth3 ipv4.method manual ipv4.addresses 201.1.2.10/24 connection.autoconnect yes[root@client ~]# nmcli connection up eth3[root@proxy ~]# nmcli connection add type ethernet ifname eth3 con-name eth3[root@proxy ~]# nmcli connection modify eth3 ipv4.method manual ipv4.addresses 201.1.2.5/24 connection.autoconnect yes[root@proxy ~]# nmcli connection up eth3启用GRE模块(client和proxy都需要操作)[root@proxy ~]# lsmod		显示模块列表[root@proxy ~]# lsmod | wc -l[root@proxy ~]# lsmod  | grep ip_gre					确定是否加载了gre模块[root@proxy ~]# modprobe ip_gre					加载模块ip_gre[root@proxy ~]# lsmod  | grep gre[root@proxy ~]# rmmod ip_gre	删除模块[root@proxy ~]# modinfo ip_gre	`				查看模块信息[root@proxy ~]# cd /lib/modules/3.10.0-693.el7.x86_64/kernel[root@proxy kernel]# find ./ | wc -l2961[root@proxy kernel]# lsdrivers驱动	crypto加密	virt虚拟化	net网络mm内存		[root@proxy kernel]# cd sound/[root@proxy sound]# modprobe ac97_busClient主机创建VPN隧道[root@client ~]# ip help[root@client ~]# ip tunnel helpadd	新建	del	删除	show	査看	名字[root@client ~]# ip tunnel del tun0[root@client ~]# ip tunnel add tun0 mode gre remote 201.1.2.5 local 201.1.2.10ip tunnel add创建隧道(隧道名称为tun0),ip tunnel help可以查看帮助mode设置隧道使用gre模式local后面跟本机的IP地址,remote后面是与其他主机建立隧道的对方IP地址[root@client ~]# ip tunnel | grep tun0[root@client ~]# ip link show | grep tun0[root@client ~]# ip tunnel show | grep tun0					査看隧道[root@client ~]# ip link set tun0 up					激活设置UP[root@client ~]# ip addr add 10.10.10.10/24 peer 10.10.10.5/24 dev tun0add 自己	peer 对方[root@client ~]# ip addr show tun0[root@client ~]# ip a s eth3					査看隧道IP1.激活gre	2.创建隧道	3.配隧道IPProxy主机创建VPN隧道[root@proxy ~]# modprobe ip_gre[root@proxy ~]# ip tunnel add tun0 mode gre remote 201.1.2.10 local 201.1.2.5[root@proxy ~]# ip addr add 10.10.10.5/24 peer 10.10.10.10/24 dev tun0[root@proxy ~]# ip link set tun0 up

1.激活gre

2.创建隧道
3.配隧道IP
缺点:没有加密不适合权一些重要的东西
:基于内核的你排错不是那么好排
优点:命令好敲,简单
:路由器上都支持
部署VPN服务器
安装软件包(软件包参考lnmp_soft)

[root@proxy ~]# cd lnmp_soft/vpn[root@proxy vpn]# yum -y install pptpd-1.4.0-2.el7.x86_64.rpm[root@proxy vpn]# rpm -qc pptpd	査配置文件/etc/ppp/options.pptpd/etc/pptpd.conf/etc/sysconfig/pptpd[root@proxy vpn]# vim /etc/pptpd.conf..........................................................localip 201.1.2.5			服务器本地IPremoteip 192.168.3.100-150	分配给客户端的IP池[root@proxy vpn]# vim /etc/ppp/options.pptpd				/requirerequire-mppe-128			使用MPPE加密数据ms-dns 8.8.8.8			DNS服务器[root@proxy vpn]# vim /etc/ppp/chap-secrets					修改账户配置文件jacob		*		123	 *用户名		服务器标记	密码	客户端[root@proxy vpn]# echo "1" > /proc/sys/net/ipv4/ip_forward				开启路由转发[root@proxy ~]# systemctl start pptpd[root@proxy ~]# systemctl enable pptpd[root@proxy ~]# firewall-cmd --set-default-zone=trusted翻墙设置(非必需操作)[root@proxy vpn]# iptables -t nat -A POSTROUTING -s 192.168.3.0/24 -j SNAT --to-source 201.1.2.5[root@proxy vpn]# ip addr show[root@proxy vpn]# tcpdump -A icmp -i any					抓包部署IPSec服务[root@client ~]# yum -y install libreswan[root@client ~]# yum list | grep  libreswan[root@client ~]# tail -1 /etc/ipsec.conf[root@client ~]# cp lnmp_soft/vpn/myipsec.conf        /etc/ipsec.d/[root@client ~]# cd /etc/ipsec.d/新建IPSec密钥验证配置文件[root@client ipsec.d]# vim  myipsec.confleft=201.1.2.10		重要,服务器本机的外网IPright=%any			允许任何客户端连接创建IPSec预定义共享密钥当是conf主配置文件当是secrets密钥[root@client ipsec.d]# abc.secrets201.1.2.10   %any:    PSK    		"randpass" vpn:ip	所有人	    遇共享密钥		密码[root@client ipsec.d]# systemctl start ipsec[root@client ipsec.d]# netstat -ntulp | grep pluto部署XL2TP服务安装软件包(软件包参考lnmp_soft)[root@client ~]# cd lnmp_soft/vpn/[root@client vpn]# yum -y install xl2tpd-1.3.8-2.el7.x86_64.rpm修改xl2tp配置文件(修改3个配置文件的内容)[root@client ~]#  vim  /etc/xl2tpd/xl2tpd.conf 						修改主配置文件ip range = 192.168.3.128-192.168.3.254						分配给客户端的IP池local ip = 201.1.2.10			VPN服务器的IP地址[root@client ~]# vim /etc/ppp/options.xl2tpd						认证配置require-mschap-v2		添加一行,强制要求认证#crtscts			注释或删除该行#lock	`			注释或删除该行[root@client ~]# vim /etc/ppp/chap-secrets				修改密码文件jacob		*	123	*[root@client ~]# systemctl start xl2tpd[root@client ~]# ss -ntulp | grep xl2tpdgre---> pptp ---> xl2tp+ipsecNTP时间同步安装软件包[root@proxy ~]# yum -y install chrony[root@proxy ~]# rpm -qc chrony		查看配置文件列表修改配置文件[root@proxy ~]# vim /etc/chrony.confserver0 192.168.4.5 iburst	server用户客户端指向上层NTP服务器allow 192.168.4.0/24	允许那个IP或网络访问NTP#deny  192.168.4.1	拒绝那个IP或网络访问NTPlocal stratum 10	设置NTP服务器的层数量[root@proxy ~]# grep allow /etc/chrony.conf[root@proxy ~]# grep ^local /etc/chrony.conf[root@proxy ~]# systemctl  restart  chronyd[root@proxy ~]# systemctl  enable  chronyd[root@proxy ~]# date	时间服务器:vim /etc/chrony.conf	allow 192.168.4.0/24	local stratum 10客户端:vim /etc/chrony.conf	server 192.168.4.5 iburstpssh远程套件工具安装pssh后会提供如下命令:/usr/bin/pnuke	/usr/bin/prsync/usr/bin/pscp.pssh	/usr/bin/pslurp/usr/bin/pssh安装软件包[root@proxy ~]# cd lnmp_soft/[root@proxy lnmp_soft]# yum -y install pssh-2.3.1-5.el7.noarch.rpm[root@proxy ~]# which pssh/usr/bin/pssh修改/etc/hosts本地解析文件[root@proxy ~]# vim /etc/hosts192.168.2.100   web1192.168.2.200   web2192.168.4.10    client创建主机列表文件[root@proxy ~]# vim /root/host.txt			每行一个用户名、IP或域名root@web1root@web2root@client[root@proxy ~]# ssh web1第一次远程别人的主机会有yes或on[root@proxy ~]# ssh -o StrictHostKeyChecking=no web1[root@proxy ~]# man pssh	通过man帮助查看工具选项的作用pssh提供并发远程连接功能-A                使用密码远程其他主机(默认使用密钥)-i                将输出显示在屏幕-H                设置需要连接的主机-h                设置主机列表文件-p                设置并发数量-t                设置超时时间-o dir            设置标准输出信息保存的目录-e dir            设置错误输出信息保存的目录-x                传递参数给ssh[root@proxy ~]# pssh -i -A -H 'web1 web2 client' -x '-o StrictHostKeyChecking=no' echo qwaszx [root@proxy ~]# pssh -i -A -H 'web1 web2 client' echo qwaszx[root@proxy ~]# pssh -i -A -h host.txt echo qwaszx[root@proxy ~]# pssh  -A -h host.txt echo qwaszx[root@proxy ~]# ssh-keygen[root@proxy ~]# ssh-keygen -N '' -f /root/.ssh/id_rsa				非交互生成密钥文件[root@proxy ~]# ssh-copy-id  client[root@proxy ~]# ssh-copy-id  web1[root@proxy ~]# ssh-copy-id  web2[root@proxy ~]# pssh -h host.txt echo abc[root@proxy ~]# pssh -o /tmp/ -h host.txt echo abc[root@proxy ~]# pscp.pssh -h host.txt /etc/hosts/   /root/				批量拷贝pscp.pssh 把你的东西泉给别人pslurp 把别人的东西泉给你[root@proxy ~]# pslurp -h host.txt /etc/passwd    /pass				在当前目录下[root@proxy ~]# ls -d    web1  web2   client[root@proxy ~]# pslurp -h host.txt -L /etc/     /etc/passwd    /pass[root@proxy ~]# ls /etc/web1/   /etc/web2   /etc/client/[root@XXX ~]# sleep 1000[root@proxy ~]# pnuke -h host.txt sleep				批量杀死pssh		批量执行命令pscp.pssh	推送文件pslurp	拉取文件pnuke		杀死进程p		(并发)

Nginx调度器+memcached

session (默认存本地计算机)

vim /etc/php-fpm.d/www.conf最后2行	= flie	= /var/lib/php/session

假如我不想存本地

= memcache	= "tcp://192.168.2.5:11211"systemctl restart php-fpm/usr/local/tomcat/bin/startup.sh/usr/local/tomcat/webpps/ROOT/index.jsp【猫】shell--->php--->python--->java--->c--->汇编Varnish代理软件,nginx (没有开启缓存)Varnish代理+缓存功能		(网页缓存)

用户----------------代理-------------------后端服务器

用户----------------代理

[root@web1 ~]# yum -y install httpd[root@web1 ~]# systemctl restart httpd[root@web1 ~]# firewall-cmd --set-default-zone=trusted[root@web1 ~]# setenforce 0[root@web1 ~]# netstat -anpat | grep httpd[root@proxy ~]# firefox http://192.168.2.100[root@proxy ~]# curl http://192.168.2.100192.168.2.100

部署Varnish缓存服务器(192.168.4.5)

[root@proxy ~]# yum -y install gcc readline-devel 				安装软件依赖包[root@proxy ~]# yum -y install ncurses-devel 				安装软件依赖包[root@proxy ~]# yum -y install pcre-devel				安装软件依赖包[root@proxy ~]# yum -y install \python-docutils-0.11-0.2.20130715svn7687.el7.noarch.rpm				安装软件依赖包[root@proxy ~]# useradd -s /sbin/nologin varnish				创建账户[root@proxy ~]# cd lnmp_soft/[root@proxy lnmp_soft]# tar -xf varnish-5.2.1.tar.gz[root@proxy lnmp_soft]# cd varnish-5.2.1[root@proxy varnish-5.2.1]# ./configure[root@proxy varnish-5.2.1]# make && make install[root@proxy varnish-5.2.1]# varnish
[root@proxy varnish-5.2.1]# cp etc/example.vcl /usr/local/etc/Varnish.vcl[root@proxy varnish-5.2.1]# vim /usr/local/etc/Varnish.vclbackend default { .host = "192.168.2.100"; .port = "80";}[root@proxy varnish-5.2.1]# varnishd -f /usr/local/etc/Varnish.vcl 报错[root@proxy ~]# ss -ntulp | grep :80[root@proxy ~]# /usr/local/nginx/sbin/nginx -s stop[root@proxy ~]# varnishd -f /usr/local/etc/Varnish.vcl[root@client ~]# curl http://192.168.4.5192.168.2.100[root@proxy ~]# varnishlog varnish日志[root@client ~]# curl http://192.168.4.5[root@proxy ~]# varnishncsa 访问日志[root@client ~]# curl http://192.168.4.5[root@proxy ~]# varnishadm 清空缓存数据,支持正则表达式varnish> ban req.url ~ .*varnish> quit不支持exit[root@proxy ~]#

一个项目需要20个人开发

每个人写自己的文件
多人可能修改相同的文件
test.sh 【8个功能】
1.批量创建账户
2.批量修改文件名
3.批量安装软件包
4.。。。。
5.。。。。
有一种软件叫版本控制系统【cvs,git,svn】
安装Subversion服务器

[root@web1 ~]# yum -y install subversion[root@web2 ~]# yum -y install subversion创建版本库[root@web1 ~]# mkdir /var/svn[root@web1 ~]# svnadmin create /var/svn/project[root@web1 ~]# ls /var/svn/project/[root@web1 ~]# du -sh /var/svn/project/100K	/var/svn/project/[root@web1 ~]# ls /usr/lib/systemd/system			这下面就是放启服务本地导入初始化数据[root@web1 ~]# cd /usr/lib/systemd/system[root@web1 system]# svn import . file:///var/svn/project -m "注释:我导入的是systemd的配置文件"修改配置文件,创建账户与密码所有配置文件,要求顶头写,开头不要有空格[root@web1 system]# cd /var/svn/project/conf[root@web1 system]# vim svnserve.conf................................................anon-access = none		19行,匿名无任何权限auth-access = write		20行,有效账户可写password-db = passwd		27行,密码文件authz-db = authz			34行,ACL访问控制列表文件[root@web1 system]# vim passwd....................................................[users]harry = 123456			用户名和密码tom = 123456			用户名和密码[root@web1 ~]# vim authz.....................................................[/]					定义ACL访问控制harry = rw				用户对项目根路径可读可写tom = rw启动服务[root@web1 ~]# svnserve -d  -r /var/svn/project-d是启动服务放后台	-r共享目录[root@web1 ~]# netstat -nutlp | grep svnserve[root@web1 ~]# ss -nutlp | grep svnserve客户端测试(192.168.2.200)[root@web2 ~]# cd /tmp[root@web2 tmp]# svn --username harry --password 123 co svn://192.168.2.100 codeco是全部都下载[root@web2 tmp]# cd code[root@web2 code]# ls[root@web2 code]# vim user.slice			挑选任意文件修改其内容[root@web2 code]# svn ci -m "modify user"ci是上权		将本地修改的数据同步到服务器[root@web2 code]# svn update			将服务器上新的数据同步到本地[root@web2 code]# ls -R | wc -l529[root@web2 code]# rm -rf *.service[root@web2 code]# ls -R | wc -l263[root@web2 code]# svn update		恢复[root@web2 code]# ls -R | wc -l529[root@web2 code]# svn info svn://192.168.2.100			查看版本仓库基本信息[root@web2 code]# svn log svn://192.168.2.100			查看版本仓库的日志[root@web2 code]# echo "test" > test.sh			本地新建一个文件[root@web2 code]# svn ci -m "new file"			提交失败,该文件不被svn管理[root@web2 code]# svn add test.sh			将文件或目录加入版本控制[root@web2 code]# svn ci -m "new file"			再次提交,成功[root@web2 code]# svn mkdir subdir			创建子目录[root@web2 code]# svn rm subdir			使用svn删除文件[root@web2 code]# svn ci -m "xxx"			提交一次代码[root@web2 code]# vim umount.target 任意修改本地的一个文件[root@web2 code]# svn diff			查看所有文件的差异[root@web2 code]# svn cat svn://192.168.2.100/umount.target	仅查看某一个文件的差异[root@web2 code]# sed -i 'd' tmp.mount			删除文件所有内容,但未提交[root@web2 code]# svn revert tmp.mount			还原tmp.mount文件[root@web2 code]# rm -rf  *.target 			任意删除若干文件[root@web2 code]# svn update			还原[root@web2 code]# sed -i '1a #test###' tuned.service			修改本地副本中的代码文件[root@web2 code]# svn ci  -m  "xxx"			提交代码[root@web2 code]# svn merge -r7:2    tuned.service			将文件从版本7还原到版本2多人协同工作[root@web1 ~]# cd /tmp[root@web1 tmp]# svn --username tom --password 123 co svn://192.168.2.100 code[root@web2 ~]# cd /tmp[root@web2 tmp]# svn --username tom --password 123 co svn://192.168.2.100 code[root@web1 tmp]# cd code[root@web1 tmp]# cd codeharry和tom修改不同的文件[root@web1 code]# sed -i "3a ###tom modify#####"  tmp.mount[root@web1 code]# svn ci -m  "has modified"[root@web2 code]# sed -i "3a ###harry modify#####"  tmp.mount[root@web2 code]# svn ci -m  "has modified"[root@web1 code]# svn update[root@web2 code]# svn update

正在升级 ‘.’:

在 “/tmp/code/user.slice” 中发现冲突。
选择: § 推迟,(df) 显示全部差异,(e) 编辑,
(mc) 我的版本, (tc) 他人的版本,
(s) 显示全部选项: mc
G user.slice
更新到版本 x。
harry和tom修改相同文件的不同行

[root@web1 code]# sed -i '3a #tomtomtom' user.slice[root@web1 code]# svn ci -m 'xx'[root@web2 code]# sed -i '6a #harry#' user.slice[root@web2 code]# svn ci -m 'xx'	提交失败[root@web2 code]# svn update[root@web2 code]# ls user.slice*[root@web2 code]# mv user.slice.mine   user.slice[root@web2 code]# rm -rf user.slice.r*[root@web2 code]# svn ci -m 'xx'[root@web1 svn]# svnadmin dump /var/svn/project > my.bak					备份[root@web1 ~]# svnadmin create /var/svn/project2[root@web1 ~]# svnadmin load /var/svn/project2 < my.bak					还原

转载地址:http://ehnwi.baihongyu.com/

你可能感兴趣的文章
Python:ModuleNotFoundError: No module named 模块名 错误及解决方案
查看>>
Python中os与sys两模块的区别
查看>>
nohup详解
查看>>
idea .gitignore对.idea不起作用解决
查看>>
深度学习中的注意力机制(2017版)-易理解
查看>>
Transformer解析-易理解
查看>>
多维数组[:,0]和[:0:1]获取的区别
查看>>
复原Ip地址
查看>>
重建二叉树
查看>>
二叉树根节点到叶子节点的路径数字之和
查看>>
根节点到叶子节点的节点值之和等于 sum的路径
查看>>
判断二叉树是否有从根节点到叶子节点的节点值之和等于sum的路径
查看>>
反转字符串
查看>>
环形链表
查看>>
删除链表的倒数第N个节点
查看>>
回文链表
查看>>
容器盛水问题
查看>>
滑动窗口最大值
查看>>
win7 文件删除后要刷新后才会消失
查看>>
用ffmpeg转多音轨的mkv文件
查看>>