将log4j输出到rsyslog服务器

November 9th, 2011 free9 No comments

开通 rsyslog 远程 UDP 访问

vim /etc/rsyslog.conf

去掉下面两行前的注释

#$ModLoad imudp
#$UDPServerRun 514

并在文件的最后,加入

local9.info /var/log/local9_info.log
local9.debug /var/log/local9_debug.log

修改完后,重启 rsyslog

/etc/init.d/rsyslog restart

log4j 配置

log4j.rootLogger=debug, syslog
log4j.appender.syslog=org.apache.log4j.net.SyslogAppender
log4j.appender.syslog.Threshold=DEBUG
log4j.appender.syslog.layout=org.apache.log4j.PatternLayout
log4j.appender.syslog.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
log4j.appender.syslog.Header=true
# 打印时附加发送的机器名称
log4j.appender.syslog.Facility=local9
Categories: Uncategorized Tags:

Java H2 Database

October 14th, 2011 free9 No comments

H2 数据库是使用Java写的小型数据库,现在很多开源项目都使用此数据库做为演示。

H2 提供了一种WebClient基于Browser的UI数据库客户端连接,可以连接多种数据库:H2, Oracle, HSQLDB, MySQL等,可以通过以下命令启动:

java -cp h2.jar org.h2.tools.Console
Categories: db, H2, Java Tags:

美国 VPS 使用评价

May 19th, 2011 free9 2 comments

用过的 VPS 已经不少了,从 OpenVZ 到 Xen 到 Vmware,一共用过6家美国VPS了。记录一下各vps的情况,本人网络是杭州电信。
IO 测试的命令为:

dd if=/dev/zero of=test bs=64k count=16k conv=fdatasync

1. WhyNotVPS,用的第一个 VPS 好像是一个月8美金 256M内存,一开始对 OpenVZ 和 Xen 概念都没搞懂,一高兴就买了,结果发现内存不够用,运行个 java 直接报内存不足。开始时网速还可以,但后来服务器在没有说明的情况下,就转移了机房,导致网络非常烂…直接退掉。评价:差

2. VPSYou,经历了上次 OpenVZ 内存不足的痛苦后,选的一个国人的Xen VPS,T2机房,速度不错,开始都保持在200k左右,下载速度经常能到 600k/s,但用了几个月后 丢包严重,网速非常烂 30k/s,还经常丢包,硬件性能上不是很理想 IO 30m/s,再加上 VPSYou 个人搞的感觉不太有保障,于是退了。退掉之后的一周左右,收到条短信,确认是否数据可以删除,服务还可以。

3. Linode,出于稳定的考虑,选择了 Linode 位于 Fremont 的机房。Linode 果然对得起他的价格,装上了我最爱的 Arch Linux,IO 在 90m/s 左右,ping 在 180 – 270 之间也算不错,管理面板相当高级,文档也多。不过后来遇到了别的 VPS,我的把 Linode 退了,7天内全额退款,服务非常好。

4. YardVPS,相当便宜的 Xen VPS,不过服务很差,面板非常简漏,开始我选了 Arch,可居然 ssh 登陆不上,提示密码错误,在面板中修改密码,重启都试了也没用。于是发 ticket,没有回复。于是我换系统,试过了各种版本的 Ubuntu,Debain 都提示 ssh 密码错误。最后选了 Centos后,居然登上了!好吧,虽然我不太喜欢Centos,不过看在看便宜,网速可以 200ms 左右,磁盘性能也还行 IO 40m/s 的份上,就用着吧。

5. eNetSouth,Vmware 的 VPS,在网上看到评价说不错后,就买了。买了后相当后悔,性能非常烂!还很贵!IO 有些时候只有可怜的个位数,网络也不行,实在不知道他能干嘛了。发邮件,想退款,没人回复。总之就是烂~!建议大家,千万不要选择 Vmware,也不要选择 eNetSouth。

6. Buyvm,网上评价不错的 OpenVZ,长期缺货(说明没有超卖?),苦等一个月后才有货,立马买了个1G内存的 plan。硬盘 和 网络流量都比较同价位的大,价格也比较实惠。 和之前的 Linode 一样,都是Fremont 机房,不过感觉网速比 Linode 差。而且这个 OpenVZ 可以装 pptp 服务。

总结,使用体验上:Linode > YardVPS > Buyvm > VPSYou > WhyNotVPS > eNetSouth
性价比上,则上 YardVPS比较高。

Categories: Server Tags:

Struts2 JsonValidation

May 18th, 2011 free9 No comments

今天想自己写 Struts2 JsonValidation的拦截器时,在Struts2 源码中发现已经有官方实现的版本了,使用方法如下:

首先,将 struts2 的 jsonValidationWorkflowStack 拦截器,配置到需要使用 JsonValidation 的 Action 上

<action name="example" class="org.free9.web.ExampleAction">
<interceptor-ref name="jsonValidationWorkflowStack"/>
</action>

然后,在请求 action 时,要加上 参数 struts.enableJSONValidation=true,jQuery ajax code:

$.ajax({
    url : "/example.do",
    data : "struts.enableJSONValidation=true",
    dataType : "json",
    success : function(data) {
        // 错误信息默认都放在 data.fieldErrors
        if(typeof data.fieldErrors == "undefined") {
	    // 验证通过
	} else {
	    for(var el in data.fieldErrors) {
	        alert(data.fieldErrors[el]);
	    }
	}
    }
})

在使用过程中,struts2-2.1.8.1 版本,在 JSONValidationInterceptor.buildResponse 会报一个指针错误,升级到 struts2-2.2.3 时,没有错误,但是 jquery 不能正常解析 response 为 json 格式,是由于,输出 json 数据时,在前面加了 注释

/* { "fieldErrors": {"name":["error message"]}} */

修改 org.apache.struts2.interceptor.validation.JSONValidationInterceptor.buildResponse() 方法,去掉注释符,就可以了。

Categories: Dev Tags: ,

解决Debain中文乱码

May 16th, 2011 free9 No comments

最近的项目要用 Java 文件进行操作,可在本地 Windows 和 Mac 上跑得好好的程序,到了 Linux 居然发现 common vfs 有中文乱码问题。仔细一查后才觉得是系统设置问题。

首先,要设置 locale

locale -a

查看是否安装中文环境,zh_CN.utf8

如果没有,运行下面命令,选择安装所有语言,或只安装zh_CN.utf8的几个,然后设置默认为 zh_CN.utf8

dpkg-reconfigure locales

修改 /etc/environment 文件,加入

LANG="en_US"
LANGUAGE="en_CN:en_US:zh_CN:en"
LC_CTYPE="zh_CN.UTF-8"

用户重新登陆后,环境变量生效,启动TOMCAT,发现一切都好了。

Categories: Server Tags: ,

vsftpd /bin/false SSH check_shell=NO pam

February 22nd, 2011 free9 No comments

有时候,我们希望用户可以访问 ftp,不能登录 ssh,又不想使用 vsftp 的虚拟用户。

在默认配置中,使用系统用户登录 vsftp 时,将用户的 /bin/false 后,可以禁止用户登录 ssh,但同时用户也将不能登录上FTP。这是因为 vsftp 默认开启了 pam 验证。

编辑 /etc/pam.d/vsftpd 文件

auth   required        pam_shells.so

将此行注释掉后,去除 vsftp 的 pam 验证,重启 vsftp 后,可以实现允许系统用户登录 FTP,但不能登录 SSH。

网上部分文章说,需要在 vsftpd.conf 文件中,加入 check_shell=NO,在我的机器中,不加也可以。

Categories: Server Tags: , , ,

vsftp iptables 主动被动模式 Passive Mode 配置

February 22nd, 2011 free9 1 comment

当服务器使用了 iptables 做为防火墙后,可能会造成部分FTP软件不能正常连接上服务器(其实可以登陆,但不能显示目录)。

原因是FTP软件,默认使用被动模式连接 Passive Mode。
被动模式 下,客户连接 TCP/21,客户再通过其他端口连接服务器的随机端口,卡住的原因,是因为服务器在被动模式下打开临时端口被 iptables 防火墙拒绝,造成连接超时。

解决办法:指定 vsftp 随机生成端口号范围,并在 iptables 中,开放此端口号内的访问。

在 vsftp 配置文件 vsftpd.conf 中,加入

pasv_enable=YES
pasv_min_port=7100
pasv_max_port=7109

在 iptables 中加入

-A INPUT -p tcp --dport 7100:7109 -j ACCEPT
Categories: Server Tags: , ,

Mysql on Mac os x

February 20th, 2011 free9 1 comment

Mysql 在 mac os x 下,可以使用 dmg 的安装,去  http://www.mysql.com/downloads/mysql 下载 mysql-5.1.xx-osx10.6-x86_64.dmg 文件。dmg 镜像中,包含两个 pkg 安装文件。

  1. mysql-5.1.xx-osx10.6-x86_64.pkg,必须安装。
  2. MySQLStartupItem.pkg,mysql 开机启动程序,安装于目录 /Library/StartupItems/MySQLCOM/。

关闭、启动命令:

sudo /Library/StartupItems/MySQLCOM/MySQLCOM stop
sudo /Library/StartupItems/MySQLCOM/MySQLCOM start
Categories: Mac Tags: , ,

SEO 优化之 Redirect 301 重定向

November 7th, 2010 free9 No comments

在网站建设中, 经常会发生修改访问目录, 修改访问地址, 域名改变等情况. 如果不进行 Redirect 重定向, 用户收藏夹地址, 和搜索引擎收录的地址 将会发生404错误.

使用 Redirect 301 重定向, 可以通知搜索引擎使用新地址, 该地址的 PR 值不变.

Nginx  中 Redirect 301 的方法:

server {
server_name  www.free9.org;
rewrite ^/(.*) http://free9.org/$1 permanent;
}

以上配置就可把所有 访问 http://www.free9.org/ 的地址, 永远重定向到 http://free9.org/ 的域名下.

Categories: Server Tags: , , ,

play framework 笔记

June 21st, 2010 free9 No comments

Play! framework 是一个非常有意思的快速开发的 Java 框架, REST的url, 像 django 类似的自动生成 admin, DDD 风格的数据库设计.最重要的, 开发中无论怎么改, 都不用重启WEB服务器, 类重载的速度非常快.

Play! 的 CRUD 模块:

开启 Play! 的CRUD模块, 需要修改 ~/{project}/conf/application.conf 文件, 在文件的最后加上 module.crud=${play.path}/modules/crud.

如果你的 eclipse 不能找到 CRUB 类的话, 你可能需要执行 ./play eclipsify {project}, 并把项目重新引入到 eclipse 中.

Categories: Dev Tags: , ,