月度存档: 六月 2014

好吧,一个makefile的初学者学习skynet中

1、第一步就是项目的组织方式。skynet经常要更新,所以要尽量避免在自己项目共用同一个git。从群中和云风的文章中了解到,使用submodule引用skynet是一种比较理想的方式。我一个makefile基本为0的人要理解submodule的编写很不容易,而且也不知道过程对不对,但现在至少已经可以初步达到目标了。

# hello game
#

.PHONY : all clean skynet

CC ?= gcc
PLAT ?=linux

LUA_CLIB_PATH=/opt/git/hellogame/luaclib
CSERVICE_PATH=/opt/git/hellogame/cservice

SKYNET_BUILD_PATH ?=/opt/git/hellogame

all : skynet

skynet :
        cd module_skynet && $(MAKE) CC=$(CC) SKYNET_BUILD_PATH=$(SKYNET_BUILD_PATH) LUA_CLIB_PATH=$(LUA_CLIB_PATH) CSERVICE_PATH=$(CSERVICE_PATH) linux

clean :
        cd module_skynet && $(MAKE) CC=$(CC) SKYNET_BUILD_PATH=$(SKYNET_BUILD_PATH) LUA_CLIB_PATH=$(LUA_CLIB_PATH) CSERVICE_PATH=$(CSERVICE_PATH) clean

写的很差,先用着吧。module_skynet是引用的skynet

2、复制module_skynet/example/config到本地目录。

然后修改config中的lua地址:

root = "./"
thread = 8
logger = nil
harbor = 1
address = "127.0.0.1:2526"
master = "127.0.0.1:2013"
start = "main"  -- main script
bootstrap = "snlua bootstrap"   -- The service for bootstrap
standalone = "0.0.0.0:2013"
luaservice = root.."service/?.lua;"..root.."test/?.lua;"..root.."examples/?.lua;".."module_skynet/service/?.lua;"..root.."module_skynet/test/?.lua;"..root.."module_skynet/examples/?.lua"
lualoader = "lualib/loader.lua"
-- preload = "./examples/preload.lua"   -- run preload.lua before every lua service run
snax = root.."examples/?.lua;"..root.."test/?.lua"
cpath = root.."cservice/?.so"
-- daemon = "./skynet.pid"

只修改其中 luaservice的地址。

3、启动 ./skynet config,提示找不到lualib/loader.lua,又建立了一个软连接指向module_skynet/lualib,可以顺利解决问题。

4、以上方式不保证是最合适的,但至少可以进行开发了。

mysql 中的date 0 处理

jdbc mysql遇到日期为0时即报异常。

这里需要在jdbc.url上多传一个参数 zeroDateTimeBehavior=convertToNull

用来告诉jdbc驱动,遇到date为0是设置为null。

安装ganglia

#安装ganglia

yum install zlib-devel freetype-devel libart_lgpl-devel libpng-devel rrdtool expat apr apr-util gcc-c++ rrdtool-devel  apr-devel apr-util-devel

#安装libconfuse

wget http://download.savannah.gnu.org/releases/confuse/confuse-2.7.tar.gz
tar xvfz confuse-2.7.tar.gz
cd confuse-2.7
./configure CFLAGS=-fPIC
make
make install

#安装ganglia
./configure –with-gmetad –with-python –enable-gexec –with-libconfuse=/usr/local/confuse –with-libexpat=/usr/local/expat  –sysconfdir=/etc/ganglia
make
make install

#创建rrdtool数据目录:

mkdir -p /var/lib/ganglia/rrds
mkdir -p /var/lib/ganglia/dwoo
chown -R apache:apache /var/lib/ganglia

#修改/etc/ganglia/gmetad.conf文件:
vim /etc/ganglia/gmetad.conf
data_source “suc” localhost
setuid_username “apache”

#启动 gmetad
cp -f gmetad/gmetad.init /etc/init.d/gmetad
cp -f /usr/local/sbin/gmetad /usr/sbin/gmetad
chkconfig –add gmetad
service gmetad start

#通过telnet localhost 8651验证gmetad是否正常

#客户端配置 gmond节点
cp -f gmond/gmond.init /etc/init.d/gmond
cp -f /usr/local/sbin/gmond /usr/sbin/gmond
chkconfig –add gmond
gmond –default_config > /etc/ganglia/gmond.conf
#修改/etc/ganglia/gmond.conf配置文件:
cluster {
name=”suc”
owner=”apache”
latlong=”unspecified”
url=”unspecified”
}

service gmond start
通过telnet localhost 8649验证gmond是否正常

ganglia-web可以允许在web中浏览数据,是使用php写的,网上大多数文章写的放在apache httpd中运行,实际上nginx一样可以运行。

脚本远程上传文件

#!/bin/bash
local_dir=$1
target_dir=$1
user=root
password=password
serverip=ip

lftp -c "open -u $user,$password sftp://$serverip ; mirror -R --delete $local_dir $target_dir"

lftp也支持ftp协议: