Shell脚本自动备份数据库

给胖子写了个小程序,用来给他们公司记录一些数据。他直接把程序丢在我VPS上,我又比较喜欢折腾VPS,也担心那天数据出问题。所以想写个脚本来自动备份数据库。

So,shell脚本的一些简单用法。

 

其实主要的还是要用mysqldump、Crontab来操作

 一、写备份脚本

[python]
mkdir /luffy/backup
cd /luffy/backup
vim backup.sh#建立备份脚本
#下面开始编辑备份脚本
#!/bin/bash
cd /luffy/backup#进入存放备份文件的目录
Now=$(date +"%Y-%d-%m-%H-%M-%S")#这一句是用来显示当前时间
File=databasebackup_$Now.sql#以时间命名数据备份文件
mysqldump -uroot -p’password’ database_name>$File#执行备份
echo "database backup Success"
#保存退出
chmod +x /backup/backup.sh#赋予可执行权限
[/python]

这时候脚本就写好了。
可以执行./backup.sh测试一下是否会生成备份文件

 

 

二、添加定时任务

其实定时任务就一句代码

[python]
00 23 * * * /luffy/bakup/backup.sh >/luffy/backup/backup.log
#每天晚上23:00执行backup.sh,并将结果输入到backup.log文件中,over
[/python]

就这么简单,结束了。

不过备份是可以了。下一步是要想办法,自动以邮件的方式发送备份文件到邮箱。这样才能长久保存。

Zend Guard 代码加密详细步骤图解

最近想研究下Zend Guard给代码加密,以便以后做项目做好保密性,也方便以后客户抓在自己手上做维护。

这里分两步做

1、生成加密文件

2、配置服务器环境解密运行加密后的文件

一、生成加密文件
先抛出来Zend Guard相关安装包吧。

百度云下载Zend Guard.5.5

这里的注意以下2点:

  1. Zend Guard是需要收费的,下载的文件包里面有key,但是Key的有效期是10年7月10号。安装完成register的时候需要将系统时间调整到10年以前,[Help]->[Register]->[Search for a license file on my disk]
  2. key是试用版的,所以加密后的文件只能使用14天。你在生成加密文件以前可以将系统时间向后调整N年,比如2099年。这样就会在2099年以后14天过期。

PS:文件包中有个.zl,是激活用的。但是我们其实可以自己生成一个zl。可以选择不用它的。

下面上图按步骤走吧:

  1. 新建一个项目【File】-【New】-【Zend Guard Project】。这里主要填写下项目名称,以及最后一个加密后代码输出位置:OutputLocation:

    新建Zend Guard Project
    新建Zend Guard Project
  2. 选择代码所在文件夹

    选择代码所在文件夹
    选择代码所在文件夹

继续阅读“Zend Guard 代码加密详细步骤图解”

svn添加钩子hooks并解决hooks速度慢。

前几天安装好了SVN,然后想要提交之后直接放到web目录中,可以直接通过web访问页面效果。于是知道了有钩子这么个东西。
假设已经有了svn project,我们需要做一下操作:

  • 在web目录里面checkout对应的代码文件
  • 创建钩子模板并赋予执行权限
  • 敲入钩子文件的内容
  1. checkout代码的文件
    在web目录下创建网站对应的文件夹,我这里直接给文件夹命名为svn,并且checkout
    [python]
    mkdir /home/wwwroot/svn
    cd /home/wwwroot/svn
    svn checkout svn://127.0.0.1 ./
    [/python]
    完成以后目录下会多了.svn的隐藏文件夹
  2. 创建钩子
    在创建好svn project之后会有如下目录结构。我们的钩子就存放在hooks里面。

    svn目录

    我们需要做下面步骤:

    代码如下:

    [python]
    cd hooks
    cp post-commit.tmpl post-commit #拷贝一个钩子模板
    chmod 777 post-commit #赋予可执行权限
    vim post-commit
    [/python]

  3. 编辑钩子文件
    找到/svn/svntest/hooks/post-commit,
    进入到post-commit编辑状态后,我们最好把里面的内容都给注释。然后敲入以下代码:
    [python]
    #!/bin/sh
    SVN=/usr/bin/svn #svn执行文件所在的文件夹
    WEB=/home/wwwroot/svn #svn项目所在目录
    LOG_PATH=/svn/svntest/svn_hook.log #我们定义的一个log文件
    echo "————Start Commit ———–" >> $LOG_PATH
    echo "Time:"`date ‘+%Y-%m-%d %T’`>>$LOG_PATH #这里是在日志中写入执行的时间
    cd $WEB
    for dir in ‘svnlook dirs-changed /svn/svntest’ #查找有修改过的文件,并将修改过的内容部署到web目录
    do
    #下面一句执行update命令
    $SVN update $WEB –username "aoxiang" –password "aoxiang" >> $LOG_PATH
    done
    echo "————Commit End—————" >>$LOG_PATH
    [/python]

    这里解释一下代码:
    我在部署完钩子之后,发现有一个问题:

    在本地commit 到服务器以后,速度都很快显示100%,但是进度条会一直卡在最后不动很长时间。

    我的项目大概400MB,当时就怀疑是钩子的原因,导致commit速度下降。
    最后找到方法:

    先找到有修改的目录,然后将修改的内容部署到web目录,这样就不会把整个项目部署到web目录
    [python]
    for dir in ‘svnlook dirs-changed /svn/svntest’
    do
    #这里是要执行的代码
    done
    [/python]
    svnlook dirs-changed命令用来找打修改过内容的目录

    下面一句就相当于是在我们对应的svn的目录里面执行了update命令

    [python]$SVN update -N $WEB –username "aoxiang" –password "aoxiang" >> $LOG_PATH[/python]

以上基本上就ok了。今天主要被上传速度困扰了一天。后来找到方法先检查修改的文件后,顿时就搞定了

Centos 安装SVN服务器

之前一直想搭Git服务器,搭了好久没有搭好。后来还是选择搭SVN了。代码丢上来

  1. 检查已安装版本 

    [python]
    #检查是否安装了低版本的SVN
    rpm -qa subversion
    #卸载旧版本SVN
    [root@localhost modules]# yum remove subversion
    [/python]

  2. 安装SVN

    [python]yum install httpd httpd-devel subversion mod_dav_svn mod_auth_mysql[/python]

  3. 确认已安装了SVN模块

    [python]
    cd /etc/httpd/modules
    ls | grep svn
    #会返回以下内容
    #mod_authz_svn.so
    #mod_dav_svn.so
    [/python]

  4. 验证安装
    检验已经安装的SVN版本信息

    [python]svnserve –version[/python]

    返回以下内容:

  5. 创建代码库
    SVN软件安装完成后还需要建立SVN库

    [python]
    mkdir -p /svn/web
    svnadmin create /svn/web
    [/python]

    执行上面的命令后,自动建立web库,查看/svn/web 文件夹发现包含了conf, db,format,hooks, locks, README.txt等文件,说明一个SVN库已经建立。

  6. 配置代码库-设置SVN用户名及密码
    进入上面生成的文件夹conf下,进行配置

    [python]
    cd /svn/svn/conf
    #用户密码passwd配置
    [python]vi passwd[/python]

    修改一下内容
    [users]
    # harry = harryssecret
    # sally = sallyssecret
    luffy=luffy
    #username = password
    [/python]
    规则如下username=password

  7. 权限控制-authz
    这里是设置用户访问权限、访问目录。

    [python]
    vi authz
    #设置[/]代表根目录下所有的资源
    #rw是读写权限
    [/]
    aoxiang=rw
    [/python]

  8. 服务svnserve.conf配置

    [python]
    vi svnserve.conf
    #追加以下内容
    [general]
    #匿名访问的权限,可以是read,write,none,默认为read
    anon-access=none
    #使授权用户有写权限
    auth-access=write
    #密码数据库的路径
    password-db=passwd
    #访问控制文件
    authz-db=authz
    #认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字
    realm=/svn/web
    [/python]

  9. 配置防火墙端口

    [python]
    vi /etc/sysconfig/iptables
    #添加以下内容:
    -A INPUT -m state –state NEW -m tcp -p tcp –dport 3690 -j ACCEPT
    #保存后重启防火墙
    service iptables restart
    [/python]

  10. 启动SVN

    [python]svnserve -d -r /svn/web[/python]

  11. 查看SVN进程

    [python]
    ps -ef|grep svn|grep -v grep
    #返回一下信息:
    #root 12538 1 0 14:40 ? 00:00:00 svnserve -d -r /opt/svn/repositories
    [/python]

  12. 检测SVN 端口

    [python]
    netstat -ln |grep 3690
    #返回一下信息:
    #tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN
    [/python]

  13. 停止重启SVN

    [python]
    killall svnserve //停止
    svnserve -d -r /svn/web // 启动
    [/python]

centos安装memcache

这两天搞定了nginx+php+mysql+svn,最后一个就是memcache了。准备这几项都搞定了以后,着手开始重写博客。

因为,妈蛋看了半年前自己用CI写的博客的代码,都在想“我次奥,我当时怎么会写出这么垃圾的代码!!!”

memcache分为服务器端和PHP扩展,所以我们是需要分两块进行安装的。

  1. 下载相关组件。
    这里是下载服务器端用的组件,memcached和libevent,libevent是用于做Socket处理,其他的我也不清楚具体怎么。
    memcached:http://www.danga.com/memcached/dist/memcached-1.2.2.tar.gz
    libevent:http://www.monkey.org/~provos/libevent-1.3.tar.gz
    附上libevent官网:http://www.monkey.org/~provos/libevent/

    这里有我在百度盘留存的一份可供下载“libevent+memcached下载

    [python]
    mkdir /opt/memcached
    cd /opt/memcached/
    wget http://www.danga.com/memcached/dist/memcached-1.2.2.tar.gz

    mkdir /opt/libevent
    cd /opt/libevent
    wget http://www.monkey.org/~provos/libevent-1.3.tar.gz
    [/python]

  2. 安装libevent

    [python]
    tar zxvf libevent-1.3.tar.gz
    cd libevent-1.3
    ./configure –prefix=/usr
    make
    make install
    [/python]

  3. 测试libevent安装是否成功

    [python]ls -al /usr/lib | grep libevent[/python]

    反馈如下

    libevent安装测试
  4. 安装服务器端memcached

    [python]
    cd /opt/memcached
    tar zxvf memcached-1.2.2.tar.gz
    cd memcached-1.2.2
    ./configure –with-libevent=/usr
    make
    make install

    [/python]

    如果中间出现报错,请仔细检查错误信息,按照错误信息来配置或者增加相应的库或者路径。
    反正我是一路正常的走下来,没有发现有报错的情况
    安装完成后会把memcached放到 /usr/local/bin/memcached

  5. 测试是否安装成功

    [python]
    ls -al /usr/local/bin/mem*
    [/python]

    反馈如下

    memcached安装反馈

继续阅读“centos安装memcache”