分类存档: coder

将Jar文件导入Maven资源库中

命令如下:

mvn install:install-file -Dfile=D:\Jar\spring-social-weibo-0.
2.0.RELEASE.jar -DgroupId=com.couponornot -DartifactId=spring-social-weibo
-Dversion=0.2.0.RELEASE -Dpackaging=jar -DgeneratePom=true
-DcreateChecksum=true

-Dfile:文件路径
-DgroupId:Pom.xml文件中引用的groupId
-DartifactId:同上
-Dversion:同上

使用Git下载和导入项目到maven库

Step 1: Get the code from GitHub

git clone –recursive git://github.com/xxx.git

Step 2: Use Maven to build project

cd xxx mvn clean install

Step 3: Add xxx project as a Maven dependency

<dependency>
    <groupId>package</groupId>
    <artifactId>xxx</artifactId>
    <version>version</version>
</dependency>

双向同步软件Unison的安装与配置

一、Unison简介
Unison是Windows、Linux以及其他Unix平台下都可以使用的文件同步工具,它能使两个文件夹(本地或网络上的)保持内容的一致。Unison拥有与其它一些同步工具或文件系统的相同的特性,但也有自身的特点:
1.跨平台使用;
2.对内核和用户权限没有特别要求;
3.Unison是双向的,它能自动处理两分拷贝中更新没有冲突的部分,有冲突的部分将会显示出来让用户选择更新策略;
4.只要是能连通的两台主机,就可以运行unison,可以直接使用socket连接或安全的ssh连接方式,对带宽的要求不高,使用类似rsync的压缩传输协议。

二、编译安装Unison
Linux下通过源码包编译安装Unison时,需要用到Objective Caml compiler。
通过以下方式安装
[root@server1 ~]# wget http://caml.inria.fr/pub/distrib/ocaml-3.12/ocaml-3.12.0.tar.gz
[root@server1 ~]# tar -xzvf ocaml-3.12.0.tar.gz
[root@server1 ~]# cd ocaml-3.12.0
[root@server1 ocaml-3.12.0]# ./configure
[root@server1 ocaml-3.12.0]# make world opt
[root@server1 ocaml-3.12.0]# make install

编译安装Unison
[root@server1 ~]# wget http://www.seas.upenn.edu/~bcpierce/unison//download/releases/stable/unison-2.40.63.tar.gz
[root@server1 ~]# tar -xzvf unison-2.40.63.tar.gz
[root@server1 ~]# cd unison-2.40.63
[root@server1 unison-2.40.63]# make UISTYLE=text
[root@server1 unison-2.40.63]# make install

在执行make install的过程中,可能会出现以下错误提示:
mv: cannot stat ‘/root/bin//unison’: No such file or directory
make: [doinstall] Error 1 (ignored)
cp unison /root/bin/
cp: cannot create regular file ‘/root/bin/’: Is a directory
make: *** [doinstall] Error 1

出现错误的原因在与Unison默认是将文件Copy到/root/bin目录,但Linux默认是没有该目录的,因此我们需要将生成的可执行文件unison复制到系统的PATH目录。
[root@server1 unison-2.40.63]# cp unison /usr/local/bin

将可执行文件unison上传到远程主机(假设远程主机IP为192.168.10.4)
[root@server1 unison-2.40.63]# scp unison root@92.168.10.4:/root/
通过SSH登陆到远程主机,再将unison复制到server2的PATH目录
[root@server2 ~]#cp unison /usr/local/bin

三、配置ssh key信任
建议通过普通用户进行操作,理由是通过root操作本身就危险,免密码登陆的root就更危险了。

在两台服务器上创建unison用户
[root@server1 ~]# useradd -m unison
[root@server1 ~]# passwd unison
[root@server2 ~]# useradd -m unison
[root@server2 ~]# passwd unison

在server1上创建key并配置server2的信任
[root@server1 ~]# su – unison
[unison@server1 ~]$ ssh-keygen -t rsa
在提示保存私钥(key)和公钥(public key)的位置时,使用默认值;
在提示是否需要私钥密码(passphrase)时,直接敲回车,即不使用私钥密码。
之后,将生成一对密钥,id_rsa(私钥文件)和id_rsa.pub(公钥文件),保存在/home/unison/.ssh/目录下。

将公钥添加到server2的 authorized_keys 文件中
将文件上传到server2(假设server2主机IP为192.168.10.4)
[unison@server1 ~]$ scp ~/.ssh/id_rsa.pub unison@192.168.10.4:/home/unison/

使用rsync用户SSH到登陆到远程主机,并将公钥添加到 authorized_keys 文件中
[unison@server2 ~]$ mkdir .ssh
[unison@server2 ~]$ chmod 700 .ssh
[unison@server2 ~]$ mv ~/id_rsa.pub ~/.ssh/authorized_keys

同理,执行以下步骤在server2上创建key并配置server1的信任
[root@server2 ~]# su – unison
[unison@server2 ~]$ ssh-keygen -t rsa

将文件上传到server1(假设server1主机IP为192.168.10.3)
[unison@server2 ~]$ scp ~/.ssh/id_rsa.pub unison@192.168.10.3:/home/unison/

使用rsync用户SSH到登陆到server1,并将公钥添加到 authorized_keys 文件中
[unison@server1 ~]$ mv ~/id_rsa.pub ~/.ssh/authorized_keys

重启SSH服务
[root@server1 ~]# /etc/init.d/sshd restart
[root@server2 ~]# /etc/init.d/sshd restart

四、Unison的配置与使用
在两台服务器上创建test目录,用于测试
[root@server1 ~]# su – unison
[unison@server1 ~]$ mkdir test
[root@server2 ~]# su – unison
[unison@server2 ~]$ mkdir test

在两台服务器上分别执行一次unison,如果出现提示确认,则直接敲回车选择默认值
[unison@server1 ~]$ unison /home/unison/test/ ssh://unison@192.168.10.4//home/unison/test/
[unison@server2 ~]$ unison /home/unison/test/ ssh://unison@192.168.10.3//home/unison/test/

修改两台服务器的unison配置文件,输入以下内容
[unison@server1 ~]$ vim /home/unison/.unison/default.prf
#Unison preferences file
root = /home/unison/test
root = ssh://unison@192.168.10.4//home/unison/test/
#force =
#ignore =
batch = true
#repeat = 1
#retry = 3
owner = true
group = true
perms = -1
fastcheck = false
rsync = false
sshargs = -C
xferbycopying = true
log = true
logfile = /home/unison/.unison/unison.log
[unison@server2 ~]$ vim /home/unison/.unison/default.prf

#Unison preferences file
root = /home/unison/test
root = ssh://unison@192.168.10.3//home/unison/test/
#force =
#ignore =
batch = true
#repeat = 1
#retry = 3
owner = true
group = true
perms = -1
fastcheck = false
rsync = false
sshargs = -C
xferbycopying = true
log = true
logfile = /home/unison/.unison/unison.log
相关注解如下:
force表示会以本地所指定文件夹为标准,将该目录同步到远端。这里需要注意,如果指定了force参数,那么Unison就变成了单项同步了,也就是说会以force指定的文件夹为准进行同步,类似与rsync。
Unison双向同步基本原理是:假如有A B两个文件夹,A文件夹把自己的改动同步到B,B文件夹也把自己的改动同步到A,最后A B两文件夹的内容相同,是AB文件夹的合集。
Unison双向同步的一个缺点是,对于一个文件在两个同步文件夹中都被修改时,unison是不会去同步的,因为unison无法判断以那个为准。
ignore = Path表示忽略指定目录,即同步时不同步它。
batch = true,表示全自动模式,接受缺省动作,并执行。
-fastcheck true 表示同步时仅通过文件的创建时间来比较,如果选项为false,Unison则将比较两地文件的内容。
log = true 表示在终端输出运行信息。
logfile 指定输出的log文件。

另外,Unison有很多参数,这里仅介绍常用的几个,详细的请参看Unison手册。
-auto //接受缺省的动作,然后等待用户确认是否执行。
-batch //batch mode, 全自动模式,接受缺省动作,并执行。
-ignore xxx //增加 xxx 到忽略列表中
-ignorecase [true|false|default] //是否忽略文件名大小写
-follow xxx //是否支持对符号连接指向内容的同步
owner = true //保持同步过来的文件属主
group = true //保持同步过来的文件组信息
perms = -1 //保持同步过来的文件读写权限
repeat = 1 //间隔1秒后,开始新的一次同步检查
retry = 3 //失败重试
sshargs = -C //使用ssh的压缩传输方式
xferbycopying = true”
-immutable xxx //不变目录,扫描时可以忽略
-silent //安静模式
-times //同步修改时间
-path xxx 参数 //只同步 -path 参数指定的子目录以及文件,而非整个目录,-path 可以多次出现。

PS:Windows下的unison配置文件默认位于C:\Documents and Settings\currentuser\.unison目录,默认的配置文件名是default.prf。

五、测试
首先分别在server1与server2的/home/unison/test目录下创建文件或目录,然后在server1上执行unison,接着如果在server1与server2上都能看到各自创建的文件,就说明同步成功。

分别在server1与server2上创建文件
[unison@server1 ~]$ cd test
[unison@server1 test]$ touch 1.txt touch 3.txt
[unison@server2 ~]$ cd test
[unison@server2 test]$ touch 2.txt touch 4.txt

在server1上执行unison
[unison@server1 ~]$ unison

在server1与server2上查看文件是否同步
[unison@server1 ~]$ cd test
[unison@server1 test]$ ls
1.txt 2.txt 3.txt 4.txt
[unison@server2 ~]$ cd test
[unison@server2 test]$ ls
1.txt 2.txt 3.txt 4.txt

均看到了“1.txt 2.txt 3.txt 4.txt”所有文件,说明文件同步已经成功!

注意:第一次SSH连接的时候可能需要输入一次密码,之后就不需要输入了。

六、定期或实时执行同步
如果想要定期执行,则通过crontab计划任务来实现,例如通过以下方式设置每5分钟执行一次
[root@server1 ~]# su – unison
[unison@server1 ~]$ crontab -e

*/5 * * * * /usr/local/bin/unison

SFtp命令

基本上记得2个命令就可以了
put 上传
get 下载

其它命令:
cd 路径 更改远程目录到“路径”
lcd 路径 更改本地目录到“路径”
chgrp group path 将文件“path”的组更改为“group”
chmod mode path 将文件“path”的权限更改为“mode”
chown owner path 将文件“path”的属主更改为“owner”
exit 退出 sftp
help 显示这个帮助文本
get 远程路径 下载文件
ln existingpath linkpath 符号链接远程文件
ls [选项] [路径] 显示远程目录列表
lls [选项] [路径] 显示本地目录列表
mkdir 路径 创建远程目录
lmkdir 路径 创建本地目录
mv oldpath newpath 移动远程文件
open [用户@]主机[:端口] 连接到远程主机
put 本地路径 上传文件
pwd 显示远程工作目录
lpwd 打印本地工作目录
quit 退出 sftp
rmdir 路径 移除远程目录
lrmdir 路径 移除本地目录
rm 路径 删除远程文件
lrm 路径 删除本地文件
symlink existingpath linkpath 符号链接远程文件
version 显示协议版本

 

Nginx日志切割脚本

目前网上也有一些Nginx日志切割脚本,但是论坛还是有用户反映网上Nginx日志切割脚本有问题,我感觉一般是因为脚本中的参数设置问题,或者是crontab中的设置问题。

为方便lnmp一键安装包用户,我也写了一个Nginx日志切割脚本,下载地址:http://soft.vpser.net/lnmp/ext/cut_nginx_logs.sh

如果是lnmp0.5/0.6用户可以仅修改log_files_name后面的要切割的日志文件名就直接使用。

脚本主要参数:

#设置nginx日志文件目录路径
log_files_path=”/home/wwwlogs/”
#日志文件将会存放到/home/wwwlogs/年/月/日志文件名_年月日.log
log_files_dir=${log_files_path}$(date -d “yesterday” +”%Y”)/$(date -d “yesterday” +”%m”)
#设置要切割的日志的名字,如果日志目录下面的日志文件名为vpser.net.log,则填写vpser.net,每个日志名用空格分隔
log_files_name=(access vpser.net licess)
#设置nginx文件的位置
nginx_sbin=”/usr/local/nginx/sbin/nginx”
#设置日志保存的时间,天
save_days=30

如果是非lnmp一键安装包用户可以通过修改上述参数适应你的nginx环境。

nginx日志切割脚本下载到/root/下面。再添加自动执行,执行:crontab -e

输入:00 00 * * * /bin/bash /root/cut_nginx_logs.sh 每天0点整开始切割脚本。

 

第 1 / 9 页123456789