文章标签 ‘linux’

服务器间的数据同步,rsync的确是个好方式,不过它只能被动同步而不能主动分发。
本想使用SVN+rsync的方案进行代码的管理,可是因为上面说到的原因,无法达到代码的即时分发。
遂想起SCP这个东西,但SCP每次执行必须要在控制台输入手动输入密码,于是就Google到了下面这个文章。
人家说的是用SCP进行数据备份,我是用来跟SVN的hook功能一起达到即时分发代码的目的,原理是一样的。

2009年12月10日19:15 | 没有评论
分类: 七零八碎
标签: , ,

刚刚清理台式机上文件,发现了一篇2003年在量子的时候写的一篇配置局域网Linux网关服务器的文档。虽然罗嗦了挺长,其实就是用iptables把请求转来转去。现在看来简单的很,当初却是研究了好几天的成果……
http://rui7905.googlecode.com/files/LinuxGW.rar

2009年8月14日16:54 | 没有评论
分类: 七零八碎
标签: ,

所谓简单,是因为ProFTPD的一些复杂功能都没有写进来,比如用户磁盘空间配额、上传下载速率限制等。
所谓轻量级,是因为配这个平台,是为了公司内部使用,用户有限。更复杂的配置,日后再说吧:)
网上的很多关于ProFTPD搭载数据库进行管理的文章,大多用的都是MySQL(搜baidu的结果)和PostgreSQL(搜google的结果),可是单单为了一个公司内部使用的这么一个小平台,使用这么两个重量级的数据库,是在有点杀鸡用牛刀的感觉。对于我的需求,Sqlite这个轻量级的嵌入式数据库,显然是最最合适的选择。在网上跑来跑去找了1个多小时,也没有一篇像样的配置文档,甚至连ProFTPD的官方doc里,提起sqlite也是只言片语。没办法,只有自己对着英文的Howto,自己摸索了。
1,Install Sqlite3 and ProFTPD
下载安装Sqlite3最新版:http://www.sqlite.org/
#tar -zxf sqlite-amalgamation-3.6.13.tar.gz
#cd sqlite-3.6.13/
#./configure
#make
#make install
下载安装ProFTPD最新版:http://www.proftpd.org/
ProFTPD对于数据库的支持,并不是通过linux的PAM方式来实现的
而是内置了模块,这点曾经让我走了很多弯路,TMD居然没有文章提及这点。使用sqlite模块:
#tar -zxf proftpd-1.3.2.tar.gz
#cd proftpd-1.3.2
#./configure –prefix=/usr/local/proftpd –with-modules=mod_sql:mod_sql_sqlite
#make
#make install
2,配置ProFTPD
编辑/usr/local/proftpd/etc/proftpd.conf文件,加入下面列出来的这一大坨参数。
这里只说说跟Sqlite3有关的参数,其他比较有用的参数配置说明,满世界都是。完整配置文件放在最后。
其实除了SQLBackend和SQLConnectInfo两个参数之外,剩下的一些参数在配置其他数据库时也会用到
我在配置这些数据库相关参数的时候,走了很多弯路,查了很多文档,记下来也给自己脑子备个份。
#首先来说这俩,定义proftpd以什么身份来运行,跟apache里的是一个意思
#我是习惯了apache定义为www用户和www组,配置proftpd也就这样了
#以什么身份运行,我个人感觉没啥特别意义,关键是虚拟用户对实体用户的映射!
User www
Group www
#sqlite2跟3差别较大,各软件平台对其支持也是分开来的,比如PHP
#这里就是指明,使用sqlite3
SQLBackend sqlite3
#数据库文件的绝对路径,一定要绝对
SQLConnectInfo /home/www/ftpd.db
#数据库内虚拟用户的密码认证方式
#我认为Backend的意思就是数据库自己的认证方式,比如mysql的password方案
#该方案可以指定多种,使用空格隔开,按照先后,依次try
#下面这句的意思就是“先用sqlite自己的认证方式(我用的明文,其他解决方案没研究)
#如果不行,再使用crypt(3)的方案”,实际配置文件里我只要了一个Backend
SQLAuthTypes [...]

2009年4月21日00:15 | 4 条评论
分类: 技术备案
标签: , , ,

实在厌倦了apache的臃肿,打算彻底投奔nginx的怀抱了。
编译,安装,迁移,一切都很顺利 ,最后一步在迁移svn的时候卡住了。
把nginx作为subversion的前端webserver居然目前没有解决方案……
搞了一个晚上,最终还是采取了proxy的办法,把发向nginx的svn请求转到apache上去了 ,哎。
为啥nginx没有这方面的解决方案,也大概查了个水落石出。因为这方面中文资料实在是少,让我费了颇多的周折,
现在就明明白白的说一下吧。
在nginx.net的Mailing list里,nginx的作者Igor Sysoev说了,支持SVN需要有三个东西
1) full WebDAV support,
2) DeltaV support,
3) SVN repo format support.
而在nginx里的NginxHttpDavModule,仅仅对以上三项中的第一项WebDAV有了初步的支持(目前来看Igor Sysoev并没有升级的想法),对于几个高级的WebDAV操作(比如OPTIONS、PROPFIND)并不支持,而这些操作,恰恰是SVN所必须的。而剩下的两项,更是一点支持都没。
所以,就目前来说,想单纯的nginx+subversion,基本上是不可能的。
在刚开始研究这个问题的时候,并不知道除了WebDAV还必须要有其他两个东西。所以满世界找nginx上WebDAV的解决方案,以为搞定这个,就万事大吉了。别说,还真让我在一个老外的博客上给找着一个。这家伙的方法很巧妙,他用通过查阅WebDAV的RFC文档,将绝大多数NginxHttpDavModule不支持的操作用PHP代码实现了,并且通过配置nginx,根据header信息把这些请求重定向到了这个PHP程序。这是这篇博客的地址,有志于自己动手解决这个问题的人,可以参考一下:)
最后感叹一下,为什么计算机方面的问题,总是能在国外的网站和MaillingList找到答案呢?是中国人都不会么?还是这些问题只有我这一个中国人遇到了?

2009年4月1日02:42 | 4 条评论
分类: 技术备案

1,Install Apache,APR and APR-util(http://apr.apache.org/)
#tar -zxf apr-1.3.3.tar.gz
#cd apr-1.3.3
#./configure
#make
#make install
#tar -zxf apr-util-1.3.4.tar.gz
#cd apr-util-1.3.4
#./configure –with-apr=/usr/local/apr/
#make
#make install
编译apache,加如下参数
–enable-dav –with-apr=/usr/local/apr/bin/apr-1-config –with-apr-util=/usr/local/apr/bin/apu-1-config
2. Install Neon(http://www.webdav.org/neon/)
neon is an HTTP and WebDAV client library, with a C interface.
#tar -zxf neon-0.28.3.tar.gz
#cd neon-0.28.3
#./configure –prefix=/usr/local/neon
#make
#make install
3. Install Subversion (http://subversion.tigris.org/)
#tar -zxf subversion-1.5.2.tar.gz
#cd subversion-1.5.2
#./configure –prefix=/usr/local/subversion –with-apxs=/usr/local/apache2/bin/apxs –with-apr=/usr/local/apr –with-apr-util=/usr/local/apr –with-neon=/usr/local/neon
#make
#make install
编译过程中,发生如下错误
/usr/bin/ld: cannot find -lexpat
collect2: ld returned [...]

2009年3月31日14:14 | 没有评论
分类: 技术备案
标签: ,

为了装个nginx,在一个裸机上折腾了一宿。
也不知道是机器慢,还是的确如此,编译gcc花了快一个小时。。。很是吐血。
结果编译安装完成后,去编译其他东西,结果发现了找不到编译器的提示。。。
东查西找,左蒙右猜,终于把问题搞定了,问题就出在这个 LD_LIBRARY_PATH 上面
从别处摘抄总结一下。
1. 往/lib和/usr/lib里面加东西,是不用修改/etc/ld.so.conf的,但是完了之后要调一下ldconfig,不然这个library会找不到
2. 想往上面两个目录以外加东西的时候,一定要修改/etc/ld.so.conf,然后再调用ldconfig,不然也会找不到
比如安装了一个mysql到/usr/local/mysql,mysql有一大堆library在/usr/local/mysql/lib下面,这时就需要在/etc/ld.so.conf下面加一行/usr/local/mysql/lib,保存过后ldconfig一下,新的library才能在程序运行时被找到。
3. 如果想在这两个目录以外放lib,但是又不想在/etc/ld.so.conf中加东西(或者是没有权限加东西)。那也可以,就是export一个全局变量LD_LIBRARY_PATH,然后运行程序的时候就会去这个目录中找library。一般来讲这只是一种临时的解决方案,在没有权限或临时需要的时候使用。
4. ldconfig做的这些东西都与运行程序时有关,跟编译时一点关系都没有。编译的时候还是该加-L就得加,不要混淆了。
5. 总之,就是不管做了什么关于library的变动后,最好都ldconfig一下,不然会出现一些意想不到的结果。不会花太多的时间,但是会省很多的事。
LD_LIBRARY_PATH 的意思:告诉loader在哪些目录中可以找到共享库。可以设置多个搜索目录,这些目录之间用冒号分隔开。在linux下,还提供了另外一种方式来完成同样的功能,你可以把这些目录加到/etc/ld.so.conf中,或则在/etc/ld.so.conf.d里创建一个文件,把目录加到这个文件里。当然,这是系统范围内全局有效的,而环境变量只对当前shell有效。按照惯例,除非你用上述方式指明,loader是不会在当前目录下去找共享库的,正如shell不会在当前目前找可执行文件一样。

2009年3月31日05:56 | 没有评论
分类: 技术备案
标签: ,

this is probably the easiest way to monitor SOAP messages.
simply use
#tcpdump -i eth0 -A -s 1024 port 80 | tee dump.log
to log all the packet sent to port 80 to dump.log

2009年3月23日18:43 | 没有评论
分类: 技术备案
标签: , ,

今天在用pecl为PHP5编译安装sqlite模块的时候,遇到了下面这个错误而编译不过去
sqlite.c:56: error: ‘BYREF_NONE’ undeclared here (not in a function)
GOOGLE一番,原来这是个从2006年7月就存在的BUG。虽然官方在pecl.php.net的关于此bug的详情页里说已经修复了,但不止一个人在1年甚至2年后依然表示错误依旧~!看来老外干活也会偷懒啊,出了sqlite3的模块,老的sqlite模块就不维护了,哎~~
在那个页面里,也有人提供了自己修复此BUG的方法:
1,来到PHP安装目录内的bin目录下
cd /usr/local/php-5.2.3/bin
2,下载这个模块的源码
pecl download sqlite
3,解压并开始编译
$ tar zxvf SQLite-1.0.3.tgz
$ cd SQLite-1.0.3
$ ../phpize
$ ./configure –with-php-config=/usr/local/php-5.2.3/bin/php-config
$ make
4,在make的过程如报告以上错误则编辑sqlite.c文件,将下面这行注释掉
/* static unsigned char arg3_force_ref[] = {3, BYREF_NONE, BYREF_NONE, BYREF_FORCE }; */
然后将下面这三行
function_entry sqlite_functions[] = {
PHP_FE(sqlite_open, arg3_force_ref)
PHP_FE(sqlite_popen, arg3_force_ref)
改为:
function_entry sqlite_functions[] = {
PHP_FE(sqlite_open, third_arg_force_ref)
PHP_FE(sqlite_popen, third_arg_force_ref)
5,重新编译
$ make
$ make install
将编译生成的sqlite.so文件,复制到extension_dir指定的目录中,编辑php.ini文件,加入如下一行
extension=sqlite.so
重启web服务后即可

2008年10月13日05:43 | 没有评论
分类: 技术备案
标签: , ,

最近要为公司搭建新的开发环境,打算舍弃用了n年的apache,换换口味,装个nginx试试。
在网上找了很多文档,没有一个能让我顺利安装完成的。还是自己来整理整理吧……
1,Install Pcre
来这里获取Pcre的最新版本
ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/
#tar -zxf pcre-7.8.tar.gz
#cd pcre-7.8
#./configure
#make
#make install
2. Install Nginx(http://www.nginx.net/)
#tar -zxf nginx-0.6.32.tar.gz
#cd nginx-0.6.32
#./configure –prefix=/usr/local/nginx-0.6.32
#make
#make install
3. Install PHP with php-fpm (http://www.php.net/)
nginx是通过fastcgi来支持PHP的,使用php-fpm补丁是一个比较方便的管理fastcgi进程的解决方案。
比通过脚本或是lighttpd的spawn模块要简单的多。
下载好PHP后,来这里获取与PHP版本相对应的php-fpm补丁:http://php-fpm.anight.org/
#tar -zxf php-5.2.6.tar.gz
#cd php-5.2.6
#zcat ../php-5.2.6-fpm-0.5.8.diff.gz | patch -p1  #为PHP打补丁
#./configure –prefix=/usr/local/php-5.2.6 –with-sqlite=shared –enable-fastcgi –enable-fpm
#make
#make install
注:PHP的其他模块(如mysql、gd等)请按需自己配置
#cp php.ini-recommended /usr/local/php-5.2.6/lib/php.ini
修改php.ini
cgi.fix_pathinfo=1
4. Configuring
A. 配置nginx,在/usr/local/nginx-0.6.32/conf目录下新建名为php_fcgi.conf的文件,内容如下:
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
修改nginx.conf文件,在需要支持PHP的虚拟主机配置中,加入如下一行:
include php_fcgi.conf;
B. 配置php-fpm模块,编辑/usr/local/php-5.2.6/etc/php-fpm.conf文件
找到“Unix user of processes”和“Unix group of processes”两段,将前面注释去掉,并将值改为与nginx配置相同的用户和组。如下:
Unix user of processes
<value [...]

2008年9月19日15:15 | 5 条评论
分类: 技术备案

刚刚在cnBeta看了个新闻“基于红旗Linux的藏文操作系统通过信产部验收”,文中说的“此项目是国内第一个实现全藏文化的Linux操作系统,填补了国内空白”,看到这句话,真是想吐。更可笑的,这个东西居然还“顺利通过信息产业部组织的项目验收”。
做过程序的人都应该清楚,给一个操作系统增加一个语言外壳相对于做一个完整的操作系统,简直就是如同认识26个英文字母跟讲一口流利的英文之间的差别。从来也没听说过微软为了推出某个语言版本的windows操作系统,去联合某国公司、某国科学院软件研究所、某大学,并为此立项攻关,到最后还能落个填补某国科技空白的名头。
向来对红旗这个公司以及背后的中科院计算机所没什么好感。记得99年红旗刚出第一个版本的linux时,我是怀着相当激动的心情,买来正版光盘(虽然没几个钱,可的确是正版)打算领略一下中国人自己的linux。可就是这个号称自主研发汉化的中文linux发行版,在安装的时候,居然还留有redhat的字样……当时那个汗啊。把人家redhat的东西拿过来,然后把表现层的提示、说明等等改成中文,就成了这个所谓的“自主研发汉化的中文linux”,而且干这点事,都不好好干,还留着人家的信息。还没人家蓝点linxu强呢,起码人家还有个linux下的中文输入法呢。
中国计算机技术发展并不比国外晚几年,为啥跟世界的差距越来越大呢?从操作系统到编程语言,从CPU到显示器,除了使用和组装,计算机领域里面有什么东西的发明是跟中国有哪怕一丁点的关系?人家巴西也是发展中国家吧?没咱中国富吧(猜的)?可人家巴西人发明的lua语言,就能被现在全世界最流行的网游魔兽世界做为嵌入式脚本语言来进行客户端的UI开发和玩家的再开发。还有更甚者,就连倭人都开发出了一种叫Ruby的语言,而且目前甚是流行。可回过头来看咱中国人,花大价钱整了一套人家外国公司玩剩下的CPU技术,还能组织一帮号称专家学者的东西研究个1年半载。
也可能是俺上学少见识浅,实在是搞不懂中科院的那帮所谓的科学家、研究员都在研究些啥高深的东西。在这么个一片和谐的社会氛围中,俺就不去遐想那些每年按亿计算的研发经费的趋向了。其实看看“红旗”现在还能够有精力去研究“藏文linux”,也能猜个八九不离十。有13亿人口的中国,到现在就没有一个能拿图灵奖。唯一一个拿过图灵奖的华人还是个生中国长在台湾学在美国的老头。当然台湾人也是中国人,就算你丫在美国把国籍换了,那也是中国人,就因为你丫拿了图灵奖了,跟杨振宁李政道他们一个操性。
哎,时间不早了,就扯到这吧,再往下扯,就不知道会扯出什么蛋了。在这段举国和谐的时刻,蛋扯乱了可不是什么好事。

2007年9月12日01:47 | 2 条评论
分类: 七零八碎
标签: , ,