LNMP环境无人值守备份

本人是新手,以下方法仅供参考

本文要讲到的情况需要以下资源以及配置:

  • linux系统服务器两台(跑业务的一台,专门用来备份的一台,防止出现跑路或者硬盘损坏的情况造成数据丢失)
  • 主服务器上运行网站以及mysql数据库,如果使用的是其他数据库或者需要备份的是其他文件,自行进行小修改即可
  • 主服务器开启rsync daemon,提前做好设置
  • 主服务器建立~/backup/文件夹,并在~/backup/文件夹下建立latest, old, weekly, monthly四个文件夹
  • 主服务器建立一个有dump权限的mysql用户,本例中用户名为backup

本文中介绍的方法能实现的功能:

  • 主服务器上每天对网站文件以及数据库进行自动备份,保留最近5日的备份记录,最近一周的周备份,最近一月的月备份
  • 主服务器上自动删除过期的备份文件
  • 在备份服务器上每日对主服务器的备份文件进行同步,并保留月备份记录不会自动删除

实现方法:

首先,在主服务器上建立文件~/backup.sh

内容如下(注意所有需要自行修改部分以xxxxxxxx代替):

[cc lang=’bash’]
clear
password=’xxxxxxxx’
#设置mysql密码变量
echo “backup started”
echo “moving old backup file…”
mv ~/backup/latest/* ~/backup/old/
echo “making temporary directory…”
mkdir ~/backupsql
echo “dumping mysql database…”
mysqldump -ubackup -p$password 数据库名 > ~/backupsql/xxxxxxxx.sql
#如果有多个数据库可以写多条以上语句
echo “dumping completed”
DATE=`date +%Y-%m-%d-%H%M`
echo “packing all files…please wait”
tar czf ~/backup/latest/xxxxxxxx.backup.$DATE.tar.gz ~/backupsql/ /var/www/
#其中/var/www/为web文件目录,根据需要自行修改
echo “packing completed”
rm ~/backupsql/ -rf
echo “temporary directory removed”
DATEE=`date -d -5day +%Y-%m-%d`
rm ~/backup/old/xxxxxxxx.backup.$DATEE* -rf
echo “old backup files removed”
password=”
echo “backup finished.”
echo ~/backup/latest/xxxxxxxx.backup.$DATE.tar.gz
[/cc]

然后在主服务器上使用crontab设置自动执行脚本:

[cc lang=’bash’]
0 0 * * * ~/backup.sh
0 0 1 * * rm ~/backup/monthly/* -rf
2 0 1 * * cp ~/backup/latest/* ~/backup/monthly/
0 0 * * 1 rm ~/backup/weekly/* -rf
2 0 * * 1 cp ~/backup/latest/* ~/backup/weekly/
#其中脚本执行时间可以自行设定
[/cc]

接下来再备份服务器上使用crontab设置自动同步脚本:

[cc lang=’bash’]
2 4 * * * rsync -av –delete –progress rsync://xxxxxxxx@xxx.xxx.xxx.xxx/xxxxxxxx ~/backup/xxxxxxxx/backup –password-file=/etc/xxxxxxxx >> xxxxxxxx;
0 5 1 * * cp ~/backup/xxxxxxxx/backup/latest/* ~/backup/xxxxxxxx/safebox/
[/cc]

2011.12.24
标签: ,
Category:数自计
867 views
No Comments

为Nginx目录设置访问密码

1.创建htpasswd文件:

可以使用以下这个python脚本生成:

http://trac.edgewall.org/export/10770/trunk/contrib/htpasswd.py

执行命令:

[cc lang=’bash’]chmod 777 htpasswd.py
./htpasswd.py -c -b htpasswd username password[/cc]

其中htpasswd是生成的文件名

2.修改nginx的conf

修改nginx.conf或者所要设置的vhost的conf,加入如下语句:

[cc lang=’bash’]location  ^~ /
{
auth_basic “Password”;
auth_basic_user_file /usr/local/nginx/conf/htpasswd;
}[/cc]

其中htpasswd是上面步骤一生成的文件,我放到了nginx的conf文件夹下。

这样就对整个根目录进行了加密,但是出现了一个问题就是无法解析php。

那么将上述文件中的php解析部分改成:

[cc lang=’bash’]location ^~ / {
location ~ .*\.(php|php5)?$ {
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fcgi.conf;
}
auth_basic “Password”;
uth_basic_user_file /usr/local/nginx/conf/htpasswd;
}[/cc]

即可。

2011.12.02
标签: ,
Category:数自计
1,007 views
No Comments

Linux如何踢人

pkill -kill -t tty 即可

tty用who或者w查看

2011.11.12
标签:
Category:数自计
810 views
No Comments

Debian环境下架设L2TP/IPSec

首先安装openswan:

[cce lang=’bash’]apt-get install openswan[/cce]

用文字编辑工具(如vim)打开/etc/ipsec.conf,改成如下样式:

[cce lang=’bash’]
version 2.0
config setup
nat_traversal=yes
virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12
oe=off
protostack=netkey

conn L2TP-PSK-NAT
rightsubnet=vhost:%priv
also=L2TP-PSK-noNAT

conn L2TP-PSK-noNAT
authby=secret
pfs=no
auto=add
keyingtries=3
rekey=no
ikelifetime=8h
keylife=1h
type=transport
left=YOUR.SERVER.IP.ADDRESS
leftprotoport=17/1701
right=%any
rightprotoport=17/%any [/cce] More >>

2011.11.12
标签:
Category:数自计
2,710 views
3 Comments

设置使用vi/vim编辑crontab

1,编辑.profile文件,增加  EDITOR=vi;export EDITOR

2,直接在命令行输入 EDITOR=vi;export EDITOR

2011.11.11
标签:
Category:数自计
746 views
No Comments