自建本地yum源

在安装xen虚拟化的时候因为自己电脑网络的问题,下载一些yum源的RPM包甚是烦恼,于是狠心搭建一个本地的yum源。速度极好。支持自动同步互联网上主流仓库。 下面说说具体步骤。 1  同步互联网上的部分仓库,搭建yum源服务端 我主要用到的是centos的6和7版本的部分仓库目录,主要是os  updates  extras 和 virt ,其中virt是专门搞虚拟化的。 搭建NGINX服务器,用作一个下载服务器,传送门  https://peloo.net/?p=444 创建本地目录,我是在树莓派上挂载一个1T的移动硬盘提供存储服务,建立的目录如下, pi@raspberrypi:/media/pi/Seagate_disk $ mkdir -p /media/pi/Seagate_disk/repo/centos/7/{os,extras,updates,virt} pi@raspberrypi:/media/pi/Seagate_disk $ mkdir -p /media/pi/Seagate_disk/repo/centos/6/{os,extras,updates,virt} pi@raspberrypi:/media/pi/Seagate_disk $ mkdir -p /media/pi/Seagate_disk/repo/centos/7/os/x86_64/ pi@raspberrypi:/media/pi/Seagate_disk $ mkdir -p /media/pi/Seagate_disk/repo/centos/7/extras/x86_64/ pi@raspberrypi:/media/pi/Seagate_disk $ mkdir -p /media/pi/Seagate_disk/repo/centos/7/updates/x86_64/ pi@raspberrypi:/media/pi/Seagate_disk $ mkdir -p /media/pi/Seagate_disk/repo/centos/7/virt/x86_64/ pi@raspberrypi:/media/pi/Seagate_disk $ mkdir -p /media/pi/Seagate_disk/repo/centos/6/os/x86_64/ pi@raspberrypi:/media/pi/Seagate_disk $ mkdir -p /media/pi/Seagate_disk/repo/centos/6/extras/x86_64/ pi@raspberrypi:/media/pi/Seagate_disk $…

Continue Reading

dd备份整个磁盘shell脚本(使用位置参数小例子)

每次用dd备份整个磁盘的时候都很方便,偶然听到朋友问我位置参数的问题,于是心血来潮,干脆写个shell脚本实现自动备份,以后就不用找源磁盘,目的磁盘,挂载分区等等操作了,代码帮我实现。 以下是我花了连续5个小时调试好的脚本,虽然有些拙劣,但是也是小小的成功吧,每天进步一点点。   #!/bin/bash # Author: Attaboy # Description: backup whole disk of S5 and HSTONG office PC's SSD using dd # Modify history: #    2018-06-23 first release #    2018-06-24 modify #    2018-06-25 modify log="./dd_backup_disk.log" mount_dir="./m_dir" S5_bak_src_dev=$(fdisk -l 2>/dev/null | awk -F '[ \t]+|:' '/111.+G/{print $2}') HSTONG_bak_src_dev=$(fdisk -l 2>/dev/null | awk -F '[ \t]+|:' '/111.+G/{print…

Continue Reading

MySQL性能优化前后对比测试

一、MySQL优化参数详解 1)   连接请求的变量 Max_connections Mysql的最大连接数,如果服务器的并发请求量比较大,可以调高这个值,当然这是要建立在机器能够支撑的情况下,因为如果连接数越来越多,mysql会为每个连接提供缓冲区,就会开销的越多的内存,所以需要适当的调整该值,不能随便去提高设值。 修改/etc/my.cnf在[mysqld]下添加以下内容,设置最大连接数为1024,重启mysql服务验证 vim/etc/my.cnf 添加max_connections=1024 2)back_log mysql能暂存的连接数量,当主要mysql线程在一个很短时间内得到非常多的连接请求时候它就会起作用,如果mysql的连接数据达到max_connections时候,新来的请求将会被存在堆栈中,等待某一连接释放资源,该推栈的数量及back_log,如果等待连接的数量超过back_log,将不被授予连接资源 back_log值指出在mysql暂时停止回答新请求之前的短时间内有多少个请求可以被存在推栈中,只有如果期望在一个短时间内有很多连接的时候需要增加它 可以通过以下命令查看back_log的设置默认是254 我们可以通过MySQL主配置修改它的大小,设置最大连接数为:1024随后重启MySQL服务再次查看 vim /etc/my.cnf 添加:back_log=1024 3)wait_timeout和interactive_timeout wait_timeout:指的是mysql在关闭一个非交互的连接之前所要等待的秒数 interactive_timeoutz:指的是mysql在关闭一个交互的连接之前所需要等待的秒数,比如我们在终端上进行mysql管理,使用的即使交互的连接,这时候,如果没有操作的时间超过了interactive_time设置的时间就会自动的断开,默认的是28800,可调优为7200。wait_timeout:如果设置太小,那么连接关闭的就很快,从而使一些持久的连接不起作用 如果设置太大,容易造成连接打开时间过长,在show processlist时候,能看到很多的连接 一般希望wait_timeout尽可能低 查看wait_timeout和interactive_timeout的设置 修改/etc/my.cnf,添加以下内容 wait_timeout=100 interactive_timeout=100 4)query_cache_size(查询缓存简称QC) 使用查询缓冲,mysql将查询结果存放在缓冲区中,今后对于同样的select语句(区分大小写),将直接从缓冲区中读取结果。 一个sql查询如果以select开头,那么mysql服务器将尝试对其使用查询缓存。 注:两个sql语句,只要想差哪怕是一个字符(列如大小写不一样;多一个空格等),那么这两个sql将使用不同的一个cache。 上述状态值可以使用show status like 'Qcache%获得' Qcache_free_blocks:缓存中相邻内存块的个数。如果该值显示较大,则说明Query Cache 中的内存碎片较多了,FLUSH QUERY CACHE会对缓存中的碎片进行整理,从而得到一个空闲块。 注:当一个表被更新之后,和它相关的cache blocks将被free。但是这个block依然可能存在队列中,除非是在队列的尾部。可以用FLUSH QUERY CACHE语句来清空free blocks Qcache_free_memory:Query Cache中目前剩余的内存大小。通过这个参数我们可以较为准确的观察出当前系统中的Query Cache内存大小是否足够,是需要增加还是过多了。 Qcache_hits:表示有多少次命中缓存。我们主要可以通过该值来验证我们的查询缓存的效果。数字越大,缓存效果越理想。 Qcache_inserts:表示多少次未命中然后插入,意思是新来的SQL请求在缓存中未找到,不得不执行查询处理,执行查询处理后把结果insert到查询缓存中。这样的情况的次数越多,表示查询缓存应用到的比较少,效果也就不理想。当然系统刚启动后,查询缓存是空的,这很正常。 Qcache_lowmem_prunes:多少条Query因为内存不足而被清除出Query Cache。通过“Qcache_lowmem_prunes”和“Qcache_free_memory”相互结合,能够更清楚的了解到我们系统中Query Cache 的内存大小是否真的足够,是否非常频繁的出现因为内存不足而有Query被换出。这个数字最好长时间来看;如果这个数字在不断增长,就表示可能碎片非常严重,或者内存很少。(上面的free_blocks和free_memory可以告诉您属于哪种情况) Qcache_not_cached:不适合进行缓存的查询的数量,通常是由于这些查询不是 SELECT语句或者用了now()之类的函数。…

Continue Reading

Linux启动过程详解

  1.加电自检   主板在接通电源后,系统首先由POST程序来对内部各个设备进行检查,自检中如发现有错误,将按两种情况处理:对于严重故障(致命性故障)则停机,此时由于各种初始化操作还没完成,不能给出任何提示或信号;对于非严重故障则给出提示或声音报警信号,等待用户处理。       2.BIOS启动引导阶段   自检通过之后,按次序查找各引导设备,第一个有引导程序的设备即为本次启动要用到的设备。一般电脑是按"F2"或"Del"键等等进入BIOS,在里面我们可以调整硬盘的启动顺序。     找到第一个有引导程序的设备后,BIOS会找到设备中的MBR,读取其中的Bootloader。       3.GRUP引导阶段   这时候就可以看到我们的Centos系统了,但是一般都不需要操作,会自动启动系统。其实我们也可以自己手动启动系统的。       3.1 手动在grub命令行接口启动系统:           grub> root (hd#,#)           grub> kernel /vmlinuz-VERSION-RELEASE ro root=/dev/DEVICE           grub> initrd /initramfs-VERSION-RELEASE.img   grub> boot       3.2 grub的命令行接口:             e: 编辑模式,用于编辑菜单;        …

Continue Reading

手机无限流量摇身变宽带

一、背景介绍 联通一个电话宣布我的手机卡不限流量,我第一个想法就是把手机当成无线路由器分给家里的一堆设备用,停用每月180块的坑爹电信宽带。 废话少说,开工。 二、设计思路 手机开启无线热点,使用一带有无线中继功能的路由器A连接手机的无线信号,然后让一具备高级功能的路由器连接B通过有线方式连接路由器A的LAN口,在路由器B上建立三个VLAN,再在每个VLAN上对应建立网桥Bridge,每个网桥都建立IP,选择路由器B的一个以太网口和三层交换机的trunk口相连,此时需要在三层交换机上也建立三个VLAN,每个VLAN的ID要和路由器B上的VLAN一一对应,添加每个VLAN接口的IP地址(目的是让内网主机通信时不经过路由器B而直接在交换机内部进行),最后在路由器B上设置每个bridge的DHCP server以及NAT转发即可。 至于各种无线设备如iPad、手机的网络接入实现,可另找一台无线路由器C,关闭DHCP 服务,LAN口直连交换机上任意一个VLAN,移动设备无线接入路由器C即可自动获取IP上网。 大致的网络拓扑图如下, 三、实现过程 1、软硬件准备 A.  RouterOS board路由器(大名鼎鼎,性能堪比Cisco) B.  PISEN路由器(具有无线中继功能) C.  Cisco二手三层交换机 D.  iPhone6s plus、oneplus手机两台,iPad一台 E.  6条以太网双绞线 F.  TP-LINK无线路由器(关闭DHCP服务) G.  树莓派板子raspberrypi(搭载Linux系统) H.  台式机一台(S5),上面安装一个win7虚拟机(virtual-PC) 2、开启手机无线热点 3、PISEN路由器无线中继手机热点 4、ROS添加WAN口IP和默认路由 5、ROS添加VLAN 添加好的VLAN如下图, 6、ROS添加bridge并关联VLAN 按以下方式添加三个bridge, 按以下方式依次关联三个VLAN到对应的bridge, 关联好的配置如下图, 7、ROS为每个bridge添加对应的DHCP SERVER分配IP地址 8、交换机添加VLAN并设置每个VLAN接口的IP 9、交换机添加trunk端口 10、设置ROS的NAT   11、设置ROS的默认DNS 四、测试验证 1、ROS路由器连通外网验证 2、无线设备连接TP-LINK路由器自动获取IP和连通外网验证 我们看到手机已经正常获取172.17.3.0网段的IP地址,网关也正确。   3、各VLAN下内网主机互ping以及连通外网验证 172.17.2.0网段的主机(树莓派板子Linux系统)测试如下, 172.17.1.0网段的主机(Linux系统)测试如下, 172.17.3.0网段的主机(Windows 7系统)测试如下,…

Continue Reading

动手建立一个Kali系统随身加密U盘

一、背景介绍 接触大名鼎鼎的黑ke Linux系统kali很久了,长期以来一直把kali系统装在U盘做备份系统等系统维护操作,但是机器重启后,U盘里的内容就会重置,昨天刚刚有时间,参考了官方文档,做了个可以保存持久数据的kali系统。 二、实现过程 建议以下过程在Kali Linux的VMware虚拟机里进行。 1、软硬件准备 A  大于8G的U盘 : 本人用的时ADATA的16G优盘 B  kali系统64位:kali-linux-2016.1-amd64.iso 2、烧录kali镜像到U盘 U盘挂载到一个Linux系统,以系统root用户执行下面命令进行烧录, dd if=/mnt/1T_1/tools/iso/kali_linux/kali-2.0/kali-linux-2016.1-amd64.iso of=/dev/sdh 3、新建存储数据的分区 依然以root用户执行命令, end=14gb ; read start _ < <(du -bcm /mnt/1T_1/tools/iso/kali_linux/kali-2.0/kali-linux-2016.1-amd64.iso | tail -1) ; echo $start ; parted /dev/sdb mkpart primary $start $end 4、为新建立的分区进行LUKS加密初始化 cryptsetup –verbose –verify-passphrase luksFormat /dev/sdb3  # 此处可以设置磁盘加密密码 cryptsetup luksOpen /dev/sdb3 my_usb #  建立一个ext3分区,…

Continue Reading

使用Fiddler替换URL

一、背景介绍 实际的软件测试和开发中,经常会遇到一个get或post请求需要重定向以达到调试的效果,苦恼了几天后,今天百度谷歌了一下,找到了答案。 二、实现过程 例如,我们想让https://peloo.net/?p=1070在站内重定向访问https://peloo.net/?p=1018,我在实际工作中就遇到类似的问题,下面演示过程。 1、过滤此站点的会话,设置如下图,     访问https://peloo.net/?p=1070,如下图,   访问https://peloo.net/?p=1018,如下图,   我们看到,两个网址的内容不一致。   2、按ALT + Q,输入 urlreplace p=1070  p=1018后回车。     3、在谷歌浏览器访问 https://peloo.net/?p=1070 ,成功重定向到 https://peloo.net/?p=1018 网址的内容,如下图,  

Continue Reading

JMeter如何控制业务比例进行性能测试

一、背景介绍 一直困惑网上的关于JMeter控制业务比例的思想,链接为https://www.jianshu.com/p/db092cbcceb1,今天琢磨到凌晨两点,终于解惑。 假设要测试一个电商网站的性能, 在实际的场景中,有四个业务分别是查看积分明细、查看首页广告、浏览商品详情、浏览商品评价,业务使用比例为1:3:5:6,如何使用JMeter来模拟实现? 二、实现过程 当然新建四个线程组,分别对应四个业务,按照既定比例设定线程数的方式不可行,因为业务的响应时间不可能一致。 我们用另外一种方式来实现。 既定的比例加起来和为15,我们可以把JMeter的运行次数与15取余,前15次取余值的范围落在下面四个范围(这里要用到JMeter的元件IF控制器): {1} {2 3 4} {5 6 7 8 9} {10 11 12 13 14 15}    16 17 18 19 …… 假设四个业务分别对应的业务代码是D、C、B、A,则对应业务的控制逻辑如下, A  ${__counter(true,)}%15<1 B  ${__counter(true,)}%15<=4 && ${__counter(true,)}%15>1 C  ${__counter(true,)}%15>4 && ${__counter(true,)}%15<=9 D  ${__counter(true,)}%15>9 && ${__counter(true,)}%15<==0 大于15的运行次数也可以以这种方式类推,进行比例划分。 1  查看积分明细的业务比例在JMeter中设置为${__counter(true,)}%15<1,如下图, 2  查看首页广告的业务比例设置为${__counter(true,)}%15<=4 && ${__counter(true,)}%15>1,如下图, 3  浏览商品详情的业务比例设置为${__counter(true,)}%15>4 && ${__counter(true,)}%15<=9,如下图, 4 …

Continue Reading

Fiddler代理FireFox浏览器

一、背景介绍 一直用Fiddler抓取Chrome浏览器的HTTP包,因为不用任何设置就可以。于是有个疑问,如果一些应用只能在Firefox浏览器上才能运行或者在Firefox浏览器表现的效果较好,那怎么调试? bing了下找出了答案。 二、实现过程 1  设置Firefox代理 打开Firefox的选项–常规–网络代理–设置,选择“手动代理配置”,所填参数如下图, 其他版本的Firefox请举一反三。 2  设置fiddler代理 fiddler的代理主要是配置一个和本地不冲突的端口来监听外来请求。 设置好以后,可以用别的机器,亦可以本地联网经过fiddler代理,配置好后的fiddler抓包如下(远程抓包),

Continue Reading

自动检测网站健康shell脚本

一、背景介绍 我的WordPress网站最近老是宕机无法提供服务,网站架构是经典的 Linux + OpenResty + MySQL + PHP , 宕机后大多数情况下不能立即处理,于是想写个自动检测网站健康的shell脚本,主要功能是定时检测网站运行是否正常,如果宕机,则自动初始化MySQL和PHP服务,如果初始化后还不能访问,则邮件告警通知我。 二、实现过程 1  编写脚本 脚本的内容如下,目前运行十来天左右还算正常。 #!/bin/bash #Author:Attaboy #Description:this script is made to check website health and roll back automattically. # Modify history #       20171122 #       20171130 dst_mail="[email protected]" mail_title="Linode Website Health Report" mail_content="\nOops,Your website is still out of service after initiating!\n\n$(iptables -vnL)\n\n\n$(netstat -nltp)\n\n" free_mem=$(free -m |…

Continue Reading