分类目录归档:VPS

Linux 服务器 Crontab 的安装及使用

上次定时备份网站数据,这次来说说 Crontab 定时执行工具的用法。

1.Crontab的安装

Ubuntu 下的安装命令:

apt-get install cron 

重启Crontab:

/etc/init.d/cron restart

2.Crontab使用方法

查看crontab定时执行任务列表:

crontab -l

添加crontab定时执行任务:

crontab -e

进行添加定时任务时,可能会因为crontab默认编辑器的不同,默认会推荐nano编辑器,使用比较简单,直接在文件末尾按crontab命令格式输入即可,Ctrl+x退出,再输y 回车保存。

另外一种是vi编辑器,首先按i键,在文件末尾按crontab命令格式输入,再按ESC键,再输入:wq 回车即可。

***添加完定时任务后,需要重启Crontab

3.crontab 任务命令书写格式

格式: minute hour dayofmonth month dayofweek command
解释: 分钟 小时 日期 月付 命令
范围: 0-59 0~23 1~31 1~12 0~7,0和7都代表周日

在crontab中我们会经常用到* ,   –  /n 这4个符号,好吧还是再画个表格,更清楚些:

符号 解释
*(星号) 代表所有有效的值。 如:0 23 * * * backup 不论几月几日周几的23点整都执行backup命令。
,(逗号) 代表分割开多个值。如:30 9 1,16,20 * * command 每月的1、16、20号9点30分执行command命令。
-(减号) 代表一段时间范围。如0 9-17 * * * checkmail 每天9点到17点的整点执行checkmail命令
/n 代表每隔n长时间。如*/5 * * * * check 每隔5分钟执行一次check命令,与0-59/5一样。

下面举一些例子来加深理解:

每天凌晨3:00执行备份程序:0 3 * * * /root/backup.sh

每周日8点30分执行日志清理程序:30 8 * * 7 /root/clear.sh

每周1周5 0点整执行test程序:0 0 * * 1,5 test

每年的5月12日14点执行wenchuan程序:0 14 12 5 * /root/wenchuan

每晚18点到23点每15分钟重启一次php-fpm:*/15 18-23 * * * /etc/init.d/php-fpm

如何将VPS上的网站数据定时自动备份到Dropbox

本文所讲内容为如何将网站上的文件以及数据库中的内容定时自动备份到Dropbox上。

1.创建Dropbox应用

首先,需要创建一个Dropbox应用(Dropbox目前需要翻墙),可以从该网址进行创建:https://www.dropbox.com/developers/apps/create

在这里,应用类型选择Dropbox API App,数据存储类型选择Files and datastores,权限选择Yes(应用只需要访问它创建的文件)。然后命名创建。

2.下载并执行dropbox_uploader.sh

dropbox_uploader 是一个第三方Dropbox备份脚本,首先下载脚本:

curl "https://raw.githubusercontent.com/andreafabrizi/Dropbox-Uploader/master/dropbox_uploader.sh" -o dropbox_uploader.sh  

然后,为该脚本添加执行权限:

# chmod +x dropbox_uploader.sh 

执行该脚本,绑定APP:

# ./dropbox_uploader.sh 

根据提示输入Dropbox应用中的App key和App secret,许可类型选择a,确认y,复制给出的权限验证链接到浏览器,确认后回到终端按任意键完成。

dropbox_uploader1

之后可以执行下面的命令测试上传,提示Done就是绑定成功了:

./dropbox_uploader.sh upload /etc/passwd /backup/passwd.old 

3.编写备份脚本

编写定时备份脚本,取名为backup.sh。其代码如下:


#!/bin/bash

# 定义需要备份的目录
WEB_DIR=/home/www # 网站数据存放目录

# 定义备份存放目录
DROPBOX_DIR=/$(date +%Y-%m-%d) # Dropbox上的备份目录
LOCAL_BAK_DIR=/home/backup # 本地备份文件存放目录

# 定义备份文件名称
DBBakName=DB_$(date +%Y%m%d).tar.gz
WebBakName=Web_$(date +%Y%m%d).tar.gz

# 定义旧数据名称
Old_DROPBOX_DIR=/$(date -d -7day +%Y-%m-%d)
OldDBBakName=DB_$(date -d -10day +%Y%m%d).tar.gz
OldWebBakName=Web_$(date -d -10day +%Y%m%d).tar.gz

cd $LOCAL_BAK_DIR

#使用命令导出数据库
mongodump --out $LOCAL_BAK_DIR/mongodb/ --db bastogne

#压缩数据库文件合并为一个压缩文件
tar zcf $LOCAL_BAK_DIR/$DBBakName $LOCAL_BAK_DIR/mongodb
rm -rf $LOCAL_BAK_DIR/mongodb

#压缩网站数据
cd $WEB_DIR
tar zcf $LOCAL_BAK_DIR/$WebBakName ./*

cd ~
#开始上传
./dropbox_uploader.sh upload $LOCAL_BAK_DIR/$DBBakName $DROPBOX_DIR/$DBBakName
./dropbox_uploader.sh upload $LOCAL_BAK_DIR/$WebBakName $DROPBOX_DIR/$WebBakName

#删除旧数据
rm -rf $LOCAL_BAK_DIR/$OldDBBakName $LOCAL_BAK_DIR/$OldWebBakName
./dropbox_uploader.sh delete $Old_DROPBOX_DIR/

echo -e "Backup Done!"

其中,用户可以根据自己的需求改编需要备份的目录,以及保留旧数据的时长(比如我这里设置的是Dropbox保留7天,本地保留10天)。

接下来,为这个备份脚本增加执行权限:

# chmod +x backup.sh 

测试该备份脚本:

./backup.sh 

4.设置定时任务

执行:

crontab –e

添加:

30 3 * * * /root/backup.sh 

这样,就可以每天凌晨3:30自动备份到Dropbox了。

5.最后重启Crontab

service cron restart

重启之后就设置完成了

如果你不知道服务器当前时间,可以使用下面的命令,查看当前时间:

date -R

修改当前时区:

cp /usr/share/zoneinfo/主时区/次时区 /etc/localtime

例如:

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

即修改服务器时区为上海。

6.Reference

本文部分内容参考自:

https://timeting.com/27/use-scripts-auto-backup-vps-to-dropbox/

http://www.pythoner.com/324.html

https://gist.github.com/tonek/5383455

Ubuntu 搭建 VSFTP 详细过程

安装环境:Ubuntu 14.04 x64

1.安装vsftp

sudo apt-get install vsftpd 

2.在Ubuntu下,nologin的位置是在 /usr/sbin/nologin,然后键入

useradd -d /home/www -s /usr/sbin/nologin yourftpname 

3.修改该账户密码

passwd yourftpname 

4.注意要更改www的使用权限,否则无法上传文件到www目录上

chmod 777 /home/www 

5.修改指定目录的权限

chown -R yourftpname.yourftpname /home/www 

6.配置vsftp

编辑vsftp配置文件,命令如下:

vi /etc/vsftpd.conf 

将配置文件中

anonymous_enable=YES

改为

anonymous_enable=NO

取消如下配置前的注释符号:

local_enable=YES
write_enable=YES
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list

保存退出

7.注意在/etc下并没有vsftpd.chroot_list 这个文件,需要自己创建

touch vsftpd.chroot_list 

10.然后/etc/vsftpd.chroot_list文件,将ftp的帐户名(yourftpname)添加进去,保存退出

11.然后修改shell的配置,vi编辑/etc/shells,然后将路径/usr/sbin/nologin追加进去

12.重启vsftp服务器

service vsftpd restart 

PS:/etc目录下有个ftpusers文件,是用来记录不允许连接的用户列表

Linode新注册用户赠送50美元

很多人选择 Linode VPS 是因为它提供的 VPS 性能很强而且价格又便宜,并且服务很好。继前几次加硬盘,免费4小时试用,全系列流量翻10倍,最低配置由原来的200GB增加到2000GB (2TB) 等诸多活动之后,今年4月份 Linode 再次重磅升级,所有的VPS主机的内存加倍、硬盘变身为SSD存储、升级网络带宽和调整CPU分配。

现在 Linode 这位高大上的神开始送钱了,只要你是新注册的用户,在充值美元的时候输入优惠码(Promo Code):BOOTSTRAPPEDFM,就可以收到额外的50美元,条件是你至少要充值5美元才可以!目前linode最便宜的VPS是月付10美元,如果你自己充值10美元的话这下子可以使用半年了!

有兴趣的话可以在注册的 referral code 填上我的推荐码:fa4dabd0f51db31528f4aa82e12955757f755415

PS:关于如何使用招行VISA信用卡购买Linode VPS,请看我写的百度经验

PHPWind 9.0 整站搬家教程

搬完了 WP,接下来就剩下 PW 了,网上搜索了下,基本上都没关于 9.0 版本的搬家教程,其他版本的也是很不靠谱。只好通过参考一些相关教程,摸索出了整站搬家的方法。

1,登录到 PW 后台,进入全局》站点设置》站点信息》站点状态设置,将网站完全关闭。

2,将网站的所以文件下载到本地,通过 phpMyAdmin 导出数据库到本地。

3,将网站文件上传到新的 VPS,在新的 VPS 新建数据库,根据获取的数据库用户名、密码和数据库名,修改 conf/database.php。

4,将数据库导入到新建的数据库上。把域名解析到新主机的 IP,等待生效。

5,这时打开 PW 的后台。可能会出现 “[db.WindConnection.init] could not find driver” 提示。这是因为你的主机没有安装 pdo_mysql 模块,而 PW9.0 要加载该模块。解决办法如下:

5.1,下载pdo_mysql包

wget http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz

5.2,追加编译php,使其module目录下生产pdo_mysql.so的文件

tar zxf PDO_MYSQL-1.0.2.tgz

cd PDO_MYSQL-1.0.2

/usr/local/php/bin/phpize

./configure –with-php-config=/usr/local/php/bin/php-config –with-pdo-mysql=/usr/local/mysql

make && make install

系统会提示模块生成在 /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/ 这个目录下

5.3,修改 php.ini 文件,添加如下配置:

extension_dir=”/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/”
extension=pdo_mysql.so

5.4,重启下 Nginx 即可。

6,如果没有以上问题,则可直接登录后台开启站点,当是如果有设置伪静态,还需配置下伪静态规则,方法同上篇,规则如下:

location / {
if (-f $request_filename) {
break;
}
if ($request_filename ~* “\.(js|ico|gif|jpe?g|bmp|png|css)$”) {
break;
}
if (!-e $request_filename) {
rewrite . /index.php last;
}
}

完成后还需重启下 Nginx 即可生效。

参考如下:

http://hi.baidu.com/jjpp5/item/cd1d5524bc2ca5d7a417b67a

http://www.2cto.com/database/201202/120398.html

http://www.phpwind.net/read/2966407

LNMP下,WordPress 的伪静态设置

更换了 VPS,就要开始给网站搬家,搬家出现的第一个问题就是 WordPress 的伪静态问题。新的VPS 采用了 LNMP 环境,安装的是 AMH 面板。之前使用的是LAMP环境的 Webmin,但是 Webmin 功能过于臃肿复杂,比较耗内存,而且Nginx 对比 Apache 更高效稳定。所以这次决定采用 LNMP 环境。虽说这样比较折腾,但是只有去折腾才会有意外的收获。

Nignx 不支持 .htaccess 伪静态规则,需要修改 Nignx 相应的配置文件添加伪静态规则,以下记录了整个修改配置过程:

1,登录到 Linux 服务器,

2,打开/usr/local/nginx/conf/vhost/“你的域名”.conf,Linux命令如:

vi /usr/local/nginx/conf/vhost/sufaming.com.conf

3,找到

{
root / 你的网站路径
}

输入 i  (插入文本命令)

在其下加上:

location / {
index index.html index.php;
if (-f $request_filename/index.html){
rewrite (.*) $1/index.html break;
}
if (-f $request_filename/index.php){
rewrite (.*) $1/index.php;
}
if (!-f $request_filename){
rewrite (.*) /index.php;
}
}

4,,最后按ESC键 跳到命令模式,输入 :wq ,保存文件并退出vi。

最后重启下 Nginx 即可。

转战 Linode VPS

从今年年初开始使用阿里云,总体来说,作为云主机提供商在国内算是非常不错的,访问速度快,稳定性也还可以(期间出现过几次问题)。而且提供的备案服务也较方便,但是备案的过程还是太麻烦了,拍照、提交各类信息、打印表格、填写邮寄、再等个一两个礼拜,每备案一个域名都得如此重复,想想都没心情了,当然这个怪不得阿里云。

5月份的时候开始使用 Linode VPS,在这段时间的使用中,果真印证了Linode 的口碑,速度快且稳定性好。速度上虽说比不上国内的服务器(我选的是东京机房),但是够用就好。而且最近从硬盘、流量、CPU、内存都全部翻倍!Linode 业界良心啊!

综合以上几点,决定从阿里云转战 Linode VPS。上周招行的VISA信用卡终于办好邮寄过来了,吐槽下中国邮政,一封挂号信为什么不直接送过来,而是每次都寄一张邮件催领通知单过来,需要自己去邮局取,有这功夫干嘛不直接把挂号信带过来?有点扯远了,其实办的这张招行VISA信用卡就是为了购买Linode VPS。这是因为 Linode VPS 目前不支持支付宝付款,只支持信用卡付款,而且必须支持美元付款的信用卡。而目前国内就招商银行VISA信用卡可以付款。

关于如何使用招行VISA信用卡购买Linode VPS,请看我写的百度经验