Linux

在Linux-x86_64环境下编译php5

最近准备新配置一个带php的web,系统是centos4.5,x86-64的,不同于普通的php编译,需要额外加一些参数配置来执行64位的执行库,如果按照默认编译行,就会出错。

php5的configure
LDFLAGS="-L/usr/lib64 -L/lib64" ./configure --prefix=/usr/local/allblue/apps/php.5.2.5 --with-config-file-path=/usr/local/allblue/ap
ps/php.5.2 --with-libdir=lib64 --with-openssl=/usr --with-mysql=/usr --with-mysqli --with-pdo-mysql=/usr --with-zlib=/usr --with-ttf
=/usr --with-freetype-dir=/usr --disable-rpath --disable-ipv6 --enable-static --enable-roxen-zts --enable-track-vars --enable-force-
cgi-redirect --with-gettext --enable-magic-quotes --enable-fastcgi --with-gd --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib-di
r=/usr --enable-gd-native-ttf --with-xmlrpc --enable-zend-multibyte --enable-mbstring --enable-discard-path
Parsed in 0.009 seconds

修复当前文件修改时间

> make: *** Warning: Clock skew detected. Your build may be incomplete.
find . -exec touch {} ;

使用Fail2ban保护Linux系统 <2>

  安装完毕的Fail2ban的配置文件在/etc/fail2ban下,0.8版本有两个配置文件fail2ban.conf和jail.conf两个,前者里面是一些fail2ban本身的参数设置,后者是具体保护服务的配置。

默认fail2ban.conf里面就三个参数,而且都有注释。

mllm © 2004-2008, allblue
#默认日志的级别
loglevel = 3
#日志的目的
logtarget = /var/log/fail2ban.log
#socket的位置
socket = /tmp/fail2ban.sock
Parsed in 0 seconds

jail.conf配置里是fail2ban所保护的具体服务的配置,这里以SSH来讲。

使用Fail2ban保护Linux系统 <1>

  最近一直在找一个合适的sshd保护软件,因为总是有很多hacker在试服务器的口令,即使我已经关闭了口令验证,不胜其烦。网上有很多类似的软件。我本来想用sshguard的,但是新版本还在测试中,旧版本根本就和ipv6不兼容,抓不到尝试。后来又找了几个,DenyHost也是个比较成熟的软件,不过它是利用tcpd的机理,而我想找一个用iptables的,最后发现了Fail2ban。虽然Fail2ban没有本地代码的速度优势,它也是个脚本集,用python语言,不过它的屏蔽机理即可以用系统自带的防火墙,如Linux的iptables或FreeBSD的ipfw,又可以换用tcpd,此外还可以扩展到其它网络服务。0.8代码树采用客户机/服务器的模型编写,在服务运行的时候,可以用客户端直接修改核心参数。

修正syslog-ng.2.x默认配置文件

  做完syslog-ng for rhel的rpm,并安装起来,准备替换系统的默认syslog,发现随安装包自带的配置文件竟然有错...,找了些资料,才发现是2.x和1.6版本的区别。主要是2.x的语法更规范一点,另外还有一处小错误,不知道是不是官方故意的,因为官方有自己的binary提供,不过似乎要付费。

写了个patch

mllm © 2004-2008, allblue
--- syslog-ng.old.conf 2007-05-20 15:43:22.000000000\
 +0800
+++ syslog-ng.conf     2007-05-20 15:44:07.000000000\
 +0800
@@ -14,14 +14,14 @@
 #
 #source s_local {
 #      unix-dgram("/dev/log");
-#      file("/proc/kmsg" log_prefix "kernel:");
+#      file("/proc/kmsg" log_prefix("kernel: "));
 #};
 #
 # Local filters
 #
 #filter f_messages { level(info..emerg); };
 #filter f_secure { facility(authpriv); };
-#filter f_mail { facility(mail); };
+#filter f_maillog { facility(mail); };
 #filter f_cron { facility(cron); };
 #filter f_emerg { level(emerg); };
Parsed in 0.002 seconds

制作syslog-ng的rpm

  虽然网上找得到2.0.3的i386的rpm,不过要装一台x86_64的,决定自己编译一下rpm。

  www.balabit.com上最新的版本是2.0.4,下载回来解开后准备开始重建,发现还需要自家的eventlog库,因为官方的eventlog库似乎没有提供现成的spec或src.rpm,所以就偷懒找了别人的,在www.silfreed.net上有现成的src.rpm。后来编译时发现还需要libnet库,所幸centos的extras仓库里已有这个库,只要用yum安装就好了。列一下安装步骤,另外需要改动一下原包里的spec,否则会编译失败。

syslog-ng.spec.bb修改部分
Source: syslog-ng_%{version}.tar.gz
#改为
Source: syslog-ng-%{version}.tar.gz

BuildRequires: bison, flex, gcc-c++, pkgconfig, glib2-devel, libevtlog-devel
#改为
BuildRequires: bison, flex, gcc-c++, pkgconfig, glib2-devel, eventlog-devel
Parsed in 0.004 seconds

安装步骤
#安装libnet
yum install libnet

#移动syslog-ng.spec.bb
mv /tmp/syslog-ng.spec.bb /usr/src/redhat/SPECS

#移动syslog-ng包
mv /tmp/syslog-ng-2.0.4.tar.gz /usr/src/redhat/SOURCES/

#移动eventlog的src.rpm
mv /tmp/eventlog-0.2.5-1.src.rpm /usr/src/redhat/SRPMS

rpmbuild --rebuild --target=x86_64 eventlog-0.2.5-1.src.rpm

cd /usr/src/redhat/RPMS/x86_64
rpm -ivh eventlog-0.2.5-1.x86_64.rpm eventlog-devel-0.2.5-1.x86_64.rpm

cd /usr/src/redhat/SPECS
rpmbuild --target=x86_64 -bb syslog-ng.spec.bb

cd /usr/src/redhat/RPMS/x86_64
rpm -ivh syslog-ng-2.0.4-1.x86_64.rpm
Parsed in 0.008 seconds

OK,syslog-ng最新版已经按照到系统里了。

聚合内容