Vincent Blog


  • 首页

  • 分类

  • 归档

  • 标签

  • 关于

  • 留言

KVM安装虚拟机

发表于 2016-11-03   |   分类于 kvm

一.qcow2格式磁盘文件

Qcow2镜像格式是qemu支持的磁盘镜像格式之一。qcow2的表现形式为在一个文件中模拟一个固定大小的块设备。对与qcow2格式,相对于raw格式来说,有几个优点:
更小的文件大小,即使是不支持holes的文件系统也可以(这样的话,ls跟du看到的就一样了);
Copy-on-write的支持;
快照的支持,可以维护多个快照;
基于zlib的压缩;
AES加密

阅读全文 »

Nginx https配置

发表于 2016-10-20   |   分类于 nginx

什么是 SSL 证书,什么是 HTTPS

SSL 证书是一种数字证书,它使用 Secure Socket Layer 协议在浏览器和 Web 服务器之间建立一条安全通道,从而实现:

1.数据信息在客户端和服务器之间的加密传输,保证双方传递信息的安全性,不可被第三方窃听;

2.用户可以通过服务器证书验证他所访问的网站是否真实可靠。
(via百度百科)

阅读全文 »

使用goaccess分析nginx日志

发表于 2016-10-12   |   分类于 nginx

nginx(读作Engine-X)是现在最流行的负载均衡和反向代理服务器之一。如果你是一名中小微型网站的开发运维人员,很可能像我们一样,仅Nginx每天就会产生上百M甚至数以十G的日志文件。如果没有出什么错误,在被logrotate定期分割并滚动删除以前,这些日志文件可能都不会被看上一眼。

实际上,Nginx日志文件可以记录的信息相当丰富,而且格式可以定制,考虑到$time_local请求时间字段几乎必有,这是一个典型的基于文件的时间序列数据库。Nginx日志被删除以前,或许我们可以想想,其中是否蕴含着未知的金矿等待挖掘?

阅读全文 »

linux 导出SQL查询结果到EXCEL并通过邮件定时发送

发表于 2016-10-12   |   分类于 shell

日常工作中公司其他人员可能经常需要找运维拿公网的数据做EXCEL,对于那些定期的不变的需求我们可以通过写shell脚本配合定时任务,定时发送到对应的邮箱,减少重复劳动,提高工作效率。

阅读全文 »

动态域名解析IP并修改防火墙规则

发表于 2016-10-12   |   分类于 shell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/bin/bash
while true
do
#刷新DNS
nscd -i hosts
OLD_IP=`iptables -L -n | grep :22 | awk '{print $4}'| head -1`
NEW_IP=`ping www.baidu.com -c1 -n| grep from | awk '{ print $4 }'| awk -F":" '{print $1}'`
if [ $NEW_IP != $OLD_IP ]
then
sed -i 's/'$OLD_IP'/'$NEW_IP'/g' /etc/sysconfig/iptables
/etc/init.d/iptables restart
echo " `date +%Y-%m-%d\ %H:%M:%S` Ip has changed, the new ip is $NEW_IP" >> /tmp/ip_change.log
fi
#每60秒判断一次
sleep 60
done

阿里云SLB http强制跳转https重定向循环

发表于 2016-10-10   |   分类于 nginx

SLB https 配置

这里可以参考阿里云的官方文档进行配置
https://help.aliyun.com/knowledge_detail/39472.html

注意

官方文档推荐的是后端协议使用HTTP监听80端口,如果要http强制跳转https 会出现重定向循环。
image

阅读全文 »

SVN备份脚本

发表于 2016-10-10   |   分类于 shell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/bin/bash
date=`date +%Y%m%d`
old_date=`date '-d 30 day ago' "+%Y%m%d"`
SVN_ROOT=/svn
SVN_BACKDIR=/svnback/${date}
OLD_BACKDIR=/svnback/${old_date}
PROJECT=xxx
if [ ! -d $SVN_BACKDIR ]
then
mkdir -p $SVN_BACKDIR
fi
#使用apache htpasswd 实现用户验证和权限管理
cp $SVN_ROOT/authz ${SVN_BACKDIR}/
cp $SVN_ROOT/htpasswd ${SVN_BACKDIR}/
svnadmin hotcopy ${SVN_ROOT}/$PROJECT $SVN_BACKDIR/ziztour
#删除30天前的备份
if [ -n $OLD_BACKDIR ]
then
cd /svnback
rm -rf $OLD_BACKDIR
fi

ssh免密登录

发表于 2016-09-30   |   分类于 linux

生成公钥和私钥

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
fe:57:d1:05:6b:84:7d:02:8e:5d:d5:11:c1:eb:f7:c7 root@localhost
The key's randomart image is:
+--[ RSA 2048]----+
| .+=**|
| +.ooo+|
| . o o+o|
| ....|
| S .. |
| . ...|
| . . .o|
| . . E|
| .. .|
+-----------------+
#一直回车,不设置私钥密码
阅读全文 »

Mysql备份脚本

发表于 2016-09-30   |   分类于 shell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#!/bin/bash
export /etc/profile
#数据库用户
db_user=root
#数据库密码
db_pass=xxx
#数据库IP地址
db_ip=xxx
#数据库端口
db_port=3306


mysql=/bin/mysql
mysqldump=/bin/mysqldump
Date=`date +%Y%m%d`
Old_Date=`date '-d 30 day ago' "+%Y%m%d"`

Dir=/back/mysql_bak
#数据库备份目录
BakDir=$Dir/$Date
#备份的数据库表单
Datalist=$Dir/database.txt
#30天前备份的数据库文件所在目录
OldBak_Dir=$Dir/$Old_Date
#创建和进入备份文件夹
Log=$Dir/mysql_back.log
#接收报警的邮件
Mail=xxx@qq.com

mkdir $BakDir -p
cd $BakDir

echo "" >> $Log
echo "" >> $Log
echo "" >> $Log
echo "" >> $Log
echo "" >> $Log

echo " ********************************** $Date 备份开始 ********************************** " >> $Log
#获取最新数据库列表
$mysql -u$db_user -p$db_pass -h$db_ip -P$db_port -Bse "show databases" | grep -v mysql | grep -v performance_schema | grep -v test |grep -v information_schema > $Datalist
for i in `cat $Datalist`
do
Database=$i
DumpFile="$Database"_"$Date".sql
GZDumpFile="$Database"_"$Date".sql.tar.gz
echo "`date +%Y-%m-%d\ %H:%M:%S` 开始备份$Database" >> $Log
$mysqldump -u$db_user -p$db_pass -h$db_ip -P$db_port --force -q -R $Database > $DumpFile 2>/back/mysql_bak/mysqldump_error.log
if [ $? -ne 0 ]
then
echo "mysqldump $i error" | mail -s "mysqldump $i error" $Mail
fi
echo "`date +%Y-%m-%d\ %H:%M:%S` $Database备份完成" >> $Log
#打包和删除
echo "`date +%Y-%m-%d\ %H:%M:%S` 开始打包$Database" >> $Log
/bin/tar czvf $GZDumpFile $DumpFile
echo "`date +%Y-%m-%d\ %H:%M:%S` 打包完成$Database" >> $Log
/bin/rm $DumpFile
echo "`date +%Y-%m-%d\ %H:%M:%S` 删除原始文件$DumpFile" >> $Log
done

echo " ********************************** $Date 备份结束 ********************************** " >> $Log


#备份完成后刷新二进制日志
mysql -u$db_user -p$db_pass -h$db_ip -P$db_port -e 'flush logs'

#删除30天前备份的数据库文件所在目录
/bin/rm -rf $OldBak_Dir

Windows SVN备份脚本

发表于 2016-09-30   |   分类于 linux

backup.bat

1
2
3
4
5
6
7
8
9
10
11
12
13
set SVN_HOME="C:\Program Files (x86)\VisualSVN Server"
set SVN_ROOT="D:\Repositories"
set BACKUP_SVN_ROOT="Z:"
set BACKUP_DIRECTORY=%BACKUP_SVN_ROOT%/%date:~0,10%
if exist %BACKUP_DIRECTORY% goto checkBack
echo 建立备份目录%BACKUP_DIRECTORY%>>%SVN_ROOT%\backup.log
mkdir %BACKUP_DIRECTORY%
for /r %SVN_ROOT% %%I in (.) do @if exist "%%I\conf\svnserve.conf" %SVN_ROOT%\simplebackup.bat "%%~fI" %%~nI
goto end
:checkBack
echo 备份目录%BACKUP_DIRECTORY%已经存在,请清空。
goto end
:end
阅读全文 »
1…5678
Vincent

Vincent

为了无法计算的价值

80 日志
24 分类
91 标签
Github Weibo
© 2016 - 2018 Vincent
由 Hexo 强力驱动
主题 - NexT.Muse
粤ICP备16107811号