September 15, 2008
让squid反向解析支持泛域名
在日常的squid反向解析中,大家肯定会碰到泛域名解析的问题
比如用户输入 ×.5ilinux.com x为输入任何字母,都会转到www.5ilinux.com
1.apache的设置
< VirtualHost *80 >
DocumentRoot /www/htdocs/www.5ilinux.com
ServerName www.5ilinux.com
ServerAlias *.5ilinux.com
< /VirtualHost >
最好先重启apache测试一下apche是否已经正常支持泛域名.
2:squid 配置
那就在已有反向解析的情况下增加以下语句
acl myweb dstdomain .5ilinux.com
cache_peer 192.168.100.141 parent 80 0 no-query originserver name=fdwww
cache_peer_access fdwww allow myweb
请注意:
192.168.100.141是真实的后台web服务器
myweb和fdwww可根据自己需求,改成自己方便记忆的名字
由 frank 发表于 12:14 PM
August 7, 2007
postfix FAQ (2)
问题一:
Aug 7 22:26:22 mail postfix/smtpd[16829]: warning: xsasl_cyrus_server_get_mechanism_list: no applicable SASL mechanisms
Aug 7 22:26:22 mail postfix/smtpd[16829]: fatal: no SASL authentication mechanisms
Aug 7 22:26:23 mail postfix/master[16825]: warning: process /usr/libexec/postfix/smtpd pid 16829 exit status 1
Aug 7 22:26:23 mail postfix/master[16825]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
Aug 7 22:28:06 mail postfix/smtpd[16830]: warning: xsasl_cyrus_server_get_mechanism_list: no applicable SASL mechanisms
Aug 7 22:28:06 mail postfix/smtpd[16830]: fatal: no SASL authentication mechanisms
Aug 7 22:28:07 mail postfix/master[16825]: warning: process /usr/libexec/postfix/smtpd pid 16830 exit status 1
解决方法:
# ln -s /usr/local/lib/sasl2 /usr/lib/sasl2
问题二:
Jan 15 20:24:43 localhost postfix/smtpd[3048]: warning: SASL authentication problem: unable to open Berkeley db /etc/sasldb2: No such file or directory
原因:系统已经安装sasl-cyrus 删除掉,然后编译重装
August 2, 2007
mysql,php升级笔记
1:mysql 5.0.45
useradd -M -o -r -d /www/mysql -s /bin/bash -c "MySQL Server" -u 27 mysql
./configure --prefix=/usr/local/mysql5 --sysconfdir=/etc --enable-assembler --with-mysqld-ldflags=-all-static --localstatedir=/www/mysql --with-big-tables --with-low-memory --with-extra-charsets=all --enable-thread-safe-client
make
make install
cp support-files/my-large.cnf /etc/my.cnf (针对512M的,不同的内存有不同的配置文件)
cp support-files/mysql.server /etc/rc.d/init.d/mysqld5
chmod 755 /etc/rc.d/init.d/mysqld
chkconfig --add mysqld
/usr/local/mysql5/bin/mysql_install_db --user=mysql
vi /etc/ld.so.conf
增加
/usr/local/mysql5/lib/mysql/
保存ldconfig
修改 /etc/profile
export PATH=$PATH:/usr/local/mysql5/bin
设置密码
mysqladmin -u root password 'password'
2:iconv
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.11.tar.gz
./configure --prefix=/usr
make
make install
ldconfig
3:gd
wget http://www.libgd.org/releases/gd-2.0.35.tar.gz
./configure
make
make install
4:t1lib
./configure
make without_doc
make install
5:freetds
wget ftp://ftp.ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-stable.tgz
tar zvxf freetds-stable.tgz
cd freetds-0.64
./configure --prefix=/usr/local/freetds --with-tdsver=8.0 --enable-msdblib
make
make install
6:libxm2
wget ftp://xmlsoft.org/libxml2/libxml2-sources-2.6.29.tar.gz
./configure
make
make install
7:php
./configure --prefix=/usr/local/php5 --enable-exif --with-iconv=/usr --with-xml=/usr/local --with-curl=/usr --with-gdbm --with-gettext --enable-track-vars --with-calendar=shared --enable-magic-quotes --enable-trans-sid --enable-wddx --enable-ftp --enable-inline-optimization --with-gd=/usr/local --with-zlib --enable-gd-native-tt --with-t1lib=/usr/local --with-jpeg-dir=/usr --with-zlib-dir=/usr --with-ttf --with-freetype-dir=/usr --with-gd --with-png-dir=/usr --with-jpeg-dir=/usr --with-mysql=/usr/local/mysql5 --enable-force-cgi-redirect --with-apxs2=/usr/local/apache2/bin/apxs --with-mssql=/usr/local/freetds --with-pdo-mysql=/usr/local/mysql5
修改httpd.conf
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
修改默认首页 index.php
cp php.ini-dist /usr/local/php5/lib/php.ini
修改php.ini文件
register_globals = On
July 20, 2007
RHEL 5 安装 序列号
RHEL 5 安装 序列号
Server:
* Red Hat Enterprise Linux (Server including virtualization):
2515dd4e215225dd
+ Red Hat Enterprise Linux Virtualization Platform:
49af89414d147589
Client:
* Red Hat Enterprise Linux Desktop:
660266e267419c67
+ Red Hat Enterprise Linux Desktop + Workstation Option:
da3122afdb7edd23
+ Red Hat Enterprise Linux Desktop + Workstation + DualOS Option
(Virtualization):
7fcc43557e9bbc42
+ Red Hat Enterprise Linux Desktop + DualOS Option (Virtualization):
fed67649ff918c77
测试过,可行!
January 16, 2007
bind9编译笔记
tar zxvf bind-9.3.2-P1.tar.gz
cd bind-9.3.2-P1
./configure --prefix=/usr/local/named --enable-threads --disable-openssl-version-check
或者
./configure --prefix=/usr/local/named --enable-threads --with-openssl=/usr/local/openssl
make
make install
--enable-threads 开启多线程支持
groupadd bind
useradd -g bind -d /usr/local/named -s /sbin/nologin bind
cd /usr/local/named
mkdir etc
sbin/rndc-confgen > etc/rndc.conf
cd etc
tail -10 rndc.conf | head -9 | sed s/#\ //g > named.conf
mkdir /usr/local/named/var
chmod 777 /usr/local/named/var
cd /usr/local/named/var
vi localhost.zone
$TTL 86400
$ORIGIN localhost.
@ 1D IN SOA @ root (
42 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
1D IN NS @
1D IN A 127.0.0.1
建立named.local文件
vi named.local
$TTL 86400
@ IN SOA localhost. root.localhost. (
1997022700 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS localhost.
1 IN PTR localhost.
dig命令直接生成named.root文件
dig > named.root
vi common.zone
内容如下
zone "." IN {
type hint;
file "named.root";
};
zone "localhost" IN {
type master;
file "localhost.zone";
allow-update { none; };
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
allow-update { none; };
};
vi /usr/local/named/etc/named.conf
主要内容如下
options {
directory "/usr/local/named/var";
pid-file "named.pid";
version "I am bind";
listen-on {x.x.x.x;};
};
controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndc-key"; };
};
include "common.zone";
chown -R bind:bind /usr/local/named
启动服务测试一下
/usr/local/named/sbin/named -c /usr/local/named/etc/named.conf -u bind &
查看状态
/usr/local/named/sbin/rndc status
为了方便建立启动脚本:
vi /etc/rc.d/init.d/named
#!/bin/bash
# named a network name service.
# chkconfig: 545 35 75
# description: a name server
if [ `id -u` -ne 0 ]
then
echo "ERROR:For bind to port 53,must run as root."
exit 1
fi
case "$1" in
start)
if [ -x /usr/local/named/sbin/named ]; then
/usr/local/named/sbin/named -c /usr/local/named/etc/named.conf -u bind && echo . && echo 'BIND9 server started'
fi
;;
stop)
kill `cat /usr/local/named/var/named.pid` && echo . && echo 'BIND9 server stopped'
;;
restart)
echo .
echo "Restart BIND9 server"
$0 stop
sleep 10
$0 start
;;
reload)
/usr/local/named/sbin/rndc reload
;;
status)
/usr/local/named/sbin/rndc status
;;
*)
echo "$0 start | stop | restart |reload |status"
;;
esac
chmod 755 /etc/rc.d/init.d/named
***********************************************************************
***********************************************************************
加入log配置
mkdir /usr/local/named/log
vi /usr/local/named/var/log.conf
logging {
channel warning
{ file "/usr/local/named/log/dns_warnings" versions 3 size 100m;
severity warning;
print-category yes;
print-severity yes;
print-time yes;
};
channel general_dns
{ file "/usr/local/named/log/dns_logs" versions 3 size 100m;
severity info;
print-category yes;
print-severity yes;
print-time yes;
};
category default { warning; };
category queries { general_dns; };
};
chown -R bind:bind /usr/local/named
说明:
1:print-time是设定在日志中是否需要写入时间,print-severity是设定在日志中是否需要写入消息级别,print-category是设定在日志中是否需要写入日志类别。
2:severity是指定记录消息的级别。在bind中主要有以下几个级别(按照严重性递减的顺序):
critical
error
warning
notice
info
debug [ level ]
dynamic
定义了某个级别后,系统会记录包括该级别以及比该级别更严重的级别的所有消息。比如定义级别为error,则会记录critical和error两个级别的信息。一般情况下,我们记录到info级别就可以了。
然后在/usr/local/named/etc/named.conf 加入下列语句
include "log.conf";
/usr/local/named/sbin/rndc reconfig
默认是不启用日志的,你可以通过
/usr/local/named/sbin/rndc status
看到:
query logging is OFF
所以我们用以下命令启用log日志
/usr/local/named/sbin/rndc querylog
由 frank 发表于 10:45 PM | 回复 (0) | 引用
December 27, 2006
bind9的部分FAQ
log日志报如下错误:
27-Dec-2006 23:02:57.118 general: error: dns_master_load: localhost.zone:2: unexpected end of line
27-Dec-2006 23:02:57.118 general: error: dns_master_load: localhost.zone:1: unexpected end of input
27-Dec-2006 23:02:57.118 general: error: zone localhost/IN: loading master file localhost.zone: unexpected end of input
解决办法:
localhost.zone配置文件里TTL前加上$
process `named' is using obsolete setsockopt SO_BSDCOMPAT
今天安装bind 9.3.3,成功安装后,message报如下错误
process `named' is using obsolete setsockopt SO_BSDCOMPAT
解决办法:
将Bind得tar包解压后,在其/lib/isc/unix/socket.c里面找到需要修改的代码:
首先找到这个 (在1297行附近):
#if defined(USE_CMSG) || defined(SO_BSDCOMPAT)
int on = 1;
改成:
#if defined(USE_CMSG)
int on = 1;
************************************************************
#ifdef SO_BSDCOMPAT
if (setsockopt(sock->fd, SOL_SOCKET, SO_BSDCOMPAT,
(void *)&on, sizeof on) < 0) {
isc__strerror(errno, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
"setsockopt(%d, SO_BSDCOMPAT) %s: %s",
sock->fd,
isc_msgcat_get(isc_msgcat, ISC_MSGSET_GENERAL,
ISC_MSG_FAILED, "failed"),
strbuf);
/* Press on... /*
}
#endif
August 14, 2006
OpenVPN 2.0 HOWTO-安装篇(翻译)
原文:http://openvpn.net/howto.html
Installing OpenVPN
翻译水平有限,不当之处,请指出
OpenVPN can be downloaded here.For security, it's a good idea to check the file release signature after downloading.
The OpenVPN executable should be installed on both server and client machines, since the single executable provides both client and server functions.
Linux Notes (using RPM package)
If you are using a Linux distribution which supports RPM packages (SuSE, Fedora, Redhat, etc.), it's best to install using this mechanism. The easiest method is to find an existing binary RPM file for your distribution. You can also build your own binary RPM file:
rpmbuild -tb openvpn-[version].tar.gzOnce you have the .rpm file, you can install it with the usual
rpm -ivh openvpn-[details].rpm
or upgrade an existing installation with
rpm -Uvh openvpn-[details].rpm
Installing OpenVPN from a binary RPM package has these dependencies:
openssl
lzo
pam
Furthermore, if you are building your own binary RPM package, there are several additional dependencies:
openssl-devel
lzo-devel
pam-devel
See the openvpn.spec file for additional notes on building an RPM package for Red Hat Linux 9 or building with reduced dependencies.
Linux Notes (without RPM)
If you are using Debian, Gentoo, or a non-RPM-based Linux distribution, use your distro-specific packaging mechanism such as apt-get on Debian or emerge on Gentoo.
It is also possible to install OpenVPN on Linux using the universal ./configure method. First expand the .tar.gz file:
tar xfz openvpn-[version].tar.gzThen cd to the top-level directory and type:
./configure
make
make install
Windows Notes
OpenVPN for Windows can be installed from the self-installing exe file on the OpenVPN download page. Remember that OpenVPN will only run on Windows 2000 or later. Also note that OpenVPN must be installed and run by a user who has administrative privileges (this restriction is imposed by Windows, not OpenVPN). The restriction can be sidestepped by running OpenVPN in the background as a service, in which case even non-admin users will be able to access the VPN, once it is installed. More discussion on OpenVPN + Windows privilege issues.
OpenVPN can also be installed as a GUI on Windows, using Mathias Sundman's installation package, which will install both OpenVPN and the Windows GUI.
After you run the Windows installer, OpenVPN is ready to use and will associate itself with files having the .ovpn extension. To run OpenVPN, you can:
Right click on an OpenVPN configuration file (.ovpn) and select Start OpenVPN on this configuration file. Once running, you can use the F4 key to exit.
Run OpenVPN from a command prompt Window with a command such as:
openvpn myconfig.ovpnOnce running in a command prompt window, OpenVPN can be stopped by the F4 key.
Run OpenVPN as a service by putting one or more .ovpn configuration files in \Program Files\OpenVPN\config and starting the OpenVPN Service, which can be controlled from Start Menu -> Control Panel -> Administrative Tools -> Services.
A GUI is also available for the Windows version of OpenVPN.
Additional Windows install notes.
Mac OS X Notes
Angelo Laub and Dirk Theisen have developed an OpenVPN GUI for OS X.
See also OpenVPN Client and Mac OS X 10.3.
Other OSes
Some notes are available in the INSTALL file for specific OSes. In general, the
./configure
make
make install
method can be used, or you can search for an OpenVPN port or package which is specific to your OS/distribution.
安装OpenVPN
OpenVPN 可以从这里下载.
出于安全的考虑,强烈建议你下载后检查一下文件的数字签名 .
OpenVPN程序可以被安装在服务器端和客户端,本身这个程序是既提供服务器工程也提供客户端功能.
Linux 安装注意事项 (用RPM包)
如果你使用的是下列linux操作系统的RPM包管理方式 (SuSE, Fedora, Redhat, etc.), 最好安装使用这种包管理方式. 最方便的方法是找到他的二进制RPM包,你可以通过tar包自己编译适合自己机器的RPM包:
rpmbuild -tb openvpn-[version].tar.gz
只要你编译好RPM包,那就可以进行安装了
rpm -ivh openvpn-[details].rpm
或者升级已经安装的程序
rpm -Uvh openvpn-[details].rpm
用RPM包安装OpenVPN,会有以下的RPM包依赖关系:
• openssl
• lzo
• pam
此外,如果你自己编译适合自己的RPM包,你必须要事先安装好下列的依赖关系RPM包:
• openssl-devel
• lzo-devel
• pam-devel
查看openvpn.spec文件,看一下关于在Red Hat Linux 9系统上编译RPM包需要额外注意的包依赖关系.
Linux 安装注意事项 (不用RPM包)
如果你使用Debian,Gentoo这些非RPM包管理方式的linux发行系统,你可以使用他们自身的包管理方式,比如Debian用apt-get,Gentoo用emerge.
当然也可以采用普通的./configure方式编译安装OpenVPN,编译之前先解压缩.tar.gz文件:
tar xfz openvpn-[version].tar.gz
进入解压缩后的根目录
./configure
make
make install
Windows 安装注意事项
Winodow版的OpenVPN安装程序可以到 OpenVPN下载页面去下载.注意这个版本的OpenVPN只能在Windows2000或者更高的版本上才能安装. 另外要注意的是必须要拥有管理员权限的用户才能去安装OpenVPN,(这是Windows系统出于安全的限制).在这个限制下,OpenVPN可以运行在系统后台进行服务,即使当软件装完,非管理员用户想访问VPN. 更多关于 OpenVPN + Windows 权限的讨论.
OpenVPN在Windows下可以被装成图形界面,可以使用Mathias Sundman的安装包, 将同时装上OpenVPN和图形界面.
装完OpenVPN后,系统会使用已经关联的.ovpn后缀的文件. 为了运行OpenVPN,你可以:
• 右键单击OpenVPN的配置文件,即.ovpn后缀的文件,然后选择Start OpenVPN on this configuration file.程序就可以运行, 你可以用 F4快捷键退出.
• 在DOS窗口,你也可以用以下命令运行OpenVPN:
openvpn myconfig.ovpn
同样,用DOS命令启动的OpenVPN,也可以通过按 F4键退出.
• 我们可以通过开始 -> 控制面板 -> 管理工具 -> 服务 来启动OpenVPN服务,一个或更多的OpenVPN的配置文件放在\Program Files\OpenVPN\config下.
一个针对Windows的图形界面的OpenVPN.
更多windows安装程序注意事项.
Mac OS X 安装注意事项
Angelo Laub和Dirk Theisen 已经开发出OpenVPN GUI for OS X.
更多信息可查看 OpenVPN Client and Mac OS X 10.3.
其它操作系统
可以看INSTALL 文件关于其他系统的安装说明,一般情况下都是
./configure
make
make install
你可以针对你的系统和软件包管理方式寻找相应的OpenVPN包,并用合适的方法安装.
由 frank 发表于 12:11 PM | 回复 (0) | 引用
August 9, 2006
FMS2(Flash Media Server )服务器的设置-日志篇
FMS2(Flash Media Server )服务器的设置-日志篇
最近配置fms2,闲来顺便翻译了一下配置文件,翻译不好,就当参考吧:)
August 7, 2006
Red5 简单安装指南howto
Red5是个开源的flash服务器,相对fms 4500$的一个lic的价格,能省好多钱哦,今天就测试安装一下Red5
1.配置java环境
去sun网站下载最新的jdk1.5.0_07,怎么安装不说了,直接解压安装到/usr/java/jdk1.5.0_07目录
然后在/etc/profile添加以下几句信息
export PATH=$PATH:/usr/java/jdk1.5.0_07/bin:/usr/java/jdk1.5.0_07/jre/bin
export JAVA_HOME=/usr/java/jdk1.5.0_07
export CLASSPATH="./:/usr/java/jdk1.5.0_07/lib:/usr/java/jdk1.5.0_07/jre/lib"
export LD_LIBRARY_PATH=/usr/java/jdk1.5.0_07/jre/lib/i386:/usr/java/jdk1.5.0_07/jre/lib/i386/server
注意,默认的as4可能自带java,把自带的先删除了!!
2.安装apche-ant
去apache网站下载最近的版本,安装方法跟jdk差不多,也是解压到/usr/local/ant目录
然后在/etc/profile添加以下几句信息
export ANT_HOME=/usr/local/ant
export PATH=$PATH:/usr/local/ant/bin
source /etc/profile 让配置生效
3.安装Red5
可以用svn下载最新的版本
svn co http://svn1.cvsdude.com/osflash/red5/java/server/tags/0_5/ red5
cd red5
编译:输入ant命令,自动编译
运行
./red5.sh &
4.简单的配置,使用demo
配置端口:conf/red5.properties 修改此文件就行
访问http://ip:5080
可以运行自带的demo,记住如果你配了ip,自带的demo里的地址localhost都要换成你的真实地址
在线录制的例子:
http://www.acmewebworks.com/red5/videos/SimpleStreamRecording.html
在线播放的例子:
http://www.acmewebworks.com/red5/videos/SimpleLiveBroadcast.html
分享例子,类似远程演示:
http://www.acmewebworks.com/OSProjects/mtasc/videos/BallControl.html
由 frank 发表于 4:47 PM | 回复 (0) | 引用
August 5, 2006
ffmpeg使用语法[转贴]
Ffmpeg使用语法
ffmpeg [[options][`-i' input_file]]... {[options] output_file}...
如果没有输入文件,那么视音频捕捉就会起作用。
作为通用的规则,选项一般用于下一个特定的文件。如果你给 –b 64选项,改选会设置下一个视频速率。对于原始输入文件,格式选项可能是需要的。
缺省情况下,ffmpeg试图尽可能的无损转换,采用与输入同样的音频视频参数来输出。
3.选项
a) 通用选项
-L license
-h 帮助
-fromats 显示可用的格式,编解码的,协议的。。。
-f fmt 强迫采用格式fmt
-I filename 输入文件
-y 覆盖输出文件
-t duration 设置纪录时间 hh:mm:ss[.xxx]格式的记录时间也支持
-ss position 搜索到指定的时间 [-]hh:mm:ss[.xxx]的格式也支持
-title string 设置标题
-author string 设置作者
-copyright string 设置版权
-comment string 设置评论
-target type 设置目标文件类型(vcd,svcd,dvd) 所有的格式选项(比特率,编解码以及缓冲区大小)自动设置 ,只需要输入如下的就可以了:
ffmpeg -i myfile.avi -target vcd /tmp/vcd.mpg
-hq 激活高质量设置
-itsoffset offset 设置以秒为基准的时间偏移,该选项影响所有后面的输入文件。该偏移被加到输入文件的时戳,定义一个正偏移意味着相应的流被延迟了 offset秒。 [-]hh:mm:ss[.xxx]的格式也支持
b) 视频选项
-b bitrate 设置比特率,缺省200kb/s
-r fps 设置帧频 缺省25
-s size 设置帧大小 格式为WXH 缺省160X128.下面的简写也可以直接使用:
Sqcif 128X96 qcif 176X144 cif 252X288 4cif 704X576
-aspect aspect 设置横纵比 4:3 16:9 或 1.3333 1.7777
-croptop size 设置顶部切除带大小 像素单位
-cropbottom size –cropleft size –cropright size
-padtop size 设置顶部补齐的大小 像素单位
-padbottom size –padleft size –padright size –padcolor color 设置补齐条颜色(hex,6个16进制的数,红:绿:兰排列,比如 000000代表黑色)
-vn 不做视频记录
-bt tolerance 设置视频码率容忍度kbit/s
-maxrate bitrate设置最大视频码率容忍度
-minrate bitreate 设置最小视频码率容忍度
-bufsize size 设置码率控制缓冲区大小
-vcodec codec 强制使用codec编解码方式。 如果用copy表示原始编解码数据必须被拷贝。
-sameq 使用同样视频质量作为源(VBR)
-pass n 选择处理遍数(1或者2)。两遍编码非常有用。第一遍生成统计信息,第二遍生成精确的请求的码率
-passlogfile file 选择两遍的纪录文件名为file
c)高级视频选项
-g gop_size 设置图像组大小
-intra 仅适用帧内编码
-qscale q 使用固定的视频量化标度(VBR)
-qmin q 最小视频量化标度(VBR)
-qmax q 最大视频量化标度(VBR)
-qdiff q 量化标度间最大偏差 (VBR)
-qblur blur 视频量化标度柔化(VBR)
-qcomp compression 视频量化标度压缩(VBR)
-rc_init_cplx complexity 一遍编码的初始复杂度
-b_qfactor factor 在p和b帧间的qp因子
-i_qfactor factor 在p和i帧间的qp因子
-b_qoffset offset 在p和b帧间的qp偏差
-i_qoffset offset 在p和i帧间的qp偏差
-rc_eq equation 设置码率控制方程 默认tex^qComp
-rc_override override 特定间隔下的速率控制重载
-me method 设置运动估计的方法 可用方法有 zero phods log x1 epzs(缺省) full
-dct_algo algo 设置dct的算法 可用的有 0 FF_DCT_AUTO 缺省的DCT 1 FF_DCT_FASTINT 2 FF_DCT_INT 3 FF_DCT_MMX 4 FF_DCT_MLIB 5 FF_DCT_ALTIVEC
-idct_algo algo 设置idct算法。可用的有 0 FF_IDCT_AUTO 缺省的IDCT 1 FF_IDCT_INT 2 FF_IDCT_SIMPLE 3 FF_IDCT_SIMPLEMMX 4 FF_IDCT_LIBMPEG2MMX 5 FF_IDCT_PS2 6 FF_IDCT_MLIB 7 FF_IDCT_ARM 8 FF_IDCT_ALTIVEC 9 FF_IDCT_SH4 10 FF_IDCT_SIMPLEARM
-er n 设置错误残留为n 1 FF_ER_CAREFULL 缺省 2 FF_ER_COMPLIANT 3 FF_ER_AGGRESSIVE 4 FF_ER_VERY_AGGRESSIVE
-ec bit_mask 设置错误掩蔽为bit_mask,该值为如下值的位掩码 1 FF_EC_GUESS_MVS (default=enabled) 2 FF_EC_DEBLOCK (default=enabled)
-bf frames 使用frames B 帧,支持mpeg1,mpeg2,mpeg4
-mbd mode 宏块决策 0 FF_MB_DECISION_SIMPLE 使用mb_cmp 1 FF_MB_DECISION_BITS 2 FF_MB_DECISION_RD
-4mv 使用4个运动矢量 仅用于mpeg4
-part 使用数据划分 仅用于mpeg4
-bug param 绕过没有被自动监测到编码器的问题
-strict strictness 跟标准的严格性
-aic 使能高级帧内编码 h263+
-umv 使能无限运动矢量 h263+
-deinterlace 不采用交织方法
-interlace 强迫交织法编码 仅对mpeg2和mpeg4有效。当你的输入是交织的并且你想要保持交织以最小图像损失的时候采用该选项。可选的方法是不交织,但是损失更大
-psnr 计算压缩帧的psnr
-vstats 输出视频编码统计到vstats_hhmmss.log
-vhook module 插入视频处理模块 module 包括了模块名和参数,用空格分开
D)音频选项
-ab bitrate 设置音频码率
-ar freq 设置音频采样率
-ac channels 设置通道 缺省为1
-an 不使能音频纪录
-acodec codec 使用codec编解码
E)音频/视频捕获选项
-vd device 设置视频捕获设备。比如/dev/video0
-vc channel 设置视频捕获通道 DV1394专用
-tvstd standard 设置电视标准 NTSC PAL(SECAM)
-dv1394 设置DV1394捕获
-av device 设置音频设备 比如/dev/dsp
F)高级选项
-map file:stream 设置输入流映射
-debug 打印特定调试信息
-benchmark 为基准测试加入时间
-hex 倾倒每一个输入包
-bitexact 仅使用位精确算法 用于编解码测试
-ps size 设置包大小,以bits为单位
-re 以本地帧频读数据,主要用于模拟捕获设备
-loop 循环输入流。只工作于图像流,用于ffserver测试
由 frank 发表于 10:28 AM
ffmpeg的编译大全
ffmpeg的编译大全
最近互联网视频共享的网站很火,公司也想搞类似的网站,初步是用fms+ffmpeg形式
fms负责在线录制,播放,ffmpeg则在后台处理上传的资源转换成一定的格式。
为了让ffmpeg支持的格式尽量多,所以特把我的编译笔记分享一下
环境:redhat as4
1。首先获取ffmpeg
很多人找不到怎么下载,其实之前ffmpeg可以通过cvs下载,不过最近他已经换成了更加强大的svn
如何使用SVN我这里不再介绍,网上还有大量的安装和使用的文章可以借鉴,这里简单罗列几个SVN辅助的软件:
SubVersion,从 http://subversion.tigris.org/ 下载,支持linux,我们这里就装这个
TortoiseSVN,从 http://tortoisesvn.tigris.org/ 下载,是很不错的SVN客户端程序,为windows外壳程序集成到windows资源管理器和文件管理系统的Subversion客户端,用起来很方便,commit动作变得就像Winrar右键压缩一样方便。
ok,那我们先装subversion,记住最好之前装过apr和apr-util,在apache.org网站能下到
wget http://subversion.tigris.org/downloads/subversion-1.3.2.tar.gz
tar zvxf subversion-1.3.2.tar.gz
cd subversion-1.3.2
./configure --with-apr=/usr/local/apr-httpd --with-apr-util=/usr/local/apr-util-httpd/
make
make install
到此,我们就可以通过svn命令获取最新的ffmpeg了
svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg
你会发现在你所在的目录,自动出现一个ffmpeg的目录,就是你下载的源代码。
我们还不能这么快编译ffmpeg,应该如果要让ffmpeg支持更多格式的转换,还需做一些前期工作
2.支持mp3,linux当然是lame,下载解压
cd lame-3.96.1
./configure --enable-shared --prefix=/usr
这里推荐尽量装在/usr下,默认是装在/usr/local下。这样ffmpeg编译都能顺利的找到库文件
3.支持Ogg Vorbis:
as4自带相应的rpm包,你可以安装一下如下rpm包
libvorbis, libvorbis-devel,libogg, libogg-devel
4.支持xvid x264,现在最流行的两种高质量的压缩格式
xvid的编译安装
wget http://downloads.xvid.org/downloads/xvidcore-1.1.0.tar.gz
tar zvxf xvidcore-1.1.0.tar.gz
./configure --prefix=/usr
make
make install
x264的获取同样是采用svn方式,看来svn取代cvs不远了
svn co svn://svn.videolan.org/x264/trunk x264
cd x264
./configure --prefix=/usr --enable-shared
make
make install
5.AC3和dts编码的支持
as4系统似乎已经支持ac3编码,编译的时候只要加--enable-a52 --enable-gpl参数就行
libdts编译参数
./configure --prefix=/usr
make
make install
6.mpg4 aac格式支持,由于服务器还针对手机用户服务,所以,类似aac,mpg4铃声格式的支持,我们也得做。这里我们安装faad2和faac就行
下载请到http://www.audiocoding.com/modules/mydownloads/
FAAD2的编译
cd faad2
autoreconf -vif
./configure --prefix=/usr --with-mp4v2 --enable-shared
make
make install
faac的编译
cd faac
chmod +x bootstrap
./bootstrap
./configure --prefix=/usr --with-mp4v2 --enable-shared
make
make install
7.支持3gp格式,这也是现在好多手机支持的格式,因为手机用户是我们的主要用户,所以也得支持编译
编译的时候加上--enable-amr_nb --enable-amr_wb参数就行,根据编译系统的提示,所以我们得下载一
些编译3gp所需得文件。
wget http://www.3gpp.org/ftp/Specs/archive/26_series/26.204/26204-510.zip
解压以后把里面的文件都拷贝到libavcodec/amrwb_float
wget http://www.3gpp.org/ftp/Specs/archive/26_series/26.104/26104-510.zip
解压以后把里面的文件都拷贝到libavcodec/amr_float
好了,基本ffmpeg支持的格式,我们基本都做好前期准备了,下面是ffmpeg的编译
./configure --prefix=/usr --enable-gpl --enable-shared --enable-mp3lame --enable-amr_nb --enable-amr_wb --enable-amr_if2 --enable-libogg --enable-vorbis --enable-xvid --enable-a52 --enable-a52bin --enable-faadbin --enable-dts --enable-pp --enable-faad --enable-faac --enable-x264 --enable-pthreads --disable-ffserver --disable-ffplay
make
make install
补充1:
关于3gp的编译,如果大家要编译--enable-amr_nb-fixed,那就不能跟--enable-amr_nb同时编译,我不大清楚这两者到底有什么区别,似乎fixed是修正版,管他呢,编译的方法:
wget http://www.3gpp.org/ftp/Specs/archive/26_series/26.073/26073-510.zip
解压以后把里面的文件都拷贝到libavcodec/amr目录下
修改libavcodec/amr/makefile 找到CFLAGS = -Wall -pedantic-errors -I. $(CFLAGS_$(MODE)) -D$(VAD) 换成CFLAGS = -Wall -I. $(CFLAGS_$(MODE)) -D$(VAD) -DMMS_IO
整体编译参数就是
./configure --prefix=/usr --enable-gpl --enable-shared --enable-mp3lame --enable-amr_nb-fixed --enable-amr_wb --enable-amr_if2 --enable-libogg --enable-vorbis --enable-xvid --enable-a52 --enable-a52bin --enable-dts --enable-pp --enable-faad --enable-faadbin --enable-faac --enable-x264 --enable-pthreads --disable-ffserver --disable-ffplay
make
make install
补充2:
有朋友说在当在cpu是x86的情况下,不能编译过去,我这里没发生过这情况,如果你真编译不过去,可以试着加上cpu=cpu
ok,一个强大的ffmpeg编译好了,不过目前管方的ffmpeg还不支持wma9和rmvb,不过网上有很多解决方法,大家去自己找找。
由 frank 发表于 10:15 AM | 回复 (0) | 引用
July 26, 2006
关于suexec的FAQ
apache编译支持suexec功能
./configure --enable-suexec --with-suexec-logfile=/www/logs/suexec.log --with-suexec-uidmin=500 --with-suexec-gidmin=100 --with-suexec-caller=daemon --with-suexec-docroot=/www
关于suexec的FAQ
1.出现以下错误 command not in docroot
编译的时候加入--with-suexec-docroot 以后虚拟主机运行suexec的目录必须包含指定的目录里,通过suexec -V 可以察看docroot目录是哪儿
2.出现以下错误 user mismatch (daemon instead of www)
编译的时候加入--with-suexec-caller=daemon 默认是www,但一般apache的运行用户是nobody或者daemon,这里我们是httpd2.2.2,用户是daemon,所以指定这个参数,否则suexec不能被运行。
3.出现以下错误 cannot run as forbidden uid (1001/index.cgi)
在虚拟主机配置SuexecUserGroup时,指定的用户和组,必须高于--with-suexec-uidmin --with-suexec-gidmin 指定的用户uid和gid,否则被限制使用。
由 frank 发表于 12:29 PM
July 24, 2006
postfix FAQ
今天把postfix升级到2.3.0 之前2.2.10一直使用很好,当然还是按以前的编译方式,但却发现smtp不正常,察看log显示以下错误
Jul 24 14:58:46 wap postfix/smtpd[15000]: warning: unsupported SASL server implementation: cyrus
Jul 24 14:58:46 wap postfix/smtpd[15000]: fatal: SASL per-process initialization failed
Jul 24 14:58:47 wap postfix/master[14946]: warning: process /usr/libexec/postfix/smtpd pid 15000 exit status 1
Jul 24 14:58:47 wap postfix/master[14946]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
好生觉得奇怪,察看2.3.0的Change log ,找到原因,原来编译的时候必须加一个参数,英文是这么写的
[Incompat 20051220] The Postfix-with-Cyrus-SASL build procedure has
changed. You now need to specify -DUSE_CYRUS_SASL in addition to
-DUSE_SASL_AUTH or else you end up without any Cyrus SASL support.
The error messages are:
unsupported SASL server implementation: cyrus
unsupported SASL client implementation: cyrus
增加-DUSE_CYRUS_SASL 这个编译参数后,重新编译,测试通过
由 frank 发表于 5:30 PM
July 16, 2006
使用IPMI远程控制管理DELL2850服务器
Dell™ PowerEdge™ 2850 系统底板管理控制器 (BMC) 通过与主机板上的不同传感器通信来监视系统是否有严重事件,并在某些参数超出其预置阈值时发出警报和日志事件。 BMC 支持工业标准的 Intelligent Platform Management Interface (IPMI) 规范,可以实现远程配置、监测和恢复系统。 BMC 提供以下功能:
通过系统的串行端口和集成 NIC 进行访问
故障日志记录和 SNMP 警报发送
访问系统事件日志 (SEL) 和传感器状况
控制包括开机和关机在内的系统功能
独立于系统电源或工作状态的支持
用于系统设置、基于文本公用程序和操作系统控制台的文本控制台重定向
使用 LAN 上串行 (SOL) 访问 Red Hat® Enterprise Linux 串行控制台界面
看到了吧,以上是DELL官方对IPMI功能的描述,这些功能非常强大哦,据我所知,现在一般大厂的服务器都支持ipmi功能,比如DELL,HP,IBM。今天我们以DELL的2850为例,给大家简单介绍一下IPMI的基本使用。
1.配置系统启用IPMI,启动服务器,在启动过程中,看提示,按Ctrl+E 进入IPMI管理界面
2.设置IPMI Over LAN为On,默认为Off,意思为启用通过LAN方式的IPMI。

3.设置IPMI的地址,这里的地址可以跟你服务器的ip地址一样,不会有冲突,放心设置,MAC地址不用设置。VLAN不用设置。

4.这里是设置访问的用户名和密码,远程访问IPMI是需要验证的。

好了设置完毕,重启机器,基本上现在服务器就已经能通过远程访问ipmi了。
我们先在另外一台机器装上ipmiltool,一个管理IPMI的开源工具,可以在任何机器安装,安装的机器本身主板可以没有IPMI。
装完以后,我们试验一下能不能访问,运行以下命令
ipmitool –I lan –H host -U user -a channel info
host:填写你的服务器的IP地址
user:填写你之前设置的用户名,我们这里是root
正常的话,会提示你输入密码,就是图3我们设置的密码。
以下是显示的信息:
说明远程服务器,我们刚才设置的服务器已经启用IPMI。
那怎么在本地访问IPMI呢,如果你直接用ipmitool访问是访问不了的,会提示以下错误:
Error: Unable to establish LAN session
Unable to Get Channel Info
这里我们得安装OpenIPMI,装完这个,系统就能认出IPMI,这样我们才能通过ipmitool访问,当然前提是你的内核编译支持IPMI了。
装完OpenIPMI后,启用IPMI服务 /etc/rc.d/init.d/ipmi start 一般如果内核支持的话,能正常启动,用lsmod看看加载的模块
这时我们可以本地访问IPMI,还是刚才那个命令,参看channel信息,不过本地访问命令有所不同,改为
下面我们介绍一些远程控制IPMI的用法
获取远程服务器的电源状态
Ipmitool -I lan –H host –U root –a chassis power status
远程软关机,相当于按下reset,这个在服务器死机的时候用到
Ipmitool -vI lan –H host –U root –a chassis power soft
类似的命令我们也可以用来远程开机,获取服务器运行的信息等。
参考文档:
使用ipmitool 实现Linux 系统下对服务器的ipmi 管理
IPMI HOWTO for Debian GNU/Linux on the Intel SR2300
著作信息:张微波 2006.7.16 北京
由 frank 发表于 6:49 AM | 回复 (0) | 引用
July 10, 2006
编译内核的一个FAQ
最近玩AS4U3,由于没有redhat的帐号,所以只能手工编译src,但在rpmbuild的时候,出现以下错误:
rpmbuild --rebuild kernel-2.6.spec
error: Architecture is not included:i386
以前似乎从来没见过这个错误,呵呵,看了以下帮助,解决,原来还得加以下参数
rpmbuild --rebuild --target=i686 kernel-2.6.spec
咳,都是新机器闹的,嘿嘿
由 frank 发表于 10:07 AM
June 26, 2006
加速yum的下载
两个途径可以加速yum的速度,大家可根据情况自己组合使用。
1.使用http-proxy , 设置方法不说了,就是修改/etc/yum.conf,或者直接在/etc/profile添加以下语句
http_proxy="http://user:password@server ip:3128"
export http_proxy
记得保存后 source该配置文件,使配置生效。
2。使用yum的扩展插件yum-fastestmirror,个人认为这个插件非常有效,速度真的是明显提高,安装只要
yum -y install yum-fastestmirror 就行。
希望通过以上方法,能解除yum的漫长等待过程。
June 25, 2006
gftp远程目录乱码问题解决
默认安装的fc5,用gftp,发现有些远程站点的中文出现乱码,本身软件菜单没有字体的修改地方,多次尝试后,发现有个有效的解决办法。
编辑/usr/bin/gftp文件。
在#!/bin/sh之后加上
export LANG=zh_CN
硬盘安装fc5
安装环境:ibm240 笔记本,由于没有光驱,没办法,只能用硬盘。
1.分个fat32区,大概5G吧,够放下iso文件就行,当然这个分区我预先做了个dos6.22系统,嘿嘿,从redhat9.0的光盘里拷贝出 dosutils这个目录放在分区根目录,其实只需要 dosutils目录里的loadlin.exe,autoboot.bat和 autoboot空目录就行。
2.从fc5的第一张光盘里isolinux目录拷贝initrd.img,vmlinuz至你的autoboot空目录里。
3.把5张fc的iso镜像文件放在根目录下fc5下。
ok,启动电脑,进入dos系统,在dosutils目录里,运行autoboot.bat就行。
由 frank 发表于 9:44 PM
June 16, 2006
vi的使用之汇总
功能最强在的编辑器——vi
vi是所有UNIX系统都会提供的屏幕编辑器,它提供了一个视窗设备,通过它可以编辑文件。当然,对UNIX系统略有所知的人,或多或少都觉得vi超级难用,但vi是最基本的编辑器,所以希望读者能好好把它学起来,以后在UNIX世界里必将畅行无阻、游刃有余,因为其他几种文本处理器并非UNIX标准配备。说不定别人的Linux机器没安装joe或pico,如果您不会vi,那您可能就没辄了。
vi的基本概念
基本上vi可分为三种操作状态,分别是命令模式(Command mode)、插入模式(Insert mode)和底线命令模式(Last line mode),各模式的功能区分如下:
1. Comand mode:控制屏幕光标的移动,字符或光标的删除,移动复制某区段及进入Insert mode下,或者到Last line mode。
2. Insert mode:唯有在Insert mode下,才可做文字数据输入,按Esc等可回到Comand mode。
3. Last line mode:将储存文件或离开编辑器,也可设置编辑环境,如寻找字符串、列出行号等。
不过可以把vi简化成两个模式,即是将Last line mode也算入Command mode,把vi分成Command 和Insert mode。
vi的基本操作
•进入vi
在系统提示符号输入vi及文件名称后,即可进入vi全屏幕编辑画面:
$ vi testfile
有一点要特别注意,就是您进入vi之后是处于“Command mode”下,您要切换到Insert mode才能输入文字。初次用vi的用户都会想先用上下左右键移动光标,结果电脑一直叫,把自己气个半死,所以进入vi后,先不要乱动,转换入Insert后再说。
•切换至Insert mode编辑文件
在Command mode下按‘i’、‘a’或‘o’三键就可进入Insert mode。这时候您就可以开始输入文字了。
i: 插入,从目前光标所在之处插入所输入的文字。
a: 增加,目前光标所在的下一个字开始输入文字。
o: 插入新的一行,从行首开始输入文字。
•Insert的切换→Command mode,按Esc键
您目前处于Insert mode,您就只能一直打字。假如您发现打错字了,想用光标键往回移动,将该字删除,就要按ESC键转换回Command mode,再删除文字。
•离开vi及存文件
在Command mode下,可按冒号“:”键入入Last line mode,例如:
:w filename (输入“w filename”,将文章存入指定的文件名filename)
:wq (输入“wq”,因为进入之时已经指定文件名testfile,所以会写入testfile并离开vi)
:q! (输入“q!”,强制离开并放弃编辑的文件)
Command mode功能键列表
在介绍command mode指令的时后,指令后面加上“常用”字眼的功能键,表示比较常用的vi指令,请读者您一定要学会、记住。
(1)I、a、o切换进入Insert mode。[超级常用]
(2)移动光标
vi可以直接用键盘上的光标键来上下左右移动,但正规的vi是用小写英文字母
h、j、k、l,分别控制光标左、下、上、右移一格。
按Ctrl+B:屏幕往后移动一页。[常用]
按Ctrl+F:屏幕往前移动一页。[常用]
按Ctrl+U:屏幕往后移动半页。
按Ctrl+D:屏幕往前移动半页。
按 0 (数字零):移动文章的开头。[常用]
按 G:移动到文章的最后。[常用]
按 w:光标跳到下个word的开头。[常用]
按 e:光标跳到下个word的字尾。
按 b:光标回到上个word的开头。
按 $:移到光标所在行的行尾。[常用]
按 ^:移到该行第一个非空白的字符。
按 0:移到该行的开头位置。[常用]
按 #:移到该行的第#个位置,例:51、121。[常用]
(3)删除文字
x:每按一次删除光标所在位置的后面一个字符。[超常用]
#x:例如,6x 表删除光标所在位置的后面6个字符。[常用]
X:大字的X,每按一次删除光标所在位置的前面一个字符。
#X:例如,20X 表删除光标所在位置的前面20个字符。
dd:删除光标所在行。[超常用]
#dd:例如,6dd表删除从光标所在的该行往下数6行之文字。[常用]
(4)复制
yw:将光标所在处到字尾的字符复制到缓冲区中。
(想在和#x、#X的功能相反)
p:将缓冲区内的字符粘贴到光标所在位置(指令‘yw’与‘p必须搭配使用)。
yy:复制光标所在行。[超常用]
p:复制单行到您想粘贴之处。(指令‘yy’与‘p’必须搭配使用)
#yy:如:6yy表示拷贝从光标所在的该行往下数6行之文字。[常用]
p:复制多行到您想粘贴之处。(指令‘#yy’与‘p’必须搭配使用)
“ayy:将复制行放入buffer a, vi提供buffer功能,可将常用的数据存在buffer
“ap:将放在buffer a的数据粘贴。
“b3yy:将三行数据存入buffer b。
“b3p:将存在buffer b的资料粘贴
(5)取代
r: 取代光标所在处的字符:[常用]
R:取代字符直到按Esc为止。
(6)复原(undo)上一个指令
u:假如您误操作一个指令,可以马上按u,回复到上一个操作。[超常用]
.: .可以重复执行上一次的指令。
(7)更改
cw:更改光标所在处的字到字尾$处。
c#w:例如,c3w代表更改3个字。
(8)跳至指定行
Ctrl+G:列出光标所在行的行号。
#G:例如,15G,表示移动光标至文章的第15行行首。[常用]
Last line mode下指令简介
读者您要使用Last line mode之前,请记得先按Esc键确定您已经处于Command mode下后,再按冒号“:”或“/”或“?”三键的其中一键进入Last line mode。
1.列出行号
set nu: 输入“set nu”后,会在文章的每一行前面列出行号。
2.跳到文章的某一行
#:井号代表一个数字,在Last line mode提示符号“:”前输入数字,再按Enter就会跳到该行了,如:15[Enter]就会跳到文章的第15行。[常用]
3.寻找字符串
/关键字:先按/,再输入您想寻找的字,如果第一次找的关键字不是您相尽可能的,可以一直按n会往下寻找到您要的关键字为止。
?关键字:先按?,再输入您想寻找的字,如果第一次找的关键字不是您想要的,可以按n会往前寻找到您要的关键字为止。
4.取代字符串
1,$s/string/replae/g:在last line mode输入“1,$s/string/replace/g”会将全文的string字符串取代为replace字符串,其中1,$s就是指搜寻区间为文章从头至尾的意思,g则是表示全部取代不必确认。
%s/string/replace/c:同样会将全文的string字符串取代为replace字符串,和上面指令不同的地方是,%s和1,$s是相同的功能,c则是表示要替代之前必须再次确认是否取代。
1,20s/string/replace/g:将1至20行间的string替代为relpace字符串。
5.存文件
w:在last line mode提示符号“:”前按w即可将文件存起来。[超常用]
#,# w filename:如果您想摘取文章的某一段,存成另一个文件,可用这个指令#代表行号,例如30,50 w nice,将您正在编辑文章的第30~50行存成nice这个文件。
6.离开
q:按q就离开,有时如果无法离开vi,可搭配“!:强置离开vi,如“q!”
qw:一般建议离开时,搭配w一起使用,如此离开时还可存文件。[常用]
由 frank 发表于 6:02 AM
May 19, 2006
openssh快速编译安装howto
我想当一个称职的linux管理员,openssh的升级一定很重要,毕竟现在telnet早就因为安全的问题被淘汰了,但现在系统自带的openssh有些版本也非常老,不少都有非常严重的漏洞,所以有必要告诉大家怎么在原有系统的基础上升级openssh
首先系统自带的openssh
rpm -qa |grep openssh
查到后,毫不犹豫的删除,一般都版本太老,有不少漏洞
然后到www.openssh.com下载最新的openssh,这次我编译的最新版本是OpenSSH_4.3p2.
下载解压后,用以下参数编译
./configure \
--bindir=/usr/bin \
--sbindir=/usr/sbin \
--sysconfdir=/etc/ssh \
--libexecdir=/usr/libexec/openssh \
--with-tcp-wrappers \
--with-rsh=/usr/bin/rsh \
--with-privsep-path=/var/empty/sshd \
--disable-strip \
--with-superuser-path=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
make
make install
拷贝服务脚本
cp contrib/redhat/sshd.init /etc/rc.d/init.d/sshd
ok.安装很简单吧
然后编辑
vi /etc/ssh/sshd_config
PermitRootLogin no 限制root用户登陆
PasswordAuthentication no 因为我是用密匙登陆,所以这里取消用简单的密码登陆,大家可参考
linux下SSH配合SecureCRT的密匙完美使用方法
关于SecureCrt使用ssh2的补充
May 12, 2006
在postfix下编译安装amavisd-new+clamav+SpamAssassin
前几天给大家介绍了postfix + cyrus-sasl2 + courier-authlib + Courier-IMAP + postfixadmin和maidrop的安装,基本邮件系统已经可以使用,今天继续给大家讲怎么给postfix邮件系统加上防病毒和防垃圾邮件系统
1.安装clamav
wget http://keihanna.dl.sourceforge.net/sourceforge/clamav/clamav-0.88.tar.gz
groupadd clamav
useradd -g clamav -s/bin/false -d/dev/null clamav
./configure --prefix=/usr/local/clamav --with-dbdir=/usr/local/share/clamav
make
make check
make install
vi /usr/local/clamav/etc/clamd.conf
LogSyslog
LogVerbose
LogFacility LOG_MAIL
LogFile /var/log/clamav/clamd.log
PidFile /var/run/clamav/clamd.pid
DatabaseDirectory /usr/local/share/clamav
LocalSocket /var/run/clamav/clamd
StreamMaxLength 10M
User amavis
ScanMail
ScanArchive
ScanRAR
vi /usr/local/clamav/etc/freshclam.conf
DatabaseDirectory /usr/local/share/clamav
UpdateLogFile /var/log/clamav/freshclam.log
LogSyslog
LogVerbose
DatabaseOwner amavis
Checks 12
DatabaseMirror db.CN.clamav.net
DatabaseMirror database.clamav.net
NotifyClamd
注意:注释掉两个文件中Example那行
添加amavis用户和组,配合amavisd使用
groupadd amavis
useradd -g amavis -s /bin/false -c "Amavis User" -d /dev/null amavis
创建日志文件夹并设置权限
mkdir /var/log/clamav
chmod -R 744 /var/log/clamav
chown -R amavis:amavis /var/log/clamav
chown -R amavis.amavis /usr/local/share/clamav
mkdir /var/run/clamav
chmod 700 /var/run/clamav
chown amavis.amavis /var/run/clamav
手动更新病毒库
/usr/local/clamav/bin/freshclam
设置自动更新病毒库
crontab -e
0 4 * * * root /usr/local/clamav/bin/freshclam --quiet -l /var/log/clamd.log
启动
# /usr/local/clamav/sbin/clamd
2.安装amavisd
wget http://www.ijs.si/software/amavisd/amavisd-new-2.4.1.tar.gz
升级file,可以通过file -v看一下版本,要求4.06版本以上
wget ftp://ftp.astron.com/pub/file/file-4.17.tar.gz
安装以下文件,这些都是安装amavisd需要的
perl -MCPAN -e shell
cpan>install Archive::Tar
cpan>install Archive::Zip
cpan>install Compress::Zlib
cpan>install Convert::UUlib
cpan>install MIME::Base64
cpan>install Mail::Internet
cpan>install Net::Server
cpan>install Net::SMTP
cpan>install Digest::MD5
cpan>install IO::Stringy
cpan>install Time::HiRes
cpan>install Unix::Syslog
cpan>install BerkeleyDB
cpan>install Convert::TNEF
cpan>install MIME::Parser
cpan>install MIME::Tools
升级perl到最新版本,至少5.8.2以上版本
wget http://www.perl.com/CPAN/src/stable.tar.gz
tar zvxf stable.tar.gz
cd perl-5.8.8
./configure.gnu --prefix=/usr -Dpager="/bin/less -isR"
make
make test 测试一下,没问题后再install
make install
注意升级perl的话,可能会造成系统的其他perl应用不正常,请慎重升级,一般redhat9.0默认的5.8.0应该也没问题
mkdir -p /var/amavis /var/amavis/tmp /var/amavis/var /var/amavis/db /var/amavis/home
chown -R amavis:amavis /var/amavis
chmod -R 750 /var/amavis
cp amavisd /usr/local/sbin/
chown root /usr/local/sbin/amavisd
chmod 755 /usr/local/sbin/amavisd
cp amavisd.conf /etc/
chown root /etc/amavisd.conf
chmod 644 /etc/amavisd.conf
mkdir /var/virusmails
chown amavis:amavis /var/virusmails
chmod 750 /var/virusmails
#=====================================
修改 /etc/amavisd.conf
$mydomain = 'example.com';
$virus_admin = "postmaster\@$mydomain"; # notifications recip.
$mailfrom_notify_admin = "postmaster\@$mydomain"; # notifications sender
$mailfrom_notify_recip = "postmaster\@$mydomain"; # notifications sender
$mailfrom_notify_spamadmin = "postmaster\@$mydomain"; # notifications sender
$mailfrom_to_quarantine = ''; # null return path; uses original sender if undef
加入对Clamav 的支持
# ### http://www.clamav.net/
['ClamAV-clamd',
\&ask_daemon, ["CONTSCAN {}\n", "/var/run/clamav/clamd"],
qr/\bOK$/, qr/\bFOUND$/,
qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ],
3.安装SpamAssassin
perl -MCPAN -e shell
cpan>install Digest::SHA1
cpan>install HTML::Parser
cpan>install Net::DNS
cpan>install Mail::SPF::Query
cpan>install IP::Country
cpan>install Net::Ident
cpan>install IO::Socket::INET6
cpan>install IO::Socket::SSL
cpan>install DBI
cpan>install LWP::UserAgent
cpan>install Mail::SpamAssassin
SA的配置我这里不讲了,如果你想了解一点,也可参考我在这里的blog笔记
测试amavis
# /usr/local/sbin/amavisd debug
启动停止服务
# /usr/local/sbin/amavisd start|stop
4.让postfix使用amavisd
在/usr/local/etc/postfix/main.cf 加入
content_filter = smtp-amavis:[127.0.0.1]:10024
在/usr/local/etc/postfix/master.cf 加入
smtp-amavis unix - - n - 2 smtp
-o smtp_data_done_timeout=1200
-o disable_dns_lookups=yes
127.0.0.1:10025 inet n - n - - smtpd
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_client_restrictions=
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks=127.0.0.0/8
#============================================
参考文档
http://www.xjtusky.com/article.asp?id=109
http://genco.gen.tc/postfix_virtual.php#amavisdclamav
http://www.toping.net/bbs/htm_data/10/0602/1042.html
http://www.freespamfilter.org/FC4.html
May 10, 2006
Maildrop安装调试笔记
groupadd vmail -g 1001
useradd vmail -u 1001 -g 1001
wget http://internap.dl.sourceforge.net/sourceforge/courier/maildrop-2.0.2.tar.bz2
tar jvxf maildrop-2.0.2.tar.bz2
./configure --enable-sendmail=/usr/sbin/sendmail --enable-trusted-users='root vmail' --enable-syslog=1 --enable-maildirquota --enable-maildrop-uid=1001 --enable-maildrop-uid=1001 --with-trashquota --with-dirsync
make
make install
注意源码安装的,将courierauthconfig 命令链接到/usr/bin里,假设装在:
/usr/local/courier-authlib/bin/courierauthconfig,则:
ln -s /usr/local/courier-authlib/bin/courierauthconfig /usr/bin/courierauthconfig
这样编译出来的maildrop才会ourier Authentication Library extension enabled.
maildrop -v
maildrop 2.0.2 Copyright 1998-2005 Double Precision, Inc.
GDBM extensions enabled.
Courier Authentication Library extension enabled.
Maildir quota extension enabled.
This program is distributed under the terms of the GNU General Public
License. See COPYING for additional information.
如果没有显示Courier Authentication Library extension enabled.说明你的maidrop还不支持courier auth,请仔细检查,重新编译
maildrop建议不要自定义目录安装,可以减少不必要的麻烦,删除很方便:直接在已经编译的源代码目录 make uninstall 就行
配置main.cf和master.cf使postfix调用maildrop
========================
vi /etc/postfix/main.cf
virtual_transport = maildrop
maildrop_destination_recipient_limit = 1
========================
vi /etc/postfix/master.cf
maildrop unix - n n - - pipe
flags=DRhu user=vmail argv=/usr/local/bin/maildrop -w 90 -d ${user}@${nexthop} ${recipient} ${user} ${extension}${nexthop}
调试maildrop是否正常工作
从其他邮箱发一份邮件到你新建立的email地址,看到类似log记录
May 10 07:21:05 mail postfix/pipe[13994]: 78DCC156AE7: to=<frank@domain.com>, relay=maildrop, delay=0, status=sent
(domain.com)
看到relay=maildrop 并且log没有报错,则说明maildrop已经正常工作
FAQ:
1. 编译安装的时候出现以下报错configure: error: pcre.h not found - install PCRE from www.pcre.org
请安装pcre-devel包
May 7, 2006
笔记postfix + cyrus-sasl2 + courier-authlib + Courier-IMAP + postfixadmin
postfix + cyrus-sasl2 + courier-authlib + Courier-IMAP + postfixadmin
最终修改:2006.5.10
1.安装cyrus-sasl-2.x
删除以前的rpm包以及相关目录
rpm -e --nodeps cyrus-sasl-2.1.10-4 cyrus-sasl-plain-2.1.10-4 cyrus-sasl-md5-2.1.10-4 cyrus-sasl-devel-2.1.10-4
rm -rf /usr/lib/sasl
rm -rf /usr/lib/sasl2
wget ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-sasl-2.1.21.tar.gz
./configure
--enable-plain --enable-cram --enable-digest --enable-login --enable-sql
--disable-anon --disable-ntlm --disable-gssapi --disable-krb4 --disable-otp --disable-srp --disable-srp-setpass
-with-authdaemond=/usr/local/courier-authlib/var/spool/authdaemon/socket
--with-mysql=/usr/local/mysql --with-mysql-includes=/usr/local/mysql/include/mysql --with-mysql-
libs=/usr/local/mysql/lib/mysql
make
make install
ln -s /usr/local/lib/sasl2 /usr/lib/sasl2
增加"/usr/local/lib"到你的"/etc/ld.so.conf",并执行ldconfig命令。
vi /usr/local/lib/sasl2/smtpd.conf
pwcheck_method: authdaemond
log_level: 3
mech_list: PLAIN LOGIN
authdaemond_path:/usr/local/courier-authlib/var/spool/authdaemon/socket
注意,这个文件的编辑不要多写一个空格,否则会出现smtp验证不过的问题
2.编译postfix2.x
wget ftp://postfix.cn99.com/postfix/official/postfix-2.2.10.tar.gz
tar zvxf postfix-2.2.10.tar.gz
下载VDA补丁,使postfix支持磁盘限额
wget http://web.onda.com.br/nadal/postfix/VDA/postfix-2.2.10-vda.patch.gz
gzip -d postfix-2.2.10-vda.patch.gz
chkconfig --level 2345 sendmail off
安装postfix之前添加相关的用户&用户组
groupadd postfix -g 1000
groupadd postdrop
useradd postfix -u 1000 -g postfix -G postdrop
groupadd vmail -g 1001
useradd vmail -u 1001 -g 1001
mkdir /home/mail
chown vmail:vmail /home/mail
chmod -R 771 /home/mail
打补丁
patch -p1 < ../postfix-2.2.10-vda.patch
make tidy
make makefiles 'CCARGS=-DHAS_MYSQL -I/usr/local/mysql/include/mysql -DUSE_SASL_AUTH -I/usr/local/include/sasl' 'AUXLIBS=-
L/usr/local/mysql/lib/mysql -lmysqlclient -lm -lz -L/usr/local/lib -lsasl2'
make
make install
mv /etc/aliases /etc/aliases.old
ln -s /etc/postfix/aliases /etc/aliases
echo 'root: admin@example.com'>>/etc/postfix/aliases
/usr/bin/newaliases
touch /etc/postfix/mysql_virtual_alias_maps.cf
touch /etc/postfix/mysql_virtual_domains_maps.cf
touch /etc/postfix/mysql_virtual_mailbox_maps.cf
touch /etc/postfix/mysql_virtual_limit_maps.cf
vi /etc/postfix/main.cf
myhostname = mail.example.com # mail.example.com是安装Postfix软件的主机名
mydomain = example.com # example.com是安装Postfix软件的主机名中的域名部分
myorigin = $mydomain
mydestination =
alias_maps = hash:/etc/aliases
home_mailbox = Maildir/ # 使用Maildir作为邮件的存储格式
#=====================MySQL=====================
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_mailbox_base = /home/mail
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_limit = 102400000
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_minimum_uid = 1001
virtual_uid_maps = static:1001
virtual_gid_maps = static:1001
virtual_transport = virtual
#"virtual_gid_maps"和"virtual_uid_maps"是postfix用户的gid和uid, "virtual_minimum_uid"应当≤"virtual_uid_maps",
"virtual_mailbox_limit"是每个邮箱的大小。
#=====================Quota=====================
virtual_create_maildirsize = yes
virtual_mailbox_extended = yes
virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = Sorry, the user's maildir has overdrawn his diskspace quota, please try again later.
virtual_overquota_bounce = yes
#virtual_trash_count=yes
#virtual_trash_name=.Trash
#====================SASL======================
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_non_fqdn_hostname,
reject_non_fqdn_sender,
reject_non_fqdn_recipient,
reject_unauth_destination,
reject_unauth_pipelining,
reject_invalid_hostname
#reject_rbl_client opm.blitzed.org,
#reject_rbl_client list.dsbl.org,
#reject_rbl_client bl.spamcop.net,
#reject_rbl_client sbl-xbl.spamhaus.org
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
#=============================================
mail_owner = postfix
mailq_path = /usr/bin/mailq
manpage_directory = /usr/local/man
newaliases_path = /usr/bin/newaliases
queue_directory = /var/spool/postfix
readme_directory = no
sample_directory = /etc/postfix
sendmail_path = /usr/sbin/sendmail
setgid_group = postdrop
unknown_local_recipient_reject_code = 550
编辑cf配置文件
vi /etc/postfix/mysql_virtual_alias_maps.cf
user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = alias
select_field = goto
where_field = address
additional_conditions = AND active = '1'
=================================
vi /etc/postfix/mysql_virtual_domains_maps.cf
user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = domain
select_field = description
where_field = domain
additional_conditions = AND active = '1'
=================================
vi /etc/postfix/mysql_virtual_mailbox_maps.cf
user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = mailbox
select_field = maildir
where_field = username
additional_conditions = AND active = '1'
=================================
vi /etc/postfix/mysql_virtual_limit_maps.cf
user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = mailbox
select_field = quota
where_field = username
additional_conditions = AND active = '1'
启动和挺直postfix服务
/usr/sbin/postfix start
/usr/sbin/postfix stop
3.编译courier-authlib
wget http://kent.dl.sourceforge.net/sourceforge/courier/courier-authlib-0.58.tar.bz2
tar jvxf courier-authlib-0.58.tar.bz2
./configure
--prefix=/usr/local/courier-authlib --without-stdheaderdir
--without-authuserdb --without-authpam --without-authldap --without-authpwd --without-authshadow --without-authvchkpw --without-authpgsql --without-authcustom
--with-authmysql --with-mysql-libs=/usr/local/mysql/lib/mysql --with-mysql-includes=/usr/local/mysql/include/mysql
--with-redhat
一个关键点:
如果courier-authlib安装到非标准位置(例如安装到/usr/local下),一定记得在./configure时增加--without-stdheaderdir,这样以后在编译Courier-IMAP和maildrop的时候,不用特别指定courier-authlib的库文件位置
make
make install
make install-configure
增加"/usr/local/courier-authlib/lib/courier-authlib"到你的"/etc/ld.so.conf",并执行ldconfig命令。
chmod +x /usr/local/courier-authlib/var/spool/authdaemon
vi /usr/local/courier-authlib/etc/authlib/authdaemonrc 可以不修改
authmodulelist="authmysql"
authmodulelistorig="authmysql"
daemons=10
vi /usr/local/courier-authlib/etc/authlib/authmysqlrc
MYSQL_SERVER localhost
MYSQL_USERNAME postfix
MYSQL_PASSWORD yourpassword
MYSQL_SOCKET /tmp/mysql.sock
MYSQL_DATABASE postfix
MYSQL_USER_TABLE mailbox
MYSQL_CRYPT_PWFIELD password
MYSQL_UID_FIELD 1001
MYSQL_GID_FIELD 1001
MYSQL_LOGIN_FIELD username
MYSQL_HOME_FIELD '/home/mail/' #设置postfix存储邮件的目录
MYSQL_NAME_FIELD name
MYSQL_MAILDIR_FIELD maildir
MYSQL_QUOTA_FIELD quota
MYSQL_WHERE_CLAUSE active='1'
启动courier-authlib
/usr/local/courier-authlib/sbin/authdaemond start
4.编译安装安装Courier-IMAP
wget http://surfnet.dl.sourceforge.net/sourceforge/courier/courier-imap-4.1.0.tar.bz2
tar jvxf courier-imap-4.1.0.tar.bz2
./configure --prefix=/usr/local/courier-imap --with-redhat --enable-unicode --disable-root-check --with-trashquota --without
-ipv6 CPPFLAGS='-I/usr/local/courier-authlib/include' COURIERAUTHCONFIG='/usr/local/courier-authlib/bin/courierauthconfig'
CPPFLAGS='-I/usr/local/courier-authlib/include' 如果编译courier-authlib没有安装在默认路径,必须指定这个,如果之前编译courier-authlib加了--without-stdheaderdir,就不需要指定了
make
make install
cp /usr/local/courier-imap/etc/imapd.dist /usr/local/courier-imap/etc/imapd
cp /usr/local/courier-imap/etc/imapd-ssl.dist /usr/local/courier-imap/etc/imapd-ssl
cp /usr/local/courier-imap/etc/pop3d.dist /usr/local/courier-imap/etc/pop3d
cp /usr/local/courier-imap/etc/pop3d-ssl.dist /usr/local/courier-imap/etc/pop3d-ssl
配置Courier-IMAP,为用户提供pop3服务:
vi /usr/local/courier-imap/etc/pop3d
POP3DSTART=yes
注:如果你想为用户提供IMAP服务,可以在"/usr/local/courier-imap/etc/imapd"文件中设置"IMAPDSTART=yes"。
cp courier-imap.sysvinit /etc/rc.d/init.d/imapd
chmod 755 /etc/rc.d/init.d/imapd
chkconfig --add imapd
5.编译安装postfixadmin
wget http://high5.net/postfixadmin/download.php?file=postfixadmin-2.1.0.tgz
tar -zxvf postfixadmin-2.1.0.tgz
把解压的目录改名拷贝到默认的web目录下,比如 /var/www
cd /var/www/postfixadmin
$ chmod 640 *.php *.css
$ cd /var/www/postfixadmin/admin
$ chmod 640 *.php .ht*
$ cd /var/www/postfixadmin/images/
$ chmod 640 *.gif *.png
$ cd /var/www/postfixadmin/languages/
$ chmod 640 *.lang
$ cd /var/www/postfixadmin/templates/
$ chmod 640 *.tpl
$ cd /var/www/postfixadmin/users/
$ chmod 640 *.php
导入数据库
mysql -uroot -p < DATABASE_MYSQL.TXT
访问:
http://域名/postfixadmin/
6.FAQ:
1.出现authentication error: Input/output error错误的时候
估计是查询mysql时,authdaemond出错了。具体要打开authdaemonrc里的:
DEBUG_LOGIN=2 原来默认是0
然后看看/var/log/message或/var/log/maillog 在认证失败时有什么提示。根据提示去检查问题到底出在哪儿
2.warning: SASL authentication failure: cannot connect to Courier authdaemond: Permission denied
检查 authdaemond的socket所在目录及其父目录的属性是否对smtpd可读。如果不可读则出现这个问题(permission的问题)。
3.warning: SASL authentication failure: cannot connect to Courier authdaemond: No such file or directory
检查/usr/local/lib/sasl2/smtpd.conf,看看是否有多写一个空格,一般空格很难直观的发现
April 30, 2006
《Postfix权威指南》
oreilly_postfix_the_definitive_guide
作者: Kyle D. Dent 著 O'Reilly Taiwan公司 编译
章节目录
序
前言
第一章 简介
Postfix的起源与设计理念
E-mail与Internet
Postfix的角色
Postfix的安全性
如何取得Postfix
第二章 基本概念
Unix的概念
E-mail的概念
第三章 Postfix的结构
Postfix的组件
邮件如何进入Postfix系统
Postfix的队列管理器
投递操作
实际追踪Postfix的邮件处理流程
第四章 基本的配置与管理
第一次启动Postfix
配置文件
重要的考虑事项
管理
master.cf
收信限制
改写地址格式
改变根目录(chroot)
在线说明书
第五章 队列管理
qmgr的运行原理
队列管理工具
第六章 E-mail与DNS
DNS概论
决定邮件路由
Postfix与DNS
常见问题
第七章 本地投递与 POP/IMAP
Postfix的投递代理程序
邮箱格式
本地邮件的投递操作
POP与IMAP
本地邮件传输协议(LMTP)
第八章 虚拟网域
共享网域搭配系统账户
独立网域搭配系统账户
独立网域搭配虚拟账户
虚拟网域搭配特殊格式的邮箱
投递到外部程序
第九章 邮件转发
备用交换器
传输表
入站邮件网关
出站邮件网关
UUCP、传真以及其他投递机制
第十章 邮件列表
简易的邮件列表
邮件列表管理系统
第十一章 反垃圾邮件
垃圾邮件的本质
垃圾邮件的问题
开放转发(Open Relay)
辨别垃圾邮件
反垃圾邮件的措施
Postfix的挡信机制
客户端判别规则
SMTP语法规范参数
内容检查
自定义过滤条件组合
反垃圾邮件实例
第十二章 SASL身份验证
SASL概论
Postfix与SASL
Postfix的SASL配置
测试SASL验证配置
SMTP客户端验证
第十三章 传输层安全协议(TLS)
Postfix与TLS
TLS证书
第十四章 内容过滤
基于命令的过滤
基于守护进程的过滤
其他考虑事项
第十五章 外部数据库
MySQL
LDAP
附录一 配置参数
附录二 Postfix支持工具
附录三 Postfix的编译与安装
附录四 问题集
索引
下载地址 可惜不是中文的,大家先看英文吧,中文书店有买
由 frank 发表于 1:29 PM
April 29, 2006
Courier-IMAP编译出错解决
编译Courier-IMAP的时候,出现以下报错信息:
imaplogin.c:35:32: courierauth.h: 没有那个文件或目录
imaplogin.c:36:37: courierauthdebug.h: 没有那个文件或目录
imaplogin.c:159: warning: `struct authinfo' declared inside parameter list
imaplogin.c:159: warning: its scope is only this definition or declaration, which is probably not what you want
imaplogin.c: In function `login_callback':
imaplogin.c:169: dereferencing pointer to incomplete type
imaplogin.c:170: warning: implicit declaration of function `auth_getoption'
imaplogin.c:170: dereferencing pointer to incomplete type
imaplogin.c:171: warning: assignment makes pointer from integer without a cast
imaplogin.c:175: dereferencing pointer to incomplete type
imaplogin.c:180: dereferencing pointer to incomplete type
imaplogin.c:184: dereferencing pointer to incomplete type
imaplogin.c:199: dereferencing pointer to incomplete type
imaplogin.c:200: dereferencing pointer to incomplete type
imaplogin.c:223: warning: implicit declaration of function `auth_callback_default'
imaplogin.c:227: dereferencing pointer to incomplete type
imaplogin.c:228: dereferencing pointer to incomplete type
imaplogin.c:233: dereferencing pointer to incomplete type
imaplogin.c:233: dereferencing pointer to incomplete type
imaplogin.c:243: dereferencing pointer to incomplete type
imaplogin.c:247: dereferencing pointer to incomplete type
imaplogin.c:251: dereferencing pointer to incomplete type
imaplogin.c:252: dereferencing pointer to incomplete type
imaplogin.c: In function `do_imap_command':
imaplogin.c:281: warning: implicit declaration of function `courier_authdebug_login'
imaplogin.c:375: warning: implicit declaration of function `auth_login'
imaplogin.c:376: warning: implicit declaration of function `courier_safe_printf'
imaplogin.c: In function `main':
imaplogin.c:454: warning: implicit declaration of function `courier_authdebug_login_init'
imaplogin.c: In function `login_imap':
imaplogin.c:599: warning: implicit declaration of function `DPRINTF'
make[3]: *** [imaplogin.o] Error 1
make[3]: Leaving directory `/root/soft/postfix/courier-imap-4.1.0/imap'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/root/soft/postfix/courier-imap-4.1.0/imap'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/root/soft/postfix/courier-imap-4.1.0'
make: *** [all] Error 2
google寻找了一圈,没有实质性的答案,不过仔细看了编译出错的,很快就找到解决办法,就是在预编译的时候加 CPPFLAGS='-I/usr/local/courier-authlib/include'
那完整的编译参数是
./configure --prefix=/usr/local/courier-imap --with-redhat --enable-unicode --disable-root-check --with-trashquota --without-ipv6 \
CPPFLAGS='-I/usr/local/courier-authlib/include' \
COURIERAUTHCONFIG='/usr/local/courier-authlib/bin/courierauthconfig'
April 24, 2006
squid快速编译安装
去http://www.squid-cache.org/下载最新的tar包
编译:
./configure
--exec_prefix=/usr/local/squid
--bindir=/usr/sbin
--libexecdir=/usr/lib/squid
--sysconfdir=/etc/squid
--enable-poll
--enable-snmp
--enable-removal-policies="heap,lru"
--enable-storeio="aufs,coss,diskd,null,ufs"
--enable-ssl
--with-openssl=/usr/kerberos
--enable-delay-pools
--enable-linux-netfilter
--with-pthreads --enable-auth="basic"
--with-winbind-auth-challenge
--enable-useragent-log
--enable-referer-log
--disable-dependency-tracking
--enable-cachemgr-hostname=localhost
--disable-ident-lookups
--enable-truncate
--enable-underscores
--datadir=/usr/share/squid
--enable-basic-auth-helpers="NCSA"
--enable-err-language="Simplify_Chinese"
--enable-default-err-language="Simplify_Chinese"
make
make install
安装完毕后,修改目录权限,默认是以"nobody"用户运行squid.所以我们要为/usr/local/squid/var 设置相应的权限,否则会报以下错误
FATAL: Failed to make swap directory /usr/local/squid/var/cache: (13) Permission denied
Squid Cache (Version 2.5.STABLE13): Terminated abnormally.
CPU Usage: 0.000 seconds = 0.000 user + 0.000 sys
Maximum Resident Size: 0 KB
Page faults with physical i/o: 4
或者以下错误
FATAL: Cannot open '/usr/local/squid/var/logs/access.log' for writing.
The parent directory must be writeable by the
user 'nobody', which is the cache_effective_user
set in squid.conf.
最简单的处理办法就是
chown -R nobody:nobody /usr/local/squid/var
ok,生成缓存目录
/usr/local/squid/sbin/squid -z
然后启动squid,测试一下是否成功
/usr/local/squid/sbin/squid -NCd1
默认端口是3128,用ie测试一下,如果能看到中文的拒绝访问错误提示,就说明安装正确,并且已经使用.
以后就可以直接/usr/local/squid/sbin/squid & 后台运行即可,当然怎么配置,我这里不讲了
April 12, 2006
qmail中的几个error的产生的原因和解决方法
qmail中的几个error的产生的原因和解决方法
1 deferral: Unable_to_chdir_to_maildir._(#4.2.1)
这个是qmail找不到用户的收信目录所致。如果你是用vpopmail的虚拟域名来管理的,那看看你的control/locals文件,里面不能有虚拟域名,只能有实际域名(这个实际域名的意思应该是使用系统用户作为用户的域,而不是使用vpopmail的虚拟用户的域)。因此呢,如果不是用vpopmail,那么可能是系统用户的目录权限设置不正确。
如果发生这个错误,首先保证你没有对user/assign做过手动修改,添加域名都是使用vpopmail的vadddomin命令来添加的,没有修改过~vopmail/domins目录以及其下面目录的权限和属主,然后修改了locals文件之后重启应该就没有问题了。
2 deferral: Uh-oh:_.qmail_has_prog_delivery_but_has_x_bit_set._(#4.7.0)
这个是因为你的.qmail文件设置了x属性,把.qmail文件的x去掉就ok了。这个.qmail文件就在你的domins/xxx.com下面,包括比如.qmail-default之类的文件,修改一下权限,去掉x就ok了。
3 454 oops, unable to write pipe and I can't auth (#4.3.0)
这个错误是在你打了smtp auth的补丁之后,却发现不能正常auth,输入了正确的用户名密码还是提示不正确。可以通过下面的命令来测试。
[root@caph qmail-smtpd]# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 xxx.com ESMTP
ehlo
250-xxx.com
250-PIPELINING
250-8BITMIME
250-SIZE 104857600
250 AUTH LOGIN PLAIN CRAM-MD5 //显示这个通常表示你已经打好了补丁,不过这个是可以通过修改qmail-smtp.c文件来定制的。
auth login
334 VXNlcm5hbWU6
awefaq23rasdf
334 UGFzc3dvcmQ6
awefwaef
454 oops, unable to write pipe and I can't auth (#4.3.0)
quit
221 xxx.com
Connection closed by foreign host.
出现了这种问题是因为smtp运行脚本没有设置正确的用户所致。将你的smtp的tcpserver命令的运行用户和组指定一下。
QMAILDUID=`id -u vpopmail`
QMAILDGID=`id -g vpopmail`
/usr/local/bin/tcpserver -v -H -R -l "$LOCAL" -x /etc/tcp.smtp.cdb -c "$MAXSMTPD"
-u "$QMAILDUID" -g "$QMAILDGID" 0 smtp /usr/local/bin/rblsmtpd -r relays.ordb.org
/var/qmail/bin/qmail-smtpd
/home/vpopmail/bin/vchkpw /bin/true /bin/cmd5checkpw /bin/true 2>&1
不需要修改~vpopmail/bin/vchkpw的属性。
4 451 qq write error or disk full (#4.3.0)
通常产生这个可能有2个原因:(1)你的qmail queue所在的磁盘空间不足。(2)qmail-queue的权限设置不正确或者文件有问题。
错误信息:the smtp server reply:qq crashed (#5.1.1)
修改stmp启动脚本,改大smtp的softlimit
Sorry. Although I'm listed as a best-preference MX or A for that host,it isn't in my control/locals file, so I don't treat it as local. (#5.4.6)
修改源码:ipme.c
ip_scan("0.0.0.0",&ix.ip);--92行左右加进
if (!ipalloc_append(&ipme,&ix)) { close(moreipme_fd); return 0; }
在邮件队列中快速删除从一个地方发过来但又不存在的邮件?
A:
设bad.jite.com是这个域。可以键入以下命令
echo # > ~alias/.qmail-baddomain-default
echo bad.jite.com:alias-baddomain>> /var/qmail/control/virtualdomains
echo bad.jite.com:127.0.0.1 >> /var/qmail/control/smtproutes
然后运行/var/qmail/bin/qmail-tcpok,给qmail-send 一个HUP信号
解决qmail经常收到来至<#@[]>这样的邮件!
首先说明一下<>和<#@[]>都是系统bouce信件信封(envelope)上的寄信人地址
这两种信都是系统产生的,区别在于<>往往是系统single bouce的地址,而<#@[]>则是系统double bounces或者triple bouces的地址
系统用这两种地址是为了避免邮件回路(mail loops)
来自<#@[]>一般都是系统的double bounces
要去掉这些double bounces可以有一种简单的办法
其原理是产生一个nobody的地址,发往这里的信件都会被丢弃,这样double bouces就不会烦你的postmaster了
具体步骤如下:
echo # > /var/qmail/alias/.qmail-nobody
echo nobody > /var/qmail/control/doublebounceto
February 21, 2006
为PHP编译imap函数
编译imap可能区别与其他程序的编译,这里给大家说一下,省得大家走弯路
1.下载imap的客户端库程序
wget ftp://ftp.cac.washington.edu/imap/imap-2004g.tar.Z
2.编译imap
下载的包已经不需要预编译,可以自己编译,但这里我们的编译必须加参数,比如我的系统是redhat,那我们就编译为
make lrh
至于你的系统为其他,加何参数,你可以自己看Makefile,找到你对应系统的参数
3.编译成功后,cd c-client
cp *.h /usr/local/include/
cp c-client.a /usr/local/lib/
4.现在我们可以重新编译php,加上--with-imap参数
February 20, 2006
为php编译mcrypt函数
网站的需要,php需要用到mcrypt函数,初步看了一下php的编译函数,很简单,就是增加--with-mcrypt编译参数就行,但你真的预编译的时候,他就会提示错误configure: error: mcrypt.h not found. Please reinstall libmcrypt,大致意思是你没有编译libmcrypt,我们只好先编译libmcrypt
到这里ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/下载libmcrypt-2.5.7.tar.gz,编译很简单,依旧是configure,make,make check,make install。
装完马上重新去编译php,安装非常顺利。
当然我是走了不少弯路,还以为要装mcrypt这个程序,装这个程序更加麻烦,除了要安装libmcrypt,还要安装mhash,装完这两个,记得修改ld.so.conf,这样mcrypt才能正常安装。由于可能php实际不需要这个,这里就不讲实际问题了,如果大家碰到问题,可来交流。
附:mcrypt-2.6.4的安装
1.先安装libmcrypt,前面已经阐述
2.安装mhash,去http://mhash.sourceforge.net/下载mhash,安装简单,不过我安装最新的0.9.4版本,在make check时候失败,所以我最后安装了个0.9.2版本。
3.安装mcrypt-2.6.4.tar.gz
如果你顺利安装了前2者,你才可以安装mcrypt-2.6.4.tar.gz,但在预编译的时候,你可能会碰到以下错误:configure: error: "You need at least libmhash 0.8.15 to compile this program. http://mhash.sf.net/" 按理你应该是安装了mhash,之所以他提这么的错误,我们可以初步分析为预编译的时候没找到lib文件所在的地址,所以我们可以这么做
cd mcrypt-2.6.4
LD_LIBRARY_PATH=/usr/local/lib ./configure
make
make install
January 5, 2006
apache的rewrite模块实例操作
最近公司做一个网站,需要应用到url重定向到静态页面的技术,以前一直头疼学习rewrite模块的规则配置,看来今天不得不硬着头皮学习了。
我们的目标是把http://www.bulknews.cn/show.php?id=1014700通过rewrite的url重写,使可以直接http://www.bulknews.cn/1014700.html访问
1.首先配置apache的httpd.conf,目的是使.htaccess文件生效
<VirtualHost a.b.c.d>
ServerAdmin a@b.com
DocumentRoot /var/www/bulknews
ServerName www.bulknews.cn
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
ErrorLog "|/usr/local/sbin/cronolog /var/log/www/wapya/www.bulknews.cn_error_log.%Y%m%d"
CustomLog "|/usr/local/sbin/cronolog /var/log/www/wapya/www.bulknews.cn_access_log.%Y%m%d" combined
</VirtualHost>
注意,这里必须是FollowSymLinks,AllowOverride是All,否则rewrite引擎根本不起作用,另外如果你的apache默认根目录是/var/www 的话,在/var/www的配置字段也要设置
Options FollowSymLinks
AllowOverride All
我的就因为这个,只是在虚拟主机设置,导致一直不能实现静态页面的转化。
2.在/var/www/bulknews下设置.htaccess文件
我们这边最简单的配置就是
RewriteEngine on
RewriteBase /
RewriteRule (.+)\.html$ show.php?id=$1 [L]
OK,重启web服务,这时候你就可以正常访问http://www.bulknews.cn/1014700.html
另外rewrite还有很多应用,大家可以多去google找一些资料,功能还是很神奇的。
参考文档:
Search Engine Friendly的URL设计
由 frank 发表于 2:50 PM | 回复 (0) | 引用
December 30, 2005
qmail+vpopmail安装笔记
这次重新安装,参考了Bill's Linux Qmail Toaster的文章,改作者对qmail的应用做了深度的整合,基本上实现了大家普遍关心的Qmail SMTP 发信验证,SSL支持和病毒,垃圾邮件检测的支持。
我今天的笔记不包括垃圾邮件和病毒的检测,大家如果关心的可以去Bill's Linux Qmail Toaster详细看看。
安装qmail邮件服务器之前,当然你得配置好dns了,至于dns得mx怎么配置,不是我们今天要讲的重点。
首先为了安装顺利进行,大家先确认系统是否安装了以下程序,我们用一个简单的命令来查询:
rpm -qa |grep g++ gcc-g++ gdbm gdbm-devel openssl openssl-devel stunnel krb5-devel bzip2 bzip2-devel
如果没有安装的话,可以到系统的安装盘寻找相应的rpm包,我的系统是redhat 9.0。如果你是fedra或者Debian,那你更加方便,只要yum或者apt-get安装缺失的软件包就行。
然后删除系统自带的邮件系统,以免安装受影响
rpm -e --nodeps sendmail postfix
1。下载所需软件包 wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz cd ../ 2。安装软件
mkdir -p /var/src/tar 我们把所有的软件下载到此
cd /var/src/tar
wget http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
wget http://shupp.org/software/netqmail-1.05.tar.gz
wget http://shupp.org/patches/qmail-toaster-0.8.patch.bz2
wget http://shupp.org/software/vpopmail-5.4.10.tar.gz
wget http://shupp.org/software/autorespond-2.0.4.tar.gz
wget http://shupp.org/patches/autorespond-2.0.4-2.0.5.patch
wget http://shupp.org/software/qmailadmin-1.2.9.tar.gz
wget http://shupp.org/software/qmailadmin-help-1.0.8.tar.gz
wget http://cr.yp.to/software/ezmlm-0.53.tar.gz
wget http://shupp.org/software/ezmlm-idx-0.443.tar.gz
wget http://shupp.org/software/courier-imap-4.0.6.tar.bz2
wget http://shupp.org/software/courier-authlib-0.58.tar.bz2
wget http://shupp.org/software/squirrelmail-1.4.5.tar.bz2
wget http://shupp.org/software/quota_usage-1.3-1.2.7.tar.gz
wget http://shupp.org/software/toaster-scripts-0.8.tar.gz
tar -xzf tar/netqmail-1.05.tar.gz
cd netqmail-1.05
./collate.sh
daemontools
mkdir -p /package
chmod 1755 /package
cd /package
tar -xpzf /var/src/tar/daemontools-0.76.tar.gz
cd admin/daemontools-0.76
patch -p1 < /var/src/netqmail-1.05/other-patches/daemontools-0.76.errno.patch
package/install
ucspi-tcp
cd /var/src/
tar -xzf tar/ucspi-tcp-0.88.tar.gz
cd ucspi-tcp-0.88
patch -p1 < /var/src/netqmail-1.05/other-patches/ucspi-tcp-0.88.errno.patch
make
make setup check
qmail
mkdir /var/qmail
groupadd nofiles
useradd -g nofiles -d /var/qmail/alias alias
useradd -g nofiles -d /var/qmail qmaild
useradd -g nofiles -d /var/qmail qmaill
useradd -g nofiles -d /var/qmail qmailp
groupadd qmail
useradd -g qmail -d /var/qmail qmailq
useradd -g qmail -d /var/qmail qmailr
useradd -g qmail -d /var/qmail qmails
cd /var/src
tar -xzf tar/toaster-scripts-0.8.tar.gz
cd netqmail-1.05/netqmail-1.05/
ln -s /usr/kerberos/include/com_err.h /usr/kerberos/include/krb5.h /usr/kerberos/include/profile.h /usr/include/
rm /usr/sbin/sendmail
make
make setup check
注意qmail的补丁将在vpopmail安装以后打
打开SPF checking
echo 3 > /var/qmail/control/spfbehavior
cd ~alias; echo "admin@example.com" > .qmail-postmaster ;\
echo "admin@example.com" > .qmail-mailer-daemon ;\
echo "admin@example.com" > .qmail-root )
chmod 644 ~alias/.qmail*
./config-fast full.hostname 你可以填写你实际邮件服务器的域名
修改qmail的man路径
Edit /etc/man.config
Add "MANPATH /var/qmail/man"
相应脚本
cd /var/src
cp toaster-scripts-0.8/rc /var/qmail/rc
chmod 755 /var/qmail/rc
mkdir /var/log/qmail
echo ./Maildir/ >/var/qmail/control/defaultdelivery
cp toaster-scripts-0.8/qmailctl /var/qmail/bin/
chmod 755 /var/qmail/bin/qmailctl
ln -s /var/qmail/bin/qmailctl /usr/bin
ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
ln -s /var/qmail/bin/sendmail /usr/lib/sendmail
#Now create the supervise directories/scripts for the qmail services:
mkdir -p /var/qmail/supervise/qmail-send/log
mkdir -p /var/qmail/supervise/qmail-smtpd/log
mkdir -p /var/qmail/supervise/qmail-pop3d/log
mkdir -p /var/qmail/supervise/qmail-pop3ds/log
cp /var/src/toaster-scripts-0.8/send.run /var/qmail/supervise/qmail-send/run
cp /var/src/toaster-scripts-0.8/send.log.run /var/qmail/supervise/qmail-send/log/run
cp /var/src/toaster-scripts-0.8/smtpd.run /var/qmail/supervise/qmail-smtpd/run
cp /var/src/toaster-scripts-0.8/smtpd.log.run /var/qmail/supervise/qmail-smtpd/log/run
cp /var/src/toaster-scripts-0.8/pop3d.run /var/qmail/supervise/qmail-pop3d/run
cp /var/src/toaster-scripts-0.8/pop3d.log.run /var/qmail/supervise/qmail-pop3d/log/run
cp /var/src/toaster-scripts-0.8/pop3ds.run /var/qmail/supervise/qmail-pop3ds/run
cp /var/src/toaster-scripts-0.8/pop3ds.log.run /var/qmail/supervise/qmail-pop3ds/log/run
echo 20 > /var/qmail/control/concurrencyincoming
chmod 644 /var/qmail/control/concurrencyincoming
chmod 755 /var/qmail/supervise/qmail-send/run
chmod 755 /var/qmail/supervise/qmail-send/log/run
chmod 755 /var/qmail/supervise/qmail-smtpd/run
chmod 755 /var/qmail/supervise/qmail-smtpd/log/run
chmod 755 /var/qmail/supervise/qmail-pop3d/run
chmod 755 /var/qmail/supervise/qmail-pop3d/log/run
chmod 755 /var/qmail/supervise/qmail-pop3ds/run
chmod 755 /var/qmail/supervise/qmail-pop3ds/log/run
mkdir -p /var/log/qmail/smtpd
mkdir -p /var/log/qmail/pop3d
mkdir -p /var/log/qmail/pop3ds
chown -R qmaill /var/log/qmail
允许daemontools来启动qmail
ln -s /var/qmail/supervise/qmail-send /var/qmail/supervise/qmail-smtpd /service
检测qmail是否安装成功
sleep 5
qmailctl stat
Vpopmail
groupadd -g 89 vchkpw
useradd -u 89 -g vchkpw vpopmail
cd /var/src
tar -xzf tar/vpopmail-5.4.10.tar.gz
cd vpopmail-5.4.10
./configure --enable-logging=v
make
make install-strip
echo '127.:allow,RELAYCLIENT=""' > ~vpopmail/etc/tcp.smtp
cd ~vpopmail/etc
tcprules tcp.smtp.cdb tcp.smtp.tmp < tcp.smtp
安装vpopmail启动脚本
cp ../toaster-scripts-0.8/vpopmailctl /var/qmail/bin/vpopmailctl
chmod 755 /var/qmail/bin/vpopmailctl
ln -s /var/qmail/bin/vpopmailctl /usr/bin
这时候我们可以安装qmail的补丁了
cd /var/src/netqmail-1.05/netqmail-1.05
bunzip2 -c ../../tar/qmail-toaster-0.8.patch.bz2 | patch -p0
make clean
make
qmailctl stop
make setup check
chown -R vpopmail:vchkpw /var/qmail/spam
重启启动qmail
qmailctl start
允许daemontools来启动vpopmail
ln -s /var/qmail/supervise/qmail-pop3d /var/qmail/supervise/qmail-pop3ds /service
检测vpopmail
sleep 5
vpopmailctl stat
测试
添加域:
/home/vpopmail/bin/vadddomain test.com [会让你定义密码]
添加用户:
/home/vpopmail/bin/vadduser -q 6MB user@test.com
然后用outlook测试一下你新建的帐号,就ok了
August 30, 2005
在linux下使用google talk
相信大家都已经试用google的talk很多天,做为linux的爱好者,其实更加关心,google的talk是否能在linux下正常使用。可惜在google talk的主页还没有针对linux的版本,让人有点遗憾,不过欣喜的是talk用的是开源的Jabber协议,心想:"既然开源,应该能在gaim上使用"。
打开gaim的帐号设置,果然看到有Jabber协议,嘿嘿,离成功不远了
登入选项
协议:Jabber
用户名:gmail邮箱前缀
服务器:gmail.com
资源:google talk
密码:gmail邮箱密码
显示主要选项:
Jabber选项
选中"use TLS if available"和"Allow plaintext auth over unencrypted steams"
端口:5222
连接服务器:64.233.167.125
ok,大家尽情享受google talk带来的乐趣吧
原文参考:
http://www.linuxfans.org/nuke/modules.php?name=News&file=article&sid=2862&mode=&order=0&thold=0
August 25, 2005
在linux下安装摄像头
环境:
系统:Fedora Core 4
摄像头:恋影双双 比翼版
先去摄像头的官方网站看摄像头的详细信息,得知此摄像头的芯片为中微星301P,据说这款芯片低端市场占有率70%,可惜就是这么高的占有率,居然没有linux的任何驱动,真为公司悲哀。
幸好国外的朋友开发了兼容这款芯片的驱动程序。大家可以到http://mxhaard.free.fr/spca5xx.html 下载最近的驱动。安装非常简单。
tar zvxf spca5xx-20050701.tar.gz
cd spca5xx-20050701
make clean (如果你以前安装过旧版本,先运行此)
make
make install
我的是2.6的内核,2,4内核的请参考安装说明
FC4支持即插即用了,我的摄像头是usb,插上就认,你可以lsmod看到插上摄像头后已经加载spca5xx模块。
如果你的系统没设置即插即用,那你只能重新启动,或者参考Fedora Core 4.0 HAL配置即插即用移动存储(USB及1394)的实践
好了,系统认出摄像头来后,就开始我们的实际应用,打开GnomeMeeting,如果你还没装yum一下了:)
初始化的时候,软件会让你选择驱动,如果模块加载正确的话,默认系统会选择z-star vimsicro zc0301p
August 22, 2005
HPLIP安装详解(HP网络打印机的通用装法)
装了FC4后,迫不及待的装上玩,但在安装网络打印机的时候还是碰到问题,这在以前的版本也因此受阻,不过以前都是草草了事,今天决定把它彻底搞清楚,经过一番努力终于把hp的网络打印机搞定
环境
系统:Fedora Core 4.0 kernel 2.6.12-1
打印机:Color LaserJet 3550 彩色激光打印机,带打印服务器
首先要知道的。FC4自带的HP驱动程序是HPIJS和HPOJ,这两个程序从官方网站来看,显然很落伍了,不知道为什么FC还要装这个,HP网站早在20005年初就开始推出HPLIP程序,已经包含了以上两者,并且在不断的增加新的打印机,扫描仪的支持,就拿我的Color LaserJet 3550 来说,也只能在HPLIP开始支持,我想大家一定被系统自带的软件迷惑,走了不少弯路。所以你大可以删除HPIJS和HPOJ,然后安装一个HPLIP就行
1。前期所需安装软件
yum install cups-devel
yum install python-devel
yum install PyQt
yum install net-snmp-devel
yum install libjpeg-devel
安装了防火墙的朋友记得先把防火墙打开,或者打开631端口,还有把SELinux也disable
2。安装HPLIP
去HPLIP的官方网站下载最新版本的HPLIP
tar zvxf hplip-0.9.4.tar.gz
cd hplip-0.9.4
./configure --prefix=/usr
make
make install
3。启动HPLIP服务
/etc/rc.d/init.d/hplip restart
/etc/rc.d/init.d/cups restart
4。添加打印机
用浏览器访问http://localhost:631
![]()
点击Printers,选择Add Printer
在这里由于我们的网络打印机,所以选择Appsocket/JetDirect,然后下一步
在这里会让你填打印机的url,由于网络打印机有ip地址,所以我们可以直接填写,比如我的:socket"//192.168.2.8:9100
当然网络打印机可能接在一台主机上,不像我们公司直接接了一个打印服务器的盒子,所以,你要是不知道打印机的url,可以运行/usr/share/hplip/probe -bnet 系统会系统搜索网络,比如搜索到"hp:/net/HP_Business_Inkjet_1200?ip=192.168.1.100".那你就可以在刚才的url填写hp:/net/HP_Business_Inkjet_1200?ip=192.168.1.100
下一步:
好了,选择你的打印机型号,我的是,基本上最新的打印机都有支持,如果你还是没发现你的打印机型号,那你还是耐心等待新的版本,或者自己发邮件给他们的开发小组,说不定下个版本就支持了。
打印测试页面成功,到此安装Color LaserJet 3550 成功,真让人高兴:)
我这里讲述的是网络打印机的安装方法,其实USB或者并口的安装,也能用这个方法,只不过步骤稍微有点变化。
希望对大家有所帮助,参考文档
HPLIP Installation Overview
August 17, 2005
Fedora Core 4的Firefox手动安装Flash插件
Fedora Core 4系统可以选择安装Firefox,但自带的firefox并没有安装flash插件,所以在访问类似sina网首页的时候,都不能正常显示全部页面,虽然系统也会提示安装插件,但flash的插件还是以失败告终。
没办法,只好手动安装
1:先下载插件install_flash_player_7_linux.tar.gz
2:解压缩
3:把解压缩文件夹里的libflashplayer.so和flashplayer.xpt 拷贝到/usr/lib/firefox-1.0.4/plugin/目录下,版本不一样可能目录不一样。
重新启动Firefox,访问sina网,应该能正常看到flash制作的广告
从硬盘安装Fedora Core 4
由于我的IBM240没有光驱,所以安装Fedora Core 4我选择硬盘安装,但Fedora Core 4跟redhat 9.0的硬盘安装方法有所不同,redhat不需要要安装其他软件,只要把光盘的某个目录拷贝出,然后dos下启动就可以安装,但到了Fedora Core 已经没了类似的目录,所以硬盘安装模式有点变化。
1:首先当然是下载Fedora Core 4的光盘镜像了,很多地方可以下载,这里提供一个
ftp://mirror.switch.ch/mirror/fedor...-i386-disc1.iso
ftp://mirror.switch.ch/mirror/fedor...-i386-disc2.iso
ftp://mirror.switch.ch/mirror/fedor...-i386-disc3.iso
ftp://mirror.switch.ch/mirror/fedor...-i386-disc4.iso
2:把CD1的isolinux目录解压到c:\下
3:下载Grub For Dos
ftp://ftp2.linuxeden.com/tools/grub_for_dos-0.2.0pre13.tar.gz
解压把里面的文件和文件夹剪切出,放在解压后目录的外边.此时的路径为:C:\boot
4:修改boot.ini
最后面添加这么一行
C:\grldr="GRUB For Dos
保存退出
5:修改C:\boot\grub\menu.lst
添加这么几行
title Install-Fedora Core 4
kernel (hd0,0)/isolinux/vmlinuz
initrd (hd0,0)/isolinux/initrd.img
注意:我的C盘这里是hd0,0表示第一个ide硬盘第一个分区,大家可根据自己的需要修改硬盘参数
ok,重新启动系统,会看到GRUB For Dos 菜单,选择后,在安装媒介选择硬盘安装就行。
July 15, 2005
让CBL结合SpamAssassin使用
中国反垃圾邮件联盟的实时黑名单服务(RBL) —— CBL/CDL/CBL+/CBL-相信很多邮件服务器的管理员都在用,在其官方的使用说明中,有关qmail的使用,只是在smtp启动教本设置了使用rbl检查。有个弊端,就是可能误杀正常邮件。我个人认为还是把邮件都收下来(当然你的邮件服务器如果用户俩巨大的话,不用考虑我的情况)然后让邮件都打上“垃圾邮件”的标示,让用户用客户端软件的过虑策略自己去处理。
其实SpamAssassin本身自带rbl的检测,当然你得在local.cf打开skip_rbl_checks ,默认是检查rbl的
skip_rbl_checks 0
然后我们在/usr/share/spamassassin/ 修改20_dnsbl_tests.cf
添加以下语句
# CBL
# URL: http://www.anti-spam.org.cn/
header RCVD_IN_CBL eval:check_rbl('cbl+', 'cblplus.anti-spam.org.cn.')
describe RCVD_IN_CBL Received via a relay in cblplus.anti-spam.org.cn
tflags RCVD_IN_CBL net
ok,重启spamd服务,这样SpamAssassin就可以使用cbl的服务了
注:要使用cbl的服务,还得先去他们的网站进行注册,否则是用不了的
July 14, 2005
SpamAssassin的简单应用
这里我们只讲SpamAssassin的简单应用,就是利用SpamAssassin的规则集把垃圾邮件标注为垃圾邮件,然后在客户端outlook用策略把带有垃圾邮件字符的邮件自动转移到垃圾邮件目录。
参看文章
CCERT中文垃圾邮件过滤规则集
试验环境:redhat9.0
前提条件:已经安装好qmail,本文已经搭建的环境是qmail+vpopmail+igeus
1:安装SpamAssassin
安装方法1:直接通过CPAN安装
perl -MCPAN -e shell
install Mail::SpamAssassin
2:自己编译安装
去http://spamassassin.apache.org下载最新版本的软件
解压后:# perl Makefile.PL
# make
# make install
如果make过程中报错,可以参看此文解决相关问题http://blog.5ilinux.com/archives/2005/07/spamassassin.html
3:配置local.cf文件
# vi /etc/mail/spamassassin/local.cf
# How many hits before a message is considered spam.
required_hits 9.5# Text to prepend to subject if rewrite_subject is used
rewrite_header Subject *****垃圾邮件*****# Encapsulate spam in an attachment
report_safe 1# Enable the Bayes system
use_bayes 1# Enable Bayes auto-learning
bayes_auto_learn 1# Enable or disable network checks
skip_rbl_checks 1
use_razor2 0
use_dcc 0
use_pyzor 0# Mail using languages used in these country codes will not be marked
# as being possibly spam in a foreign language.
ok_languages all# Mail using locales used in these country codes will not be marked
# as being possibly spam in a foreign language.
ok_locales all
关于SpamAssassin的配置文件,可参考SpamAssassin 3.x 配置指南(中文版)
4:下载垃圾邮件中文规则集
wget -N -P /usr/share/spamassassin www.ccert.edu.cn/spam/sa/Chinese_rules.cf
5:qmail和SpamAssassin的结合
在SpamAssassin 3.x 的spamc 目录下编译qmail-spamc
# cc -O -o qmail-spamc qmail-spamc.c
# install -m 755 qmail-spamc /var/qmail/bin
# ln -s /var/qmail/bin/qmail-queue /usr/bin/qmail-queue
编辑 /etc/tcp.smtp 如下
127.:allow,RELAYCLIENT=""
:allow,QMAILQUEUE="/var/qmail/bin/qmail-spamc"
然后:
tcprules tcp.smtp.cdb tcp.smtp.tmp < tcp.smtp
在编译目录spamd目录下
mv redhat-rc-script.sh /etc/rc.d/init.d/spamd
启动spamd
/etc/rc.d/init.d/spamd start
这样SpamAssassin会根据规则集自动判断垃圾邮件,把认为潜在可能的垃圾邮件打上****垃圾邮件****的标,一目了然,至于客户端outlook怎么设置策略自动转移垃圾邮件,就不用我说了吧。
July 12, 2005
CPAN相关软件的安装方法
最近几天安装SPAMASSASSIN,牵涉到许多CPAN的安装,以前都是缺少什么,就去CPAN网站寻找相应的模块,自己编译安装,后来发现其实CPAN自己的shell命令就可以很方便的安装相应模块,真是方便
当然前提你必须安装perl-CPAN,在我的redhat9.0上的版本是perl-CPAN-1.61-88,大家没装的话,直接用光盘的rpm包安装即可。
安装后运行
[root@www CPAN]# perl -MCPAN -e shell
cpan shell -- CPAN exploration and modules installation (v1.61)
ReadLine support available (try 'install Bundle::CPAN')
cpan>
进入cpan的shell,好了,我为了安装spamassassin,需要安装以下几个
install Digest::SHA1
install HTML::Parser
install Storable
install DB_File
install Net::DNS
install Net::SMTP
install Mail::SPF::Query
install IP::Country::Fast
install IO::Socket::SSL
install Time::HiRes
install DBI
是不是很方便呀,不用再单独下载编译安装了,呵呵
由 frank 发表于 11:41 AM | 回复 (0) | 引用
安装SpamAssassin遇到问题的解决
编译安装SpamAssassin过程中:
报以下错误
[root@www Mail-SpamAssassin-3.0.4]# perl Makefile.PL
What email address or URL should be used in the suspected-spam report
text for users who want more information on your filter installation?
(In particular, ISPs should change this to a local Postmaster contact)
default text: [the administrator of that system]
Check network rules during 'make test' (test scripts may fail due to
network problems)? (y/n) [n] y
Warning: prerequisite Digest::SHA1 0 not found.
Writing Makefile for Mail::SpamAssassin
Makefile written by ExtUtils::MakeMaker 6.03
[root@www Mail-SpamAssassin-3.0.4]# make
/usr/bin/perl spamc/configure.pl --prefix="/usr" --sysconfdir="/etc/mail/spamassassin" --datadir="/usr/share/spamassassin" --enable-ssl="no"
cd spamc
/usr/bin/perl version.h.pl
version.h.pl: creating version.h
spamc/configure.pl: version.h.pl: Failed to get the version from Mail::SpamAssassin.
Please use the --with-version= switch to specify it manually.
The error was:
version.h.pl: version.h.pl: version.h.pl: version.h.pl: version.h.pl: version.h.pl: version.h.pl: Can't locate Digest/SHA1.pm in @INC (@INC contains: ../lib /usr/lib/perl5/5.8.0/i386-linux-thread-multi /usr/lib/perl5/5.8.0 /usr/lib/perl5/site_perl/5.8.0/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.0 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.0/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.0 /usr/lib/perl5/vendor_perl .) at ../lib/Mail/SpamAssassin/EvalTests.pm line 33.
BEGIN failed--compilation aborted at ../lib/Mail/SpamAssassin/EvalTests.pm line 33.
Compilation failed in require at ../lib/Mail/SpamAssassin/PerMsgStatus.pm line 56.
BEGIN failed--compilation aborted at ../lib/Mail/SpamAssassin/PerMsgStatus.pm line 56.
Compilation failed in require at ../lib/Mail/SpamAssassin.pm line 74.
BEGIN failed--compilation aborted at ../lib/Mail/SpamAssassin.pm line 74.
Compilation failed in require at version.h.pl line 27.
make: *** [spamc/Makefile] Error 2
解决办法:
根据perl时的错误提示是找不到Warning: prerequisite Digest::SHA1 0 not found.所以我们安装Digest::SHA1
安装后,重新编译,顺利编译SpamAssassin
July 11, 2005
spamassassin的中文垃圾邮件过滤规则集
我想每个邮件服务器的管理员最大的烦恼就是日益增多的垃圾邮件,以前国外报道垃圾邮件怎么怎么影响工作,似乎没怎么感受,好像离的好远,可现在每天上班头一件事就是处理多达好几百的垃圾邮件,已经成为我每天特头疼的事情。
决定这几天对我的qmal邮件系统动刀,解决日益严重的垃圾邮件问题。初步定位为qmail + vpopmail + maildrop + spamassassin 实现邮件过滤的方案。
另外还发现了一份spamassassin的中文垃圾邮件过滤规则集,我想应该会对自己有用。
CCERT反垃圾邮件研究小组利用CCERT所掌握的最新和丰富的样本数据,推出了第一个基于SpamAssassin的中文垃圾邮件过滤规则集Chinese_rules.cf。该规则集每周更新一次,时效性非常好。
Chinese_rules.cf是在SpamAssassin 官方网站上发布的第一个中文垃圾邮件过滤规则集,也是用Google,Yahoo,百度,MSN搜索“中文垃圾邮件过滤”时所返回的第一条结果。
下载Chinese_rules.cf
CCERT中文垃圾邮件解决方案 CCERT-Anti-Spam-Solutions.pdf
June 27, 2005
增加man.5ilinux.com
这个域名http://man.5ilinux.com主要用来我收藏一些常用的linux man以及官方文档。
红帽企业 Linux 4 用于 x86、Itanium™、AMD64体系的安装指南(简体中文)
由 frank 发表于 9:45 AM | 回复 (0) | 引用
June 18, 2005
修复被攻击的机器(二)
经过昨天一天的系统检查,可以说基本把机器修复完毕,因为跑着公司的业务,不敢轻易重装,只能一个个仔细的检查,不过这次让我吸取了不少教训。
经过初步分析,黑客的攻击大致如下
1.首先黑客扫描到服务器的Awstats统计软件的恶意代码注入漏洞,基本上6.4以下的版本都有这个漏洞,我的正好6.1,中招。
Awstats 官方提示为:Warning, a security hole was recently found in AWStats versions from 5.0 to 6.2 when AWStats is used as a CGI: A remote user can execute arbitrary commands on your server using permissions of your web server user (in most cases user "nobody").
If you use AWStats with another version or is not available as a CGI, you are safe. If not, it is highly recommanded to upgrade to 6.4 version that fix this security hole and another less important one still present in 6.3.
关于此漏洞的说明及攻击可参考http://www.chovy.com/2005/02/simiens-crew-2005-how-they-did-it.html
2.通过此漏洞,黑客用一个shellcode远程上传一个恶意代码,然后远程执行程序,打开一个类似telnet的终端,我觉得我这次中招最大的失败是我没开防火前,以前一直使用iptables,由于调试的缘故,一直没开,本来要是开着的话,黑客即使开了终端也没法上来,因为除了几个重要的端口,基本上都被封了,失算呀:(
3.还好,这个黑客还算有职业道德,没破坏我服务器上的数据,这是我最欣慰的,毕竟这台服务器跑着公司最赚钱的业务,要是真的所有数据没了,老板非跟我急了。黑客通过shellcode打开一个终端后(等于绕开了我的ssh2+密匙)的验证,上传了一个ssh的扫描程序,以及一个类似irc的服务程序,用netstat查看为
tcp 0 0 0.0.0.0:4000 0.0.0.0:* LISTEN 25181/zbind。
然后潜伏好几天,就用我的机器开始他的异地跳板ssh扫描工作,采用的普遍是简单密码暴力破解方式。怪不得移动的idc近2个月经常抱怨我们的服务器流量巨增,估计是跑了很多线程扫描的缘故。
黑客的基本情况如此,当然细节还有很多,比如他把一些扫描程序或者服务程序都放在我们平时不大注意的目录,比如/tmp/, /dev/shm 甚至在那些目录建立非法的隐藏目录,一般用ls -la都没法看到的目录,幸亏我比较习惯使用mc,目录一目了然。也亏那黑客想得到放在shm目录,直接用内存,速度块呀!!!
4.了解黑客的基本情况后,就开始我的大扫除了:
a.首先当然是断掉所有的非法进程和网络服务,可以通过ps -aux 和 netstat -lnp --ip来看到一些非法的进程和网络服务
b.然后扫除那些黑客留下的非法程序,结合find命令查找就行,一查还不知道,这黑客居然留下这么多,这个查找还是挺累的,绝对锻炼你的耐心,并且要求你对系统文件结构有一定的了解,否则那个目录多出什么文件,你一般很难看出。最后查了后,我还是有点不放心,索性装了个Trend Micro ServerProtect for Linux ,通过它对服务器系统的全面扫描,又发现几个隐藏的文件,因为基本上黑客上传的文件都是带木马的,防病毒软件一查就可以查出来。
c.修改cron ,黑客以nobody用户修改了进程安排,删除掉,问我怎么发现的,嘿嘿,其实我发现黑客也是通过这个发现,因为我通过服务器配置了LogWatch,默认每天把系统的log通过邮件发送到我的指定邮箱。我发现黑客的那天就是发现cron突然多出一个我不知道的进程安排。看来这个黑客还是初级的,不知道去消除log日志中的非法操作,让我能每天看到。
d.当然是重新打开防火墙了,还是使用免费的系统自带的iptables,只打开系统自己要用的20,21,80,3306等端口,其他一律屏蔽,这样就给shellcode又防了一道门
e.删除系统多余的没用的帐号,特别是这次被利用的nobody,限制它的权限和bin
f.当然是升级造成这次攻击的漏洞源Awstats,赶快升级到6.4,另外Awstats用的是cgi,那就用.htaccess给Awstats的访问页面加口令,这样被攻击的可能性又减少不少。当然如果你觉得cgi不安全的话,或者你再也不想用Awstats的话,你完全可以把apache的cgi模块屏蔽掉,修改httpd.conf文件即可。
通过以上步骤的修复,服务器基本恢复到被攻击之前的状态,当然我还是心里没底,说不定黑客还在什么地方留了什么后门。未来几天我还得继续观察。
由 frank 发表于 12:11 PM | 回复 (0) | 引用
June 16, 2005
修复被攻击的机器(一)
一上午一直在研究那台被攻击的机器,初步认定黑客是利用AWStats的漏洞来攻击,google网上一查,除非你装最新的版本,否则都有这个漏洞
http://www.blacksky.cn/article.asp?id=192 都有攻击这个漏洞的工具,甚至有人还做了Awstats和phpbb2攻击工具 ,看来我想最近被黑的机器估计不少哦。
那些使用Awstats的站长可注意了,赶快升级到最新的版本,或者索性屏蔽apache的cgi模块,彻底不让攻击。
可怜我的机器不知道被黑客驻留了什么程序,我还得慢慢查,好想4月份就被攻击了,到今天才发现,真是失职呀,打自己几个耳光。
下定决心一定要跟这个黑客斗到底,斗争之前先把自己有用的东西备份好,省得造成损失
由 frank 发表于 12:24 PM | 回复 (0) | 引用
今天发现机器被黑了
好久没关心我的linux服务器了,一直以为它很安全,其实今天我才发现服务器是那么的脆弱,我的服务器登陆都采用ssh2+密匙,只开web和ftp服务,其他服务都没有。
但今天ps一下,发现有许多非法的程序,初步诊断是黑客把我的机器做跳板,然后再去ssh人家的机器,够黑,增加了诸如zbind等mech进程,另外还有一个pscan2的扫描程序。
google查了一下zbin的,发现有个朋友也遇到同样的问题,看来这个黑客程序现在很流行,估计是国外人干的。
今天先慢慢检查一下系统,后续报道我怎么解决安全问题
由 frank 发表于 11:20 AM | 回复 (0) | 引用
June 12, 2005
解决应用程序调用mysql的找不到mysql.sock的问题
新的MT系统,我使用了mysql系统,一直用的很好,不过今天我偶然去使用phpmyadmin时,居然报Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'的错误。奇怪,明明mysql正常启动,但为什么phpmyadmin不能正常连接mysql,然后又直接去linux机器,本地运行mysql命令,发现mysql确实正常运行起来,看来是phpmyadmin的问题,马上去找phpmyadmin的配置文件,发现确实有设置mysql.sock文件的位置,由于安装MT的缘故,我把mysql.sock选择在/tmp/mysql.sock。修改之下,phpmyadmin正常运行,但随之我又发现我的另外一个blog系统wp也不能正常调用mysql,它也是一个php的blog,但这个程序确没地方设置mysql.sock的位置,左思右想发现php.ini有修改mysql.sock的设置,只要在这里设置了,所有的php应用就再也不报以上错误。通过以上调试总结出以下结论:
当出些类似Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'的错误时,解决方法:
1.mysql可能没正常启动,检查mysql程序
2.修改/etc/my.cnf 修改mysql.sock的位置,使之满足php或者cgi程序的需要
3.修改php.ini的mysql.sock的设置,满足所有php程序的需要
4.修改某些程序中配置文件中关于mysql.sock的设置。
由 frank 发表于 10:07 PM | 回复 (0) | 引用
June 9, 2005
emerge的常用命令
gentoo已经安装了一星期多了,虽然中途系统崩溃,让我重新装了一遍,但确实发现gentoo系统的强大。
令我印象最深的是本来在那台机器装2000,看dvix4的时候,cpu的使用率是100%,然后影片看上去断断续续的,丢帧很严重。但装了gentoo后,在kde用mplayer播放,确实如此的流畅,cpu只占用50%不到,不得不让我刮目相看。从心底里喜欢上gentoo要说到这几天gentoo的使用感受,就是emerge的命令和USE的使用,今天先总结一下emerge命令
emerge sync 更新 Portage
emerge lynx 编译安装lynx软件
emerge /usr/portage/net-www/galeon/galeon-1.2.0-r3.ebuild 安装指定的 ebuild
emerge -p 查看 emerge 会做什么.以及所依赖的包
emerge -f 只下载安装套件需要的档案以及他依赖的套件。
emerge -v 告诉 emerge 以完整模式执行。这通常和 –pretend 一起使用来显示这个套件可用的 USE 设
定。
emerge unmerge lynx 移除套件
emerge –update system 更新你的系统
emerge –update world 更新全系统
emerge –upgradeonly world 只升级
emerge clean 移除旧版本的套件
由 frank 发表于 10:54 PM | 回复 (0) | 引用
June 16, 2004
为linux服务器增加新分区
一直没在正式的服务器上新安装过新的分区,也没这个机会,可好这次朋友高春辉的的手机之家的服务器出现硬盘问题,没办法,只能拿出以前学习笔记,在他的服务器上进行小白鼠试验,哈哈,高兄看到肯定又翘胡子了,这可不能怪我哦。
其实还是很简单的,只不过每次重启机器都是那么紧张,生怕修改了fstab后,系统起步来,嘿。
这次都是通过远程操作,这在windows上好像有点不可想象,linux就是好,什么都能远程操作。
高在机房加入新硬盘后,我就通过ssh登陆开始添加新的分区了。
这次我们主要是想把以前的sdc1即/home分区,挪到新加的硬盘上去。sdc我们通过badblocks命令检查出有很多,而且经过多次修复尝试后,宣告失败,所以才会决定用新的硬盘换这个有问题的硬盘。
新的硬盘是sdb,先分区先;
fdisk /dev/sdb
如果以前有分区的话,最好用d命令先删除
然后用n命令添加新的分区。
这个应该很反便吧,我想我不用介绍了,如果你要添加swap分区的话,记得分区的代码是82,而不是默认的linux代码83。
记得w命令保存退出哦,一定要保存。
ok,分区后当然是格式化了,
mkfs.ext3 -c /dev/sdb1
注意这里我用了 -c 选项用“read-only”方式检查硬盘。这个命令会在格式化硬盘时检查硬盘,并标出错误的硬盘“block”。用这个方法格式化硬盘,需要有相当大的耐心,因为命令运行后,会一个个用读的方式检查硬盘。
格式话后,我觉得有必要检查一下你的新硬盘是否有坏道,可能被坏道弄怕的缘故吧。
badblocks -b 4096 -c 16 /dev/sdb1 -o sdb1-badblocks-list
“-c number of blocks”是检查的次数,默认是16次。这样的命令需要耐心等待。其中,“badblocks”以4096的一个block,每一个block检查16次,将结果输出到“sdb1-badblocks-list”文件里。
如果硬盘正常的话,应该sdb1-badblocks-list是没有任何内容的,有就说明有坏道。
好了。分完区,格式化也好了,并且检查也没问题,最后的步骤是修改/etc/fsatb文件
很简单了,只要把以前home对应的分区,修改成现在的分区就行,当然如果有数据转移的请事先转移。
下面是我的针对新硬盘分区的设置
/dev/sdb1 /home ext3 defaults 1 2
很简单吧。
参考文档:Linux下两种修复硬盘坏道方法
由 frank 发表于 6:17 AM
February 14, 2004
用squid再次疯狂加速你的web
昨天给大家介绍了用tmpfs加速你的linux服务器,我觉得还是不够过瘾,今天趁热打铁继续学了一招,用squid来疯狂加速你的web网站,对自己web网站速度不满意的话,不妨试验一下我下面推荐的方法。
首先你得有squid代理服务器,怎么装我就不讲了,用redhat的直接使用她的rpm安装就行。
配置squid的配置文件,使其支持httpd加速器工作方式。
编辑“squid.conf”文件(vi /etc/squid/squid.conf),增加下面内容:
http_port 80
icp_port 0
acl QUERY urlpath_regex cgi-bin ?
no_cache deny QUERY
cache_mem 16 MB
cache_dir ufs /tmp 256 16 256
log_icp_queries off
buffered_logs on
emulate_httpd_log on
redirect_rewrites_host_header off
half_closed_clients off
acl all src 0.0.0.0/0.0.0.0
http_access allow all
cache_mgr admin
cache_effective_user squid
cache_effective_group squid
httpd_accel_host 210.51.0.124
httpd_accel_port 81
http_port”参数指定Squid监听浏览器客户请求的端口号,这里当然是80了
cache_dir ufs /tmp 256 16 256
cache_dir参数设定使用的存储系统的类型。一般情况下都类型应该是ufs,目录应该是“/tmp”,在该目录下使用的缓冲值为256MB,允许在“/tmp”下创建的第一级子目录数为16,每个第一级子目录下可以创建的第二级子目录数量为256
选项“httpd_accel_host”和“httpd_accel_port”定义了真正的Web服务器的主机名和端口号。在这里的配置中,真正的HTTP服务器运行在IP地址为210.51.0.124 (www.5ilinux.com)的主机上,运行端口为81。
ok,squid设置完毕。
接着设置apache,很简单,只要把你的httpd监听端口设置成81就成,然后重启你的apache。
接着重启你的squid服务,现在你访问你的web网站,已经是用了squid的http加速工作模式,你可以通过看squid的log日记看到他的运行情况。
我还是没搞明白怎么配合使用虚拟主机,以上方法只实现一个域名,不知大家有没有做过虚拟主机squid加速,提点一下吧
由 frank 发表于 6:16 AM
February 13, 2004
巧用tmpfs加速你的linux服务器
今天从朋友高春辉那里又学了一招,就是使用tmpfs,我把他消化后用来实现虚拟磁盘来存放squid的缓存文件和php的seesion。速度快不少哦!
默认系统就会加载/dev/shm ,它就是所谓的tmpfs,有人说跟ramdisk(虚拟磁盘),但不一样。象虚拟磁盘一样,tmpfs 可以使用您的 RAM,但它也可以使用您的交换分区来存储。而且传统的虚拟磁盘是个块设备,并需要一个 mkfs 之类的命令才能真正地使用它,tmpfs 是一个文件系统,而不是块设备;您只是安装它,它就可以使用了。
tmpfs有以下优势:
1。动态文件系统的大小,
2。tmpfs 的另一个主要的好处是它闪电般的速度。因为典型的 tmpfs 文件系统会完全驻留在 RAM 中,读写几乎可以是瞬间的。
3。tmpfs 数据在重新启动之后不会保留,因为虚拟内存本质上就是易失的。所以有必要做一些脚本做诸如加载,绑定的操作。
好了讲了一些大道理,大家看的烦了吧,还是讲讲我的应用吧:)
首先在/dev/stm建个tmp文件夹,然后与实际/tmp绑定
mkdir /dev/shm/tmp
chmod 1777 /dev/shm/tmp
mount --bind /dev/shm/tmp /tmp
1。squid的缓存目录设置
vi /etc/squid/squid.conf
修改成
cache_dir ufs /tmp 256 16 256
这里的第一个256表示使用256M内存,我觉得高性能LINUX双效防火墙HOWTO使用ramdisk的方法还不如直接使用tmpfs,至少每次启动不用mkfs,还可以动态改变大小。
然后重启一下服务,ok,现在所有的squid缓存文件都保存倒tmpfs文件系统里了,很快哦。
2。对php性能的优化
对于一个访问量大的以apache+php的网站,可能tmp下的临时文件都会很多,比如seesion或者一些缓存文件,那么你可以把它保存到tmpfs文件。
保存seesion的方法很简单了只要修改php.ini就行了,由于我已经把/dev/stm/tmp与/tmp绑定,所以不改写也行,至于php程序产生的缓存文件那只能改自己的php程序了:)
希望我的这个方法,能对你有所启发。
参考文档:使用虚拟内存(virtual memory,VM)文件系统和绑定安装
由 frank 发表于 6:13 AM
February 7, 2004
高性能LINUX双效防火墙HOWTO
原文地址:
http://www.linuxaid.com.cn/articles/4/4/441672019.shtml
杭州小红马工作室 kinglee
kinglee@hzcnc.com
系统功能说明:
包过滤和WEB代理双效合一。由iptables 实现包的过滤,由LINUX下大名鼎鼎的squid结合NAT来实现透明WEB代理。SQUID代理的性能本身已经是代理服务器中的佼佼者,本系统将其性能发挥的极至:通过ramdisk技术,让SQUID把网页cahce到内存中,这样,你所访问的网页,除了第一次需要到网络上取,以后都将来自内存!下面介绍如何用redhat 7.2来实现的方法和步骤。
(1)选择一台比较稳定的计算机,装上两块网卡,256或512M内存,硬盘10G(注意:第一块网卡接内网,第二块网卡接外网。)
(2)安装red hat 7.2,安装时选择服务器模式,自动分区
(3)大概在10-15分中后系统安装完毕,重启后进入系统,开始配置系统
1、开启包转发
编辑/etc/sysctl.conf,将net.ipv4.ip_forward=0 该为net.ipv4.ip_forward=1,保存修改。其目的是允许LINUX内核做IP包的转发:允许IP数据包从一个网络接口穿越到另一个网络接口,只有这样,系统才具有充当包过滤防火墙的条件。
2、激活RamDisk
修改/etc/grub.conf
#boot=/dev/sda
default=0
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
title Red Hat Linux (2.4.7-10)
root (hd0,0)
kernel /vmlinuz-2.4.7-10 ro root=/dev/sda6 ramdisk=268435
initrd /initrd-2.4.7-10.img
其中ramdisk=268435 是我们要添加的内容,目的是告诉系统默认的 ramdisk的大小是268435k,也就是256M。注意千万不可以直接写256M,这样系统是不认识的,必须要换成K才行!(摸索了好几个月的心得!),这样设好,重新启动后就系统就回自动生成一个256M的虚拟盘了。当然,你要根据自己的内存大小来设置这个参数,如果不运行XWINDOWS,设你总内存的一半都没问题,因为LINUX系统本身并不需要很多内存的。
3、设置squid参数
编辑/etc/squid/squid.conf,在末尾加入以下条目:
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
http_access allow all
cache_dir ufs /squid 256 16 256
前面四条参数使squid提供透明代理提供基础。“http_access allow all”表示允许所有的客户机器都可以访问代理;这里特别强调的是最后一条 “cache_dir ufs /squid 256 16 256”,
squid默认的cache_dir是“/var/spool/squid”,我们因为要让squid将内容cache到内存中,所以这里先改成/squid,接下来要将ramdisk影射到/squid目录中。
4、建立ramdisk。用下面的两条命令来完成:
(1)mkdir /squid 建立目录“/squid”
(2)mkfs /dev/ramdisk 创建文件系统
(3)mount /dev/ramdisk /squid 将ramdisk 挂载到/squid目录。
由于ramdisk在每次重启后会消失,因此,为了让系统启动时自动建立好,我们可以建立一个自动装载ramdisk的批命令:
mkfs /dev/ramdisk
mount /dev/ramdisk /squid
将这两条命令写到一个文件中,我们暂且用myautoexec.bat作为文件名,为了方便起见,我们建立/admin目录,然后将myautoexec.bat文件保存在/admin下,并加给可执行的权限:chmod +x myautoexec.bat
但这样系统启动时并不会被调用,所以我们还要做一件事:编辑/etc/rc.local 文件,在文件末尾插入一行:/admin/myautoexec.bat,这样,系统就会自动调用myautoexec.bat了。
5、初始化squid。
还记得“cache_dir ufs /squid 256 16 256”这个参数吗?初始化过程实际上就是squid在指定的cache_dir中建立指定的一级目录(这里是16),然后在每个一级目录中建立256个二级目录。使用的命令是:“squid –z ”。但现在这时输入命令系统会报告出错,因为/squid现在的属主是root, squid 没有权限操作root的文件,所以还要先把/squid目录指派给squid用户,用“chown squid.squid /squid”。再一次运行“squid –z ”,不到一秒钟时间就可完成。如果这个过程是在磁盘上而不是在ramdisk上,一般要工作几十秒钟。
同样,这步的设置也要把
chown squid.squid /squid
squid –z
两条命令写到myautoexec.bat中,最后加上一条“squid”,就是启动squid服务进程。到这里,squid的设置全部完成。
6、设置NAT和防火墙规则。
为了方便起见,建立文件/admin/myfirwall,将规则都写到文件中:
#------初始化部分
iptables -F
iptables -t nat -F
modprobe ip_tables
modprobe iptable_nat
modprobe iptable_filter
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ipt_state
#——初始化结束
#-START NAT<<<<<让地址为10.27.0.0/16的内部计算机可以伪装上因特网。
iptables -t nat -A POSTROUTING -o eth1 -s 10.3.37.0/24 -j MASQUERADE
#>>>>>end NAT
#端口转换,将所有发到外网的请求端口为80的都转到3128去,让squid来处理,这一
#--条是透明代理的关键<<<<<<
iptables -t nat -A PREROUTING -i eth0 -d ! 10.27.0.0/16 -p tcp -m tcp \
--dport 80 -j REDIRECT --to-ports 3128
#>>>>>>>end 端口转换
#防火墙规则<<<<<<< 这里要根据你的要求来定了
iptables -A INPUT -i eth1 -s 0.0.0.0/0 -p ICMP -j DROP
iptables –A INPUT –i eth1 –s 0.0.0.0/0 –p TCP –port ! 80 –j DROP
#以上两条分别是将所有从外网进来的ping包都统统丢弃,将所有由外网发起的非80端口
#的请求都统统丢弃,意思就是只不允许从外网向内网发ping ,只允许外网访问内网的
#HTTP服务。完整的防火墙规则要根据你的网络安全要求来制定,这里只做参考。
说明:所有以#开头的行表示说明,不用写入文件,保存为/admin/myfirewall,并用“chmod +x /admin/myfirewall”使其可以执行。编辑/admin/myautoexec.bat,加入“/admin/myfirewall”在最后一行。
到此为止,我们的好性能防火墙全部配置完成,运行reboot 重启后,可以工作了。
由 frank 发表于 6:10 AM
February 6, 2004
Redhat9上配置DNS
前提:机器名为bak.5ilinux.com 域名为5ilinux.com
1。从安装盘安装
rpm -ivh bind-9.2.2-21.i386.rpm
2。增加配置文件
vi /etc/named.conf
## named.conf - configuration for bind # # Generated automatically by redhat-config-bind, alchemist et al. # Any changes not supported by redhat-config-bind should be put # in /etc/named.custom # controls { inet 127.0.0.1 allow { localhost; } keys { rndckey; }; }; include "/etc/rndc.key";options {
directory "/var/named/";
};zone "." {
type hint;
file "named.ca";
};zone "0.0.127.in-addr.arpa" {
type master;
file "0.0.127.in-addr.arpa.zone";
};zone "localhost" {
type master;
file "localhost.zone";
};zone "5ilinux.com" {
type master;
file "5ilinux.com.zone";
};
下载named.ca
wget ftp://ftp.rs.internic.net/domain/named.root
下载后改名为named.ca 存在/var/named目录下
vi /var/named/localhost.zone
$TTL 86400 @ IN SOA @ root.localhost (
1 ; serial
28800 ; refresh
7200 ; retry
604800 ; expire
86400 ; ttl
)
IN NS localhost.@ IN A 127.0.0.1
vi /var/named/0.0.127.in-addr.arpa.zone
$TTL 86400 @ IN SOA localhost. root.localhost (
2 ; serial
28800 ; refresh
7200 ; retry
604800 ; expire
86400 ; ttl
)
@ IN NS localhost.
1 IN PTR localhost.
1 IN PTR bak.
vi /var/named/5ilinux.com.zone
$TTL 86400 @ IN SOA bak.wapya.com. root.localhost (
3 ; serial
28800 ; refresh
7200 ; retry
604800 ; expire
86400 ; ttl
)
IN NS bak.wapya.com.
www IN A 210.51.0.124
bak IN A 210.51.0.124
mail IN CNAME www
wap IN A 210.51.0.122
5ilinux.com IN MX 10 www
ok了,就是这些配置文件,至于原理我就不讲了。
只是为了方便以后查资料,所以把配置过程写下来
/etc/rc.d/iinit.d/named restart
重启一下服务就可以用了
由 frank 发表于 6:05 AM
December 24, 2003
fedora core1中flash插件不能用的解决办法
fedora core1中flash插件不能用的解决办法
1.下载插件rpm包
http://www.linuxsir.org 下载通用flash6插件rpm包
本插件可使mozilla支持flash
注意:你的mozilla版本必须在1.3Release以上!否则打开flash网页会把主窗口关掉.
安装:
2. rpm -Uvh mozillaflashplugin-6.0-1.i386.rpm
但有时会报错,提示缺少儿女见
从命令行出错提示中可以看出,缺少libstdc++-7.3....
解决的办法就是装上这个包,这个包在fedora第3张安装盘中,compat-libstdc++-7.3-2.96.118.i386.rpm,装上之后,一切就ok了!
由 frank 发表于 5:59 AM
编译升级Kernel-2.6.0内核
编译升级Kernel-2.6.0内核
终于等来2.6.0的内核正式发布,马上在自己的机器上升级一下,发现编译内核的方法更加方便了,如果你用的是GRUB的引导,那安装新内核更加方便,都不用你改什么文件。
1。下载2.6.0的内核
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.0.tar.gz
2。在/usr/src目录下解压内核
tar zvxf /下载的路径/linux-2.6.0.tar.gz
3。配置
# make mrproper
# make menuconfig
make mrproper 是清理代码树的动作,保证源代码是干净的
4.编译
make
5。安装
make modules_install
make install
看来2。6的编译确实比以前方便多了,以前的make bzImage make modules等步骤都在make一步都搞定,以前还要cp 内核和System.map,修改Grub.conf的步骤,统统make install搞定,方便吧
如果你放心,你可以去/boot目录看看是否已经有最新的vlinuz-2.6.0和System.map-2.6.0还有grub.conf是否已经给你自动配置好了
ok,reboot机器
哈哈,去领略2.6内核的魅力吧,enjoy it
附:(常见错误)
1.启后出现一句错误提示后就死锁了:
kernel panic : no init found ,try passing init = option to kernel.............
解决办法:注意如果你的系统一开始是ext3格式,最好直接把ext3文件系统编译进内核,而不要以模块的加载,否则启动将报类似的错误
张微波
2003年12月24日中午
由 frank 发表于 5:57 AM
December 15, 2003
今天成功抓了一个小偷
其实这个小偷偷的不是我的东西,他偷的是网络上的源代码,事情是这样的,我平时帮高春晖维护他的《手机之家》网站的服务器,一直没事,突然今天上班收到他的QQ留言,问我有没有动数据库,我说没呀,看来有人进服务器,我第一个反应,不会是黑客吧,我倒吸了口冷气,乖乖,不知道那家伙在上面动了什么。要是真的放了木马什么的。那要重装的话,对一个日访问量有5万的网站来说损失不少哦。
马上上去看,先看有什么异常进程,top(老实说要是碰到厉害的高手,你看top也是没用的,因为黑客完全可以把你的top命令都替换掉),但还是报真侥幸心里,看了没有异常的进程,然后用netstat -lnp -ip 看有没有多开了对外的通讯接口,同样,碰上高手,他照样可以把netstat改掉,看了也没什么异常,排除top,netstat被替换的可能,看来没放木马。
既然没放木马(假如),那他干了什么了,一个小偷不会这么好吧,只是来光顾一下,我看了一下数据库,发现多了一个数据库,而且是以root用户建立的,进去看好像是多了个论坛的数据库,难道黑客想在服务器偷偷的建个论坛?,既然是以root建立的,那就再看看history,看看都运行了什么命令
more /root/.bash_history
查看了好久,终于给我发现他的踪迹
w
top
cd /usr/local/apache
cd conf
vi httpd.conf
cd /home/mobile/
ls
cd PHPMYADMIN_paulgao/
ls
ls
pwd
ls -l
cd ..
ls
ls
pwd
ls
cd /var/lib
ls
df
cd mysql
ls
cd /home
ls
cd mysql/
ls
ls -l
cd discuz/
ls
ls -l
du -ks
cd ..
ls
tar zcvf discuz.tgz discuz/
tar zcvf discuz.tgz discuz/
cp -r discuz dic2
ls
rm discuz.tgz
tra zcvf discuz.tgz dic2
tar zcvf discuz.tgz dic2
ls
mv discuz.tgz /home/mobile/
cd dics
cd dic2/
du -ks
cd //
cd /home/mobile/
ls -l
w
ls
cd .
cd /
find / -name ZendOptimizer
find / -name ZendOptimizer*
cd /root
cd soft
ls
cp ZendOptimizer-2.1.0b-Linux_glibc21-i386.tar.gz /home/mobile/
cd /home/mobile/
ls
ls -l
ifconfig
ls
rm *.tgz
ls
rm *.gz
exit
看明白了,他在干什么,其实很简单的了
从他的命令可以看出,他登录后。先用w命令看看有没有管理员在,一看没有,他就看apache的配置,找到www的目录,并且想查看phpmyadmin的文件。。。。。。最后有寻找mysql的数据库所在,而且还打包了一个discuz的压缩包,并把他转移到web目录,看来他想通过http取走数据库,既然是通过http取走的,那就查看apache的log记录了
cat /var/log/www/http_access.log |grep discuz.tgz
哈哈,找到了,对方居然也是unix机器,用wget命令获取的,还有ip地址,在ie里直接敲这个地址,居然出现一个网页,乖乖,这个网页还有《手机之家》链接,看来是高春晖认识的。
于是我把这个判断告诉了高春晖,让他去搞定,果然最后的结果跟我想的一样,那家伙一开始还不承认,最后证据面前不得不承认。
经过这次教训,我马上帮高春晖在服务器上给ssh加了密匙RSA验证,只有我和高春晖有密匙,并取消默认的密码验证,这样对方即使知道root的密码也是不能通过ssh进入系统。其实这次就是高春晖曾经把root密码告诉给那个家伙过,才会发生这次事件,另外建议,另外还加了不少安全措施,并设置自动每天发送log记录到制定邮箱。。。。。。
这些做完,总算松了口气,看来安全还是很重要,幸亏这次这家伙是认识的人,还没破坏什么,要不然真的不知怎么对付了。
由 frank 发表于 5:53 AM
December 3, 2003
Linux+Apache+Mysql+PHP典型配置
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明
http://www.5ilinux.com/lamp01.html
--------------------------------------------------------------------------------
关键字:apache+mysql+php apache mysql php 配置 lamp 服务器 web
Linux+Apache+Mysql+PHP典型配置
调试环境:Redhat9.0 Apache1.3.29 Mysql3.23.58 PHP4.3.4
Linux系统的安装我就不讲了,这是基本功,其实这篇文章在类似Redhat的其他linux也应该通用,大家只要掌握我提供的方法就行。记得安装Redhat9。0的时候不要安装系统默认的apache,mysql和php以及相关的软件。已经安装的请用rpm -e * 删除已经安装的包。
1.安装Mysql3.23.58
其实老实说直接安装Mysql官方网站提供的rpm包也是一个比较可行的办法,他的官方网站的rpm包的提供基本跟tar包发行是同步的,这点我比较喜欢,至少安装rpm包的在后面的调试中不会出现mysql库文件找不到的情况。但这里还是有必要讲一下自定义安装的步骤,毕竟网友自定义安装的还说挺多的。
软件获取:http://www.mysql.com/downloads/index.html
安装步骤:
tar zxvf mysql-3.23.58.tar.gz
cd mysql-3.23.58
./configure --prefix=/usr/local/mysql --sysconfdir=/etc --localstatedir=/var/lib/mysql
make
make install
#prefix=/usr/local/mysql mysql安装的目标目录
#sysconfdir=/etc my.ini配置文件的路径
#localstatedir=/var/lib/mysql 数据库存放的路径
安装完以后要初始化数据库,当然你是升级的话不用做这步;
/usr/local/mysql/bin/mysql_install_db
如果系统没有mysql这个用户的话,最好做以下这步:
useradd -M -o -r -d /var/lib/mysql -s /bin/bash -c "MySQL Server" -u 27 mysql
然后我启动mysql
/usr/local/mysql/bin/safe_mysqld &
ok,先看看mysql能否正常工作
mysql -uroot mysql
一般情况下都是不能正常链接数据库,错误提示一般为:
ERROR 2002: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
其实网上大家问的最多的都是整个问题,说什么链接不到mysqld.sock,其实大家不妨看看mysql的错误日志就明白怎么回事,我这里的错误日志是在
/var/lib/mysql/*.err 你会发现mysql只所以不能启动,是因为/var/lib/mysql的权限不允许mysql服务访问,英文mysql默认是调用mysql用户来启动服务的,好了,既然知道是什么原因找到不能启动,那就简单了。我们只要
chown -R mysql:mysql /var/lib/mysql 就行,如果还是启动不了,再慢慢调试权限,反正一般启动不了都是权限的问题。
如果大家还是不能启动不了的话,那就用我的比较繁琐的权限的设置,反正我每次都是这么做的,一般不会有问题,见下:
chown -R root /usr/local/mysql
chgrp -R mysql /usr/local/mysql
chown -R root /usr/local/mysql/bin
chgrp -R mysql /usr/local/mysql/bin
chgrp -R mysql /var/lib/mysql
chmod 777 /var/lib/mysql
chown -R root /var/lib/mysql/mysql
chgrp -R mysql /var/lib/mysql/mysql
chmod 777 /var/lib/mysql/mysql
chown -R root /var/lib/mysql/mysql/*
chgrp -R mysql /var/lib/mysql/mysql/*
chmod 777 /var/lib/mysql/mysql/*
chmod 777 /usr/local/mysql/lib/mysql/libmysqlclient.a
做完上面的步骤,然后把你编译目录的一个脚本COPY过去
cp support-files/mysql.server /etc/rc.d/init.d/mysqld
chkconfig --add mysqld
用ntsysv设置使mysql每次启动都能自动运行。
好了,至此mysql安装完毕,你可以这样起动你的mysql服务
/etc/rc.d/init.d/mysqld start
下面这步比较关键,
ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql
ln -s /usr/local/mysql/include/mysql /usr/include/mysql
大家可以不做这步,大可以在编译其他软件的时候自定义myslq的库文件路径,但我还是喜欢把库文件链接到默认的位置,这样你在编译类似PHP,Vpopmail等软件时可以不用指定mysql的库文件地址。
2.安装Apache1.3.29。我没有选择安装Apache2.0是我对他还是不放心,因为网上最新公布的apache的漏洞基本上是针对2.0,当然大家可以自己选择安装相应的版本。我这里讲的都是采用DSO动态编译的方法编译Apache.
至于有关apache的编译方法,可以参考我以前的文章《apache的静态/动态编译在apache+php+mysql的应用》 http://www.5ilinux.com/apache01.html
tar zvxf apache_1.3.29.tar.gz
cd apache_1.3.29
修改src/include/httpd.h 增大最大线程数
#define HARD_SERVER_LIMIT 256
改成
#define HARD_SERVER_LIMIT 2560
保存退出编译apache
./configure --prefix=/usr/local/apache --enable-module=so --enable-module=rewrite --enable-shared=max --htdocsdir=/var/www &&
make &&
make install
#这里我们通过enable-module参数告诉设置脚本,我们需要启动so和rewrite模块,so模块是用来提DSO支持的apache核心模块,而rewrite模块则是用意实现地址重写的模块,由于rewrite模块需要DBM支持,如果在初次安装时没有编译进apache,以后需要用到时需要重新编译整个apache才可以实现。为此除非你可以确定以后不会用到rewrite模块,否则还是建议你在第一次编译的时候把rewrite模块编译好。
enable-shared=max 这个参数的作用时编译apache时,把除了so以外的所有apache的标准模块都编译成DSO模块。而不是编译进apache核心内。
好了安装apache很简单的哦,启动apache看看
/usr/local/apache/bin/apachectl start
然后用ie看http://你的服务器地址。应该能看到熟悉的apache羽毛标志。
3.安装PHP4.3.4
软件获取:http://www.php.net/downloads.php
tar zvxf php-4.3.4.tar.gz
cd php-4.3.4
./configure \
--prefix=/usr/local/php \
--with-mysql=/usr/local/mysql \
--enable-force-cgi-redirect \
--with-freetype-dir=/usr \
--with-png-dir=/usr \
--with-gd --enable-gd-native-ttf \
--with-ttf \
--with-gdbm \
--with-gettext \
--with-iconv \
--with-jpeg-dir=/usr \
--with-png \
--with-zlib \
--with-xml \
--enable-calendar \
--with-apxs=/usr/local/apache/bin/apxs
make
make install
#我这里由于服务器需要用到GD库,所以加了一些支持GD的编译参数 ,GD直接用了redhat自带的GD库,大家没有安装的话可以从安装盘安装,注意除了安装GD以外,还要安装libjpeg,libpng等库文件。另外--with-mysql=/usr/local/mysql指向你安装mysql的路径。--with-apxs指向apache的apxs文件的路径。
vi /usr/local/apache/conf/httpd.conf
查找<IfModule mod_mime.c>
在此范围添加
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
然CPOPY PHP的配置文件
cp ../php4.3.4/php.ini.dist /usr/local/php/lib/php.ini
修改php.ini文件
register_globals = On
ok!重新启动一下apache服务器
/usr/local/apache/bin/apachectl restart
然后写个php测试页info.php:内容如下
<?php
phpinfo();
?>
正常的话,应该能看到php的信息了,恭喜你的Apche+Mysql+PHP安装成功。
好了写了这么多,希望对大家有所帮助!!!
参看文档:
apache的静态/动态编译在apache+php+mysql的应用 http://www.5ilinux.com/apache01.html
作者:张微波
2003年12月3日于北京
由 frank 发表于 5:50 AM
November 18, 2003
apache服务器实现用户验证
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明
http://www.5ilinux.com/apache03.html
--------------------------------------------------------------------------------
关键字 apache htpasswd .htaccess AllowOverride AuthConfig 用户验证
apache服务器实现用户验证
apache服务器已经内置用户验证机制,大家只要适当的加以设置,便可以控制网站的某些部分要用户验证。大家只要跟着我一步步做下来就应该能轻松实现用户验证。
前期准备,必须已经安装apache,如果还没安装,或者对安装很模糊的话,请先预习http://www.5ilinux.com/apache01.html
第1步:
我们在/var/www(apache的主页根目录)下建立一个test目录
mkdir /var/www/test
第2步
然后我们编辑httpd.conf
添加
Alias /test"/var/www/test"
Options Indexes MultiViews
AllowOverride AuthConfig #表示进行身份验证
Order allow,deny
Allow from all
#AllowOverride AuthConfig 表示进行身份验证 这是关键的设置
第3步
在/var/www/test创建.htaccess文件
vi /var/www/test/.htaccess
AuthName "frank share web"
AuthType Basic
AuthUserFile /var/www/test/.htpasswd
require valid-user
#AuthName 描述,随便写
#AuthUserFile /var/www/test/.htpasswd
#require valid-user 或者 require user frank 限制是所有合法用户还是指定用户
#密码文件推荐使用.htpasswd,因为apache默认系统对“.ht”开头的文件默认不允许外部读取,安全系数会高一点哦。
第4步
就是创建apache的验证用户
htpasswd -c /var/www/test/.htpasswd frank
#第一次创建用户要用到-c 参数 第2次添加用户,就不用-c参数
如果你们想修改密码,可以如下
htpasswd -m .htpasswd frank
第5步:
ok,重启apache服务,然后访问 http://你的网站地址/test 如果顺利的话,应该能看到一个用户验证的弹出窗口,只要填入第4步创建的用户名和密码就行
后话,为了服务器的性能,一般不推荐使用AllowOverride AuthConfig或者AllowOverride ALL,因为这会使服务器会不断的去寻找.htaccess,从而影响服务器的效能,一般我们把一些后台管理界面或者其他特殊目录可能需要加验证这个需求。
由 frank 发表于 5:46 AM
November 17, 2003
Samba3.0轻松搞定PDC域服务器
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明
http://www.5ilinux.com/samba01.html
Fedora Core 1服务器调试手记<二>
关键字 linux samba fedora smb PDC smbclient smbpasswd 域控制器
Samba3.0轻松搞定PDC域服务器
前面我们已经讲了关于samba服务器如何充当一个局域网的文件服务器,以满足平时的工作需要,在看本文档之前,大家最好先看看那篇文档《Samba3.0服务器实战调试》(http://www.5ilinux.com/samba.html),大家只有领会了那篇文档以后,再来看用samba实现PDC就不死很困难了。
其实早在samba2.2版本已经能非常好的支持samba做PDC(主域控制器),只不过到了3.0对域的支持更加好,到现在为止最新的版本3.0,已经支持AD,并且支持Microsoft Kerberos 认证、完全重写和可配置的认证子系统等新功能。
好了,我们来开始今天的任务,我们今天只是实现简单的域控制器PDC的建立,至于他支持的AD和Kerberos等功能大家慢慢的自己去研究,我也不是很懂哦:)
1。安装samba,这个很简单了,如果你是fedora,就可以从光盘直接安装samba的rpm包。
rpm -ivh samba-3.0.0-15.i386.rpm
大家也可以直接到samba的官方网站(http://www.samba.org)去下载最新的软件包
或者下载最新的tar包,http://us1.samba.org/samba/ftp/samba-3.0.0.tar.gz
那就最好按下面的方法编译
tar zvxf samba-3.0.0.tar.gz
cd samba-3.0.0
./configure \
--prefix=/usr \
--bindir=/usr/bin \
--sbindir=/usr/sbin \
--libexecdir=/usr/libexec \
--datadir=/usr/share/samba \
--sysconfdir=/etc/samba \
--localstatedir=/usr/local/samba/var \
--libdir=/usr/lib \
--with-lockdir=/var/locks/samba \
--with-swatdir=/usr/share/samba/swat \
--with-codepagedir=/etc/samba/codepages \
--with-configdir=/etc/samba \
--with-smbwrapper \
--with-automount \
--with-smbmount \
--with-pam \
--with-pam_smbpass \
--with-winbindmake
make intall
ok!安装完以后,下面才是我们的重点,修改/etc/samba/smb.conf,大家最好在原来的基础上修改。
[global]
workgroup = bmit
netbios name = proxy
server string = Samba PDC running %v
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_SNDBUF=8192 SO_RCVBUF=8192# 这里的workgroup = bmit就代表bmit域,当然如果用bmit.com那就更加规范,但为了客户端输入的方便,还是直接bmit的好,netbios name = proxy表示这台服务器的netbios名,socket options选项设置控制 TCP/IP 性能。所显示的设置就可以与基于 Linux 的系统一起很好地工作了。
os level = 64
preferred master = yes
local master = yes
domain master = yes#domain master 选项是一个“开关”,通告 Samba 将成为主域控制器。(local master browser)是维护局域网机器列表的服务器被称为本地主浏览器。
security = user
encrypt passwords = yes
domain logons = yes
log file = /var/log/samba/log.%m
log level = 2
max log size = 50
hosts allow = 127.0.0.1 192.168.1.0/255.255.255.0#这里我们还是使用user验证方式,不要悬在所谓的domain,至于hosts allow大家可以根据自己的需求写那些网段可以访问你的服务器,或者索性不写也行。
logon home = \\%L\%U\.profile
logon drive = H:
logon path = \\%L\profiles\%U
logon script = netlogon.bat#以上是漫游设置和登录脚本,logon path = \\%L\profiles\%U,会于下面我们要说的 [profiles] 共享成对应关系。
[homes]
comment = Home Directories
browseable = no
writeable = yes[profiles]
path = /home/samba/profiles
writeable = yes
browseable = no
create mask = 0600
directory mask = 0700[netlogon]
comment = Network Logon Service
path = /home/netlogon
read only = yes
browseable = no
write list= root以上是关于共享的手腕子,其中profile是用来存放每个登录用户的设置文件,以便用户以后登录可以从服务器读取以前的桌面设置,netlogon是用来存放登录脚本的,所以要限制写的权限,假设这里只有root用户可以有权限。
至于其他共享,完全可以参照《Samba3.0服务器实战调试》(http://www.5ilinux.com/samba.html)这篇文章共享设置,我就不再重复讲了
接着是将用户和机器帐户添加到域控制器。
先建立创建了下列各组以及创建两个必要目录,并设置正确的所有权。
groupadd admin
groupadd machines
mkdir -m 0775 /home/netlogon
chown root.admins /home/netlogon
mkdir /home/samba /home/samba/profiles
chown 1757 /home/samba/profiles
对上述目录设置正确的权限和所有权是保护服务器的关键一步哦 :)
手工添加机器帐号
比如我的客户端的机器名是ibm240,那么我们可以这么做
useradd -g machines -d /dev/null -c "machine id" -s /bin/false ibm240$
passwd -l ibm240$
输入两遍密码;
不要忘记标上美元符号;这是必需的,它将该项标识为信任帐户
创建 linux 帐户后,我们现在可以将该机器添加到 /etc/samba/smbpasswd
smbpasswd -a -m ibm240
当然你也可以让系统自动添加机器帐号,用下面的方法,不过大家最好先试手动添加,成功后再试验系统自动添加
自动添加只要在[global]添加
add user script = /usr/sbin/useradd -d /dev/null -g machines -s /bin/false -M %u
添加用户帐号
首先添加的是root帐户,把root加入到smb帐户中
smbpasswd -c root
这一步很重要,因为后面的加入域要用到有管理员的帐号加入域的权限,否则用普通用户好像不能顺利加入域
然后添加普通用户
useradd frank
passwd frank
smbpasswd -a frank
为了方便以后的管理,最好smb的用户密码和unix系统密码一样,这样我们还可以用到samba的密码同步功能
#下面的选项语句将允许用户从 Windows 客户机上更改他们的 Samba 密码,这样会随即更新他们的 UNIX 密码以与新的 Samba 项相匹配。但是如果更改了 UNIX 密码,那么同一技术不能逆向工作;必需手工同步更改 Samba 密码。也是在[global],初学者可以先不做这个工作。
unix password sync = yes
passwd program = /usr/bin/passwd %u
passwd chat = *New*UNIX*password* %n\n *Retype*new*UNIX*password* %n\n *Enter*new*UNIX*password* %n\n *Retype*new*UNIX*password* %n\n *passwd: *all*authentication*tokens*updated*successfully*#上述语句中唯一值得一提的是 passwd chat 选项,不管这里如何显示它,都要将它输入成一行。还要注意有些选项使用“password”,而有些使用“passwd”。
Samba PDC 的配置就这样完成了。剩下唯一要做的是将客户机加入到域中。记得重启samba服务哦!
客户端的设置,这里由于条件的限制,我只试验了windows2000客户端加入域,至于winxp和win98的加入大家自己去试验。
(win200机器最好先重启一下,可以避免一些不必要的问题)然后转至 控制面板 -> 网络-> 网络标示,如果机器目前被配置在 工作组 选项下,那么选中 域 单选按钮并输入域名bmit。
现在,通过使用用户名 root 和相应的密码登录到域。必需初始化服务器和客户机机器之间的“秘密”。从此时起,任何已认证的用户都可以从这台机器登录。
应该出现一个欢迎您来到 XX域的消息恭喜你已经成功将samba配置成PDC
据说xp加入samba建立的域有点复杂,我没试验过,大家有兴趣的话,最好去samba的老家看看文档,好像是要设置安全选项,并修改注册表,好麻烦哦,幸亏我没有xp :)
相关参考文档
Samba3.0服务器实战调试 http://www.5ilinux.com/samba.html
将 Samba 用作 PDC http://www-900.ibm.com/developerWorks/cn/cnedu.nsf/linux-onlinecourse-bytitle/60281E1423A2B876C8256D04001C9374?OpenDocument
作者:张微波
2003年11月17日晚于北京
由 frank 发表于 5:41 AM
November 12, 2003
Samba3.0服务器实战调试
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明
http://www.5ilinux.com/samba.html
Fedora Core 1服务器调试手记<一>
关键字 samba fedora smb smbclient smbpasswd
Samba3.0服务器实战调试
fedora预装的samba已经是samba-3.0.0-15,功能已经非常强大了,今天我们调试的重点不是samba3.0的新功能,我们还是先来实现他的基本功能,文件共享服务,至于域控制器功能我会在以后的调试手记中阐述。
我们今天要实现的环境是,假如公司有财务,技术,领导3个部门,我们分别为3个部门建立3个用户组为caiwu,network,lingdao;
三个部门里各有2个用户,我们建用户分别为caiwu01,caiwu02,network01,network02,lingdao01,lingdao02
然后我们分别就公司的具体情况建立相应的目录及访问权限,通过以下的例子,希望大家能在平时的工作中灵活的应用samba的安全权限来设置你们的samba文件服务器。
1。首先服务器采用用户验证的方式,每个用户可以访问自己的宿主目录,并且只有该用户能访问宿主目录,并具有完全的权限,而其他人不能看到你的宿主目录。
2。建立一个caiwu的文件夹,希望caiwu组和lingdao组的人能看到,network02也可以访问,但只有caiwu01有写的权限。
3。建立一个lindao的目录,只有领导组的人可以访问并读写,还有network02也可以访问,但外人看不到那个目录
4。建议一个文件交换目录exchange,所有人都能读写,包括guest用户,但每个人不能删除别人的文件。
5。建议一个公共的只读文件夹public,所有人只读这个文件夹的内容。
好,我们先来前期的工作
#groupadd caiwu
#groupadd network
#groupadd lingdao
#useradd caiwu01 -g caiwu
#useradd caiwu02 -g caiwu
#useradd network01 -g network
#useradd network02 -g network
#useradd lingdao01 -g lingdao
#useradd lingdao02 -g lingdao
然后我们使用smbpasswd -a caiwu01的命令为6个帐户分别添加到samba用户中
#mkdir /home/samba
#mkdir /home/samba/caiwu
#mkdir /home/samba/lingdao
#mkdir /home/samba/exchange
#mkdir /home/samba/public
我们为了避免麻烦可以在这里把上面所有的文件夹的权限都设置成777,我们通过samba灵活的权限管理来设置上面的5点要求。
以下是我的smb.conf的配置文件
[global]
workgroup = bmit
#我的网络工作组
server string = Frank's Samba File Server
#我的服务器名描述
security = user
#使用用户验证机制
encrypt passwords = yes
smb passwd file = /etc/samba/smbpasswd
#使用加密密码机制,在win95和winnt使用的是明文其他的基本上可以按照默认的来。
[homes]
comment = Home Directories
browseable = no
writable = yes
valid users = %S
create mode = 0664
directory mode = 0775#homes段满足第1条件
[caiwu]
comment = caiwu
path = /home/samba/caiwu
public = no
valid users = @caiwu,@lingdao,network02
write list = caiwu01
printable = no#caiwu段满足我们的第2要求
[lingdao]
comment = lingdao
path = /home/samba/lingdao
public = no
browseable = no
valid users = @lingdao,network02
printable = no#lingdao段能满足我们的第3要求
[exchage]
comment = Exchange File Directory
path = /home/samba/exchange
public = yes
writable = yes#exchange段基本能满足我们的第4要求,但不能满足每个人不能删除别人的文件这个条件,即使里设置了mask也是没用,其实这个条件只要unix设置一个粘着位就行
chmod -R 1777 /home/samba/exchange
注意这里权限是1777,类似的系统目录/tmp也具有相同的权限,这个权限能实现每个人能自由写文件,但不能删除别人的文件这个要求
[public]
comment = Read Only Public
path = /home/samba/public
public = yes
read only = yes#这个public段能满足我们的第5要求。
到此为止我们的设置已经能实现我们的共享文件要求,记得重启服务哦
#/etc/rc.d/init.d/smb restart
如果大家没有winodws,不妨先用samba的cilent端命令来测试一下
命令的用法我在这里只举几个例子,具体的大家去试验
smbclient -L 服务器ip -N
guest帐户查询你的服务器的samba共享情况,你可以检验一下是否lingdao目录时候能被guest帐户看到,应该是看不到的,当然你也可以以某个用户的名义查看
smbclient -L 服务器ip -U caiwu01
系统会提示密码,只要输入smb密码就行。
smbclient //服务器ip/caiwu -U caiwu01
#以caiwu01用户的名义登录caiwu目录
smbmount //服务器ip/caiwu /mnt/caiwu -o username=caiwu01
#把服务器的财务目录映射到本地的/mnt/caiwu目录
关于samba的其他用法我会在后续的文章中继续,请大家等待!
参考资料
Samba 配置 http://www.linuxfocus.org/ChineseGB/March2002/article177.shtml
O'Reilly 线上书籍:http://www.oreilly.com/catalog/samba/chapter/book/index.html
Samba3.0轻松搞定PDC域服务器 http://www.5ilinux.com/samba01.html
作者:张微波
2003年11月12日于北京
由 frank 发表于 5:38 AM
August 6, 2003
MYSQL的master/slave数据同步配置
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明
http://www.5ilinux.com/mysql01.html
MYSQL的master/slave数据同步配置
我的测试环境.基本上数据是瞬间同步,希望对大家有帮助
redhat 9.0
mysql3.23.57
mysql数据同步备份
A服务器: 192.168.1.2 主服务器master
B服务器: 192.168.1.3 副服务器slave
A服务器设置
#mysql –u root –p
mysql>GRANT FILE ON *.* TO backup@192.168.1.3 IDENTIFIED BY ‘1234’;
mysql>\exit
上面是Master开放一个账号backup密码1234给IP:192.168.1.3有档案处理的权限
mysqladmin –u root –p shutdown
备份Master所有数据库..通常都用tar指令.
#tar –cvf /tmp/mysql.tar /var/lib/mysql
注意:tar的时候,MySQL是要在stop情况下
在A机器上修改/etc/my.cnf
在[mysqld]区段内加入参数
log-bin
server-id=1
sql-bin-update-same
binlog-do-db=vbb
重启A服务器mysql
此时因为有加入log-bin参数,因此开始有index产生了,在/var/lib/mysql目录下有.index档案纪录数据库的异动log.
B服务器设置
设定/etc/my.cnf
在[mysqld]区段加入
master-host=192.168.1.2
master-user=backup
master-password=1234
master-port=3306
server-id=2
master-connect-retry=60 预设重试间隔60秒
replicate-do-db=vbb 告诉slave只做vbb数据库的更新
log-slave-updates
将A上的mysql.tar copy到B上
用ftp传B的/tmp
9.解压缩
#cd /var/lib/
状况测试
1.A跟B网络及服务都正常情况下,由A端变化数据后,到B端浏览数据,检视是否有进行replication?!
2.模拟B当机,或是B不一定需要一直跟A有连接.
将由A端变化数据后,到B端浏览数据,B点应该是没有数据变化的
#tar xvf /tmp/mysql-snapshot.tar
#chown –R mysql:mysql mysql
1重启B服务器的mysql
这时在/var/lib/mysql目录会出现master.info,此档案纪录了Master MySQL server的信息.
状况测试
1.A跟B网络及服务都正常情况下,由A端变化数据后,到B端浏览数据,检视是否有进行replication?!
2.模拟B当机,或是B不一定需要一直跟A有连接.
将由A端变化数据后,到B端浏览数据,B点应该是没有数据变化的
作者:张微波
2003-08-06 于北京
由 frank 发表于 5:34 AM
July 5, 2003
Redhat linux 9下让PHP支持java类
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明
http://www.5ilinux.com/apache02.html
Redhat linux 9下让PHP支持java类
由于公司业务的需要,最近要在linux下的php支持java类,故把我的调试笔记贴出来,希望对大家有用。
系统环境:
Redhat 9.0
Apache-1.3.27
Mysql3.23-54a-11
Php-4.32
j2sdk1.4.1_03
安装配置:
1.mysql使用的是redhat9自带的rpm包,不介绍安装了,jdk的安装也很简单,我们把jdk安装到/usr/java/j2sdk1.4.1_03 并在/etc/profile设置jdk环境参数。
2.编译安装apache
tar zvxf apache_1.3.27.tar.gz
cd apache_1.3.27
./configure –prefix=/usr/local/apache –enable-module=so –enable-shared=max
make
make install
3.编译安装php
tar zvxf php-4.3.2.tar.gz
cd php-4.3.2
./configure –prefix=/usr/local/php –with-mysql \
--with-apxs=/usr/local/apache/bin/apxs \
--with-java=/usr/java/j2sdk1.4.1_03
make
make install
修改/usr/local/apache/conf/httpd.conf
查找
在此范围添加
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
4.配置php.ini
cp php.ini.dist /usr/local/php/lib/php.ini
vim php.ini
修改如下内容:
[Java]
java.class.path = /usr/local/php/lib/php/php_java.jar
java.home = /usr/java/j2sdk1.4.1_03
java.library = /usr/java/j2sdk1.4.1_03/jre/lib/i386/libjava.so
java.library.path =/usr/local/php/lib/php/extensions/no-debug-non-zts-20020429
extension_dir = /usr/local/php/lib/php/extensions/no-debug-non-zts-20020429
extension=java.so
保存退出。
cd /usr/local/php/lib/php/extensions/no-debug-non-zts-20020429
ln –s java.so libphp_java.so 这一步很重要哦!
设置环境变量:
export LD_LIBRARY_PATH=/usr/java/j2sdk1.4.1_03/jre/lib/i386:/usr/java/j2sdk1.4.1_03/jre/lib/i386/server
ok!重启一下apache
/usr/local/apache/bin/apachectl start
测试一下,写个测试页test.php
<?
$system=new Java("java.lang.System");
//demonstrate property access
print 'Java version='.$system->getProperty('java.version').' <br>';
?>
正常的话页面应该能显示:Java version=1.4.1_03
作者:张微波
2003-07-05 于北京
由 frank 发表于 5:31 AM
June 30, 2003
apache的静态/动态编译在apache+php+mysql的应用
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明
http://www.5ilinux.com/apache01.html
Fedora Core 1服务器调试手记<二>
apache的静态/动态编译在apache+php+mysql的应用
我想大家有不少都成功实现apache+php+mysql,网上的文章也有不少,但我发现不少文章都是抄来抄去,并且没有说明白编译的方式,有的索性apache1.3的编译方法原封不动的搬过来套在apache2.0,显然误导一些菜鸟
!
我今天就以apache+mysql+php说一下静态编译和DSO动态编译的区别,我会分别拿apache1.3.27和apache2.0.46
说明,因为两个版本的编译命令是有所区别的。
系统和所需软件:
Redhat9.0
apache:1.3.27 和 2.0.46
php: 4.3.2
mysql:4.0.13
1。首先来安装mysql,这不是我们的重点,所以关于mysql的安装配置我就很快过去了
tar zvxf mysql-4.0.13.tar.gz
cd mysql-4.0.13
./configure --prefix=/usr/local/mysql --sysconfdir=/etc --localstatedir=/var/lib/mysql &&
make &&
make install
安装完成!
然后初始化数据库
/usr/local/mysql/bin/mysql_install_db
设置权限:
chown -R root /usr/local/mysql
复制配置文件;
cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf
启动mysql:
/use/local/mysql/bin/mysqld_safe --user=root &
修改密码:初始的root密码是空的
/usr/local/mysql/bin/mysqladmin -u root -p password 1234
enter password:
把密码修改为1234,由于初始密码为空,所以enter password直接回车就行
测试一下新的密码:
mysql -u root -p mysql
enter password:1234
如果顺利的话就能进入mysql。
好了mysql就讲这么多,有什么问题也不要问我,我对mysql不是很熟悉。
好了下面是我们的重头戏,我将分别通过静态和动态DSO编译apache+php
至于什么是静态,什么是DSO动态我这里就不多讲了,本人个人倾向大家用DSO动态编译。
首先是apache1.3.29+php4.3.4+mysql4.0.13的静态编译
apache第一次编译,并不要安装,因为php的编译需要apache至少已经编译过一次
tar zvxf apache_1.3.27.tar.gz
cd apache_1.3.27
./configure --prefix=/usr/local/apache
编译php
tar zvxf php4.3.4.tar.gz
cd php4.3.4
./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql \
--with-apache=../apache_1.3.27 &&
make &&
make install
第二次编译安装apache:
cd ../apache_1.3.29
./configure --prefi=/usr/local/apache \
--activate-module=src/modules/php4/libphp4.a &&
make &&
make install
cp ../php4.3.4/php.ini.dist /usr/local/php/lib/php.ini
修改/usr/local/apache/conf/httpd.conf
查找
在此范围添加
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
注意:apache和php的源码包在同一个目录,--with-apache=../apache_1.3.27是指向源码解压的目录
ok!静态编译完成,大家只要启动一下服务器
/usr/local/apache/bin/apachectl start
然后些个php测试页info.php:内容如下
<?php
phpinfo();
?>
正常的话,应该能看到php的信息了,恭喜你静态编译成功!!!
我们再来讲讲DSO动态编译的方法:
首先编译安装apache
tar zvxf apache_1.3.29
cd apache_1.3.29
./configure --prefix=/usr/local/apache --enable-module=so \
--enable-module=rewrite --enable-shared=max &&
make &&
make install
so模块用来提供DSO支持的apachehe核心模块,rewrite是地址重写的模块,如果不需要可以不编译
enable-shared=max是指除了so以外的所有标准模块都编译成DSO模块。
然后编译php
tar zvxf php4.3.4.tar.gz
cd php4.3.2
./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql \
--with-apxs=/usr/local/apache/bin/apxs &&
make &&
make install
然后修改httpd.conf,方法同静态编译的方法
OK,DSO动态编译就完成了,大家应该看出明堂来了吧,中间有什么区别应该看的很清楚了吧!!!
接下来我们讲apache2.0.46+php4.3.2的编译方法,我这里只讲DSO动态编译,静态编译实在没有时间测试了,
留给大家自己去试了。
一样现编译安装apache
tar zvxf httpd-2.0.46.tar.gz
cd httpd-2.0.46
./configure --prefix=/usr/local/apache2 --enable-so \
--enable-mods-shared=most &&
make &&
make install
大家注意了--enable-so相当与1.3.27的--enable-module=so,而--enable-mods-shared=most又等同与以前的
--enable-shared=max 这些区别大家要注意了,否则编译错了不要找我
然后还是编译PHP
tar zvxf php4.3.2.tar.gz
./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql \
--with-apxs2=/usr/local/apache2/bin/apxs &&
make &&
make install
注意这里是apxs2!!!
修改httpd.conf与1.3.27也有所不同,大家寻找Add Type application/x-tar .tgz 在下面添加
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
另外要显示中文的话,
修改:
AddDefaultCharset gb2312
启动一下apache
/usr/local/apache2/bin/apachectl start
用那个info.php测试一下,应该不会有多大问题哦!!!
好了写了这么多,希望对大家有所帮助!!!
作者:张微波
2003年6月30日于北京
由 frank 发表于 5:23 AM | 回复 (0) | 引用
June 4, 2003
调试socks5服务器
调试socks5服务器
最近有不少网友老是问我一些QQ如何利用代理的事。其实是很简单的,通过代理猎手寻找一些socks5代理便可。刚好最近在学习linux系统,于是突然想到用RH9来做个socks5代理服务器。ok!说干就干
1。先在北大天网搜索一下socks5的安装包,发现一大堆,最新版本是socks5-v1.0r11.tar.gz,于是下载到我的RH9的服务器上。
2。解压缩软件包
#tar xvfz socks5-v1.0r11.tar.gz
3.开始编译
#cd socks5-v1.0r11
#./configure --with-threads
#make
#make install
4.建立/etc/socks5.conf,其实在软件包里已经有现成的examples
#cd examples
#cp socks5.conf.singlehomed /etc/socks5.conf (我们挑选一个最简单的配置文件)
默认配置就是
# A Socks5 Config file for a normal, single homed server
permit - - - - - -
这个配置文件是允许任何人都可以使用这个socks5代理,并不需要验证
如果想限制只是某个IP段(192.168.0.0/255.255.255.0)可以访问,可以改成
permit - - 192.168.0. - - -
或者只允许某个IP(192.168.0.10)可以访问使用,可以改成
permit - - 192.168.0.10 - - -
5.ok 运行一下socks5 -t 启动socks5服务,然后用QQ测试一下代理是否生效,记住默认端口是1080
反正我是在FTP软件和QQ上试了 都没问题。
6.如果要停止socks5,只要运行stopsocks -KILL就行,socks5就会停止!
7.使用非默认端口:如果你想让socks5服务启动的时候不启动默认监听端口1080,比如为1234,我们可以运行如下命令
socks5 -b 1234 -t 当然你关掉这个服务,就必须用下面的命令 stopsocks -p 1234 -KILL
8.我们来深入配置一下socks5.conf,使socks5使用用户验证机制
要使用用户验证,首先要建立/etc/socks5.pwsswd文件
内容为:(userA代表用户名。passwdA代表用户userA的密码)
#/etc/socks5.passwd
userA passwdA
userB passwdB
userC passwdC
然后修改/etc/socks5.conf
添加下列语句
auth - - u
或者把:
auth - - -改成auth - - u
添加:
把默认permit - - - - - - 改成permit u - 192.168.0. - - -
即允许来自192.168.0.0/255.255.255.0网段的任何经过用户认证的连接
如果你不想把密码文件存在默认的/etc/socks5.passwd里。想存在自定义的文件,比如/etc/qq.passwd
那就得修改/etc/socks5.conf.添加一项参数
set SOCKS5_PWDFILE /etc/qq.passwd
ok!重启一下服务,这时如果不输入正确的用户名和密码是使用不了socks5代理服务器的,输入正确的用户名和密码便可使用。
以上说的参数,大家可以结合使用,比如限制某个IP段使用socks5服务,而且要使用用户名验证
另外针对/etc/socks5.conf还有一些参数,大家就自己去研究吧
set SOCKS5_BINDINFC 192.168.0.8:1080
忽略ident请求。当客户机没有运行identd时,使用SOCKS5_NOIDENT将降低超时值
set SOCKS5_NOIDENT
指定连接停顿最长时间。超过最大值后,socks5断开连接
set SOCKS5_TIMEOUT 15
socks5将接受SOCKS V4 协议的请求,默认不接受
set SOCKS5_V4SUPPORT
指定同时存在的最大子进程数,Socks5预设为64
set SOCKS5_MAXCHILD 4
作者:张微波
2003年6月4日
由 frank 发表于 5:27 AM | 回复 (0) | 引用
March 21, 2003
Redhat9+ADSL+IPTABLES+DHCPD解决方案
本解决方案要用到服务有 ppp0 , dhcp ,iptables ,squid (其中dhcp和squid可选择不装)
最终实现目标: 服务器redhat用adsl拨号上网,下面局域网的其他机器通过服务器的iptables服务上网,并且基本上网服务都不受影响。如果你的客户端比较多的话,可以选择安装squid服务,使客户端访问网页速度快一点。当然如果你觉的你懒的去配置客户端的TCP/IP设置,那你可以启动DHCP服务。
服务器: redhat9.0 3com905b X 2 中兴的ZXDSL831 北京网通ADSL线路(非包月)
IP地址分配:
redhat服务器:
eth0: 192.168.0.1 255.255.255.0 其他网关,dns等都不要配置(如图),
此网卡用于连接局域网其他机器
eht1: 192.168.1.2 255.255.255.0其他网关,dns等都不要配置(如图),
此网卡用于ADSL拨号用,注意大家千万不要设置成192.168.1.1,因为我的中兴的ADSL有个默认的配置地址就是192.168.1.1
以上我们服务器的两块网卡都是静态设置,而不是大家常说的ADSL网卡要设置成DHCP获取地址。
客户端的IP地址设置我们这里选择DHCP获取。如果你要静态设置,那你可以设置成
192.168.0.2-192.168.0.254之间的ip地址,子网掩码都是255.255.255.0,网关都指向192.168.0.1,DNS指向192.168.0.1或者其他你知道的ISP的DNS地址
好服务器的网卡基本配置完成,现在我们来配置adsl连接,网上有很多人说redhat的自ADSL有问题,可我配置却没有任何问题。我是直接用命令adsl-setup来配置
输入:adsl-setup 进入配置对话
Welcome to the ADSL client setup. First, I will run some checks on
your system to make sure the PPPoE client is installed properly...
The following DSL config was found on your system:
Device: Name:
ppp0 DSLppp0
Please enter the device if you want to configure the present DSL config
(default ppp0) or enter 'n' if you want to create a new one: 建立的拨号连接名字,默认就行
LOGIN NAME
Enter your Login Name (default ): 输入ADSL账号的登陆用户名
INTERFACE
Enter the Ethernet interface connected to the ADSL modem
For Solaris, this is likely to be something like /dev/hme0.
For Linux, it will be ethX, where 'X' is a number.
(default eth1): ADSL设备所绑定的网卡,我们这里是eht1
Do you want the link to come up on demand, or stay up continuously?
If you want it to come up on demand, enter the idle time in seconds
after which the link should be dropped. If you want the link to
stay up permanently, enter 'no' (two letters, lower-case.)
NOTE: Demand-activated links do not interact well with dynamic IP
addresses. You may have some problems with demand-activated links.
Enter the demand value (default no): 默认就行
DNS
Please enter the IP address of your ISP's primary DNS server.
If your ISP claims that 'the server will provide dynamic DNS addresses',
enter 'server' (all lower-case) here. 注意这里我们不要填写任何DNS地址,后面我们会配置ADSL自动从ISP中获取dns地址
If you just press enter, I will assume you know what you are
doing and not modify your DNS setup.
Enter the DNS information here:
PASSWORD
Please enter your Password: 输入ADSL账号的密码
Please re-enter your Password: 密码验证
USERCTRL
Please enter 'yes' (two letters, lower-case.) if you want to allow
normal user to start or stop DSL connection (default yes): 默认就行
FIREWALLING
Please choose the firewall rules to use. Note that these rules are
very basic. You are strongly encouraged to use a more sophisticated
firewall setup; however, these will provide basic security. If you
are running any servers on your machine, you must choose 'NONE' and
set up firewalling yourself. Otherwise, the firewall rules will deny
access to all standard servers like Web, e-mail, ftp, etc. If you
are using SSH, the rules will block outgoing SSH connections which
allocate a privileged source port.
The firewall choices are:
0 - NONE: This script will not set any firewall rules. You are responsible
for ensuring the security of your machine. You are STRONGLY
recommended to use some kind of firewall rules.
1 - STANDALONE: Appropriate for a basic stand-alone web-surfing workstation
2 - MASQUERADE: Appropriate for a machine acting as an Internet gateway
for a LAN
Choose a type of firewall (0-2): 由于我们要在后面使用iptables,所以选择2
Start this connection at boot time
Do you want to start this connection at boot time?
Please enter no or yes (default no): 我这里不是包月,所以选择no,如果你是包月的话就选yes
** Summary of what you entered **
Ethernet Interface: eth1
User name: username
Activate-on-demand: No
DNS: Do not adjust
Firewalling: MASQUERADE
User Control: yes
Accept these settings and adjust configuration files (y/n)? 选择yes,保存设置.
用adslsetup命令配置好ppp0后,我们在Xwindows下看一下ppp0的配置
注意这里我们把自动从提供商处获取DNS信息选上,这部非常关键,否则到后面即使客户端能上网,本地服务器也看不了网页。
好了到此位置,adsl配置完成,我们用命令adsl-start来激活ADSL连接
基本如果你能ping通外面的IP地址就行了,最多再用nslookup命令来测试一下
DNS是否正常。
只有在确认ADSL连接没问题后,我们才来配置iptables.
修改/etc/sysconfig/iptables(把原有的内容都删除),修改完如下
# Firewall configuration written by lokkit
# Manual customization of this file is not recommended.
# Note: ifup-post will punch the current nameservers through the
# firewall; such entries will *not* be listed here.
*mangle
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
[0:0]-A POSTROUTING -o ppp0 -j MASQUERADE
COMMIT
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
COMMIT
修改/etc/sysctl.conf,把net.ipv4.ip_forward设置成1,如下:
net.ipv4.ip_forward = 1
如此一来,每次你重新启动机器或重新启动网络服务(/etc/init.d/network restart)时就会自动启动ip转发功能!
重起iptables服务:
/etc/rc.d/init.d/iptables restart
iptables -t nat -L -n 看代理规则是否正确,结果如下:
[root@localhost root]# iptables -t nat -L -n
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
cat /proc/sys/net/ipv4/ip_forward 看值是否为1,结果如下:[/b]
[root@localhost root]$ cat /proc/sys/net/ipv4/ip_forward
1
其实到现在如果你的客户段是静态设置ip地址,现在就可以通过服务器共享上网了,如果你还要配置DHCP服务器的话,修改/etc/dhcpd.conf
#Start of /etc/dhcpd.conf
ddns-update-style interim;
ignore client-updates;
subnet 192.168.0.0 netmask 255.255.255.0 {
# --- default gateway
option routers 192.168.0.1;
option subnet-mask 255.255.255.0;
# --- option domain-name-servers ISP's DNS1,ISP's DNS2;
option domain-name-servers 192.168.0.1,202.106.0.20,202.106.148.1;
option time-offset -18000; # Eastern Standard Time
# --- Selects point-to-point node (default is hybrid). Don't change this unless
# -- you understand Netbios very well
# option netbios-node-type 2;
range dynamic-bootp 192.168.0.2 192.168.0.254;
default-lease-time 21600;
max-lease-time 43200;
}
#End of /etc/dhcpd.conf
关于squid的配置我就不讲了,非常简单哦,只不过在配置过程中需要主要配置dns地址。默认使没有的,否则你在adsl没连接的情况下,squid是启动不了的,可参考dhcpd.conf的dns地址。
好了,redhat服务器reboot后,所有windows客户端ipconfig/renew一下幸地址,服务器adsl-start后,一切都ok!什么时候想停止上网,只要在服务器端输入以下命令adsl-stop就可以