LINUXQQ

六月 20, 2008

phpmyadmin取消最大文件限制的更改解决方法

类归于: 乱7八糟 — 标签: — admin @ 12:02 下午

phpmyadmin取消最大文件限制的更改解决方法

用phpmyadmin导入大数据库的时候出现:
No data was received to import. Either no file name was submitted, or the file size exceeded the maximum size permitted by your PHP configuration. See FAQ 1.16.

首先检查php.ini 配置文件中的以下三个地方,upload_max_filesize, memory_limit 和post_max_size,并且推荐修改的值要稍大于导入的sql数据库文件;修改了以上三个在php.ini中的值以后,重启了php环境,或者重启计算机,再次导入时,虽然phpmyadmin还是显示导入最大限制:20,48KB,但是导入大的数据库文件已经能成功了。

类别: 无分类 |  评论(0) |  浏览(993) |  收藏

iptables配置FTP的主动和被动模式

类归于: 乱7八糟 — admin @ 12:02 下午

iptables配置FTP的主动和被动模式

iptables配置FTP的主动和被动模式

FTP协议有两种工作方式:PORT方式和PASV方式,中文意思为主动式和被动式。

Port模式:ftp server:tcp 21 <——client:dynamic ftp server:tcp 20 ——>client:dynamic

Pasv模式:ftp server:tcp 21 <—-client:dynamic ftp server:tcp dynamic <—-client:dynamic
PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户 端在命令链路上用PORT命令告诉服务器:“我打开了XXXX端口,你过来连接我”。于是服务器从20端口向客户端的XXXX端口发送连接请求,建立一条 数据链路来传送数据。
PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,服务 器在命令链路上用PASV命令告诉客户端:“我打开了XXXX端口,你过来连接我”。于是客户端向服务器的XXXX端口发送连接请求,建立一条数据链路来 传送数据。

#allow all ftp incoming connections
iptables -A INPUT -p tcp –dport 21 -m state –state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp –sport 21 -m state –state NEW,ESTABLISHED -j ACCEPT

# Enable active ftp transfers
iptables -A INPUT -p tcp –dport 20 -m state –state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp –sport 20 -m state –state ESTABLISHED -j ACCEPT

# Enable passive ftp transfers
iptables -A INPUT -p tcp –sport 1024:65535 –dport 1024:65535 -m state –state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp –sport 1024:65535 –dport 1024:65535 -m state –state ESTABLISHED,RELATED -j ACCEPT

RHEL5安装Postfix+CyrusSASL+dovecot

类归于: 乱7八糟 — 标签: — admin @ 12:01 下午

RHEL5安装Postfix+CyrusSASL+dovecot

RHEL5安装Postfix+CyrusSASL+dovecot
2007-06-25 08:56 来源: 赛迪网 作者:skid 网友评论 0 条 浏览次数 77
默认方式安装RHEL5,不选中任何类型服务器(如WEB服务器,开发服务器,虚拟服务器等)

安装postfix

[root@rhel5 ~]# /etc/rc.d/init.d/sendmail stop

关闭 sm-client: [确定]

关闭 sendmail: [确定]

[root@rhel5 ~]# chkconfig sendmail off

[root@rhel5 Server]# rpm -ivh postfix-2.3.3-2.i386.rpm

[root@rhel5 Server]# vi /etc/postfix/main.cf

myhostname = mail.mailidc.cn #设置运行postfix服务的邮件主机的主机名、域名

mydomain = mailidc.cn

myorigin = $mydomain #设置由本机寄出的邮件所使用的域名或主机名称

inet_interfaces = all #设置postfix服务监听的网络接口

mydestination = $myhostname, $mydomain, localhost.$mydomain, localhost #设置可接收邮件的主机名称或域名

mynetworks = 127.0.0.1 #设置可转发哪些网络的邮件

relay_domains = $mydestination #设置可转发哪些网域的邮件

保存文件。

检查postfix的配置:

[root@rhel5 Server]# postconf –n

[root@rhel5 ~]# chkconfig postfix on

將postfix加入到root的组:

# usermod -G root postfix

SMTP认证的配置

安装cyrus-sasl

1、确认cyrus-sasl是否安装了

[root@rhel5 Server]# rpm -qa|grep cyrus

cyrus-sasl-plain-2.1.22-4

cyrus-sasl-lib-2.1.22-4

cyrus-sasl-2.1.22-4

Cyrus-SASL V2的密码验证机制

[root@rhel5 ~]# saslauthd -v

saslauthd 2.1.22

authentication mechanisms: getpwent kerberos5 pam rimap shadow ldap

我们准备用的是shadow的密码验证机制。

vi /etc/sysconfig/saslauthd

MECH=shadow

启动sasl的daemon并测试:

# service saslauthd start

# /usr/sbin/testsaslauthd -u 帐号 -p ‘密码’

0: OK “Success.” =>帐号验证成功了

[root@rhel5 ~]# chkconfig saslauthd on

设置postfix启用SMTP认证

[root@rhel5 Server]# vi /etc/postfix/main.cf

smtpd_sasl_auth_enable = yes

smtpd_sasl_local_domain= ”

smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,

reject_unauth_destination

broken_sasl_auth_clients = yes

smtpd_client_restrictions = permit_sasl_authenticated

smtpd_sasl_security_options = noanonymous

wq!保存

此外,由于当postfix要使用SMTP认证时,会读取/usr/lib/sasl2/smtpd.conf文件的内容以确定所采用的认证方式,所以必须保证/usr/lib/sasl2/smtpd.conf文件的内容是:

pwcheck_method: saslauthd

安装设定dovecot(imap、pop3):

1、确认dovecot是否有安装:

[root@rhel5 ~]# rpm -qa|grep dovecot

dovecot-1.0-1.2.rc15.el5

2、设定用pop3来收取信件:

#vi /etc/dovecot.conf

protocols = pop3 # imap imaps pop3 pop3s 支持的功能

3、启动并测试:

#service dovecot start

# telnet localhost 110

Trying 127.0.0.1…

Connected to localhost.

Escape character is ‘^]’.

+OK dovecot ready.

user 账号

+OK

pass 密码

+OK Logged in.

[root@rhel5 ~]# chkconfig dovecot on

到这里postfix、Cyrus SASL、dovecot就可以正常工作了。

让postfix支持MailScanner、spamassassin、f-prot

A、安装 F-PROT (F-PROT Antivirus for Linux)

从http://files.f-prot.com/files/linux-x86/fp-linux-ws.rpm下载 f-prot

[root@rhel5 ~]# rpm -ivh fp-linux-ws.rpm

B、安装MailScanner

下载http://www.mailscanner.info/file … 4.60.8-1.rpm.tar.gz

版本.rpm.tar.gz

(这里可能会少些perl的套件,出现错误讯息!请照着错误讯息要的rpm装完即可!)

# tar zxvf MailScanner-4.60.8-1.rpm.tar.gz

# cd MailScanner-4.60.8-1

# ./install.sh

C、安装spamassassin

1、确认spamassassin是否有安装:

# rpm -qa |grep spam

如没有安装就安装该包

[root@rhel5 Server]# rpm -ivh spamassassin-3.1.7-4.el5.i386.rpm

2建立Mailscanner支持spamassassin所需的目录:

# mkdir /var/spool/MailScanner/spamassassin

# chmod 700 /var/spool/MailScanner/spamassassin

# chown postfix.postfix /var/spool/MailScanner/spamassassin

3、修改spamassassin的设定档local.cf

可到站点http://www.yrex.com/spam/spamconfig.php自动生成local.cf的内容。

# vi /etc/mail/spamassassin/local.cf

# How many hits before a message is considered spam.

required_hits 5.0

# Whether to change the subject of suspected spam

rewrite_subject 1

# Text to prepend to subject if rewrite_subject is used

subject_tag *****SPAM*****

# Encapsulate spam in an attachment

report_safe 1

# Use terse version of the spam report

use_terse_report 0

# Enable the Bayes system

use_bayes 1

# Enable Bayes auto-learning

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

4、启动spamassassin

# service spamassassin start

MailScanner设定

1修改MailScanner.conf

# vi /etc/MailScanner/MailScanner.conf

Run As User = postfix

Run As Group = postfix

Incoming Queue Dir = /var/spool/postfix/hold

Outgoing Queue Dir = /var/spool/postfix/incoming

MTA = postfix

Virus Scanners = f-prot

Always Include SpamAssassin Report = yes

Use SpamAssassin = yes

Required SpamAssassin Score = 4

SpamAssassin User State Dir = /var/spool/MailScanner/spamassassin

SpamAssassin Install Prefix = /usr/bin

SpamAssassin Local Rules Dir = /etc/MailScanner

2、修改 postfix支持mailscanner

# vi /etc/postfix/main.cf

变更以下的值

header_checks = regexp:/etc/postfix/header_checks

# vi /etc/postfix/header_checks

/^Received:/ HOLD

注意, 在 / 之前不可以有空白!

3、变更目录权限

# chown postfix.postfix /var/spool/MailScanner/incoming

# chown postfix.postfix /var/spool/MailScanner/quarantine

停止postfix执行、启动MailScanner

# service postfix stop

# chkconfig postfix off

# service MailScanner start

设定MailScanner,当MTA = postfix时,会自己启动postfix,如有设定启动postfix的请先将它停掉

4、定期更新病毒定义文件

# crontab -e

0 4 * * * /usr/local/f-prot/tools/check-updates.pl

并将原本在/etc/cron.hourly/update_virus_scanners 删除掉

测试SpamAssassin

发一封邮件带如下内容,接收后,标题应该带有标记:

XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

这样,我们就已经搭建起一个基本的邮件系统。

openwebmail下载地址和配置

类归于: 乱7八糟 — 标签: — admin @ 11:59 上午

安裝 Open Webmail
http://apt.nc.hcc.edu.tw/web/student_server_centos/student_server_centos.html#openwebmail

#以下為安裝 openwebmail 所需要的套件
yum -y install perl-suidperl
rpm -ivh http://apt.sw.be/redhat/el4/en/i386/dag/RPMS/perl-Compress-Zlib-1.41-1.2.el4.rf.i386.rpm
rpm -ivh http://apt.sw.be/redhat/el4/en/i386/dag/RPMS/perl-Text-Iconv-1.4-1.2.el4.rf.i386.rpm

以上套件安裝後,開始進行 Open Webmail 的安裝,下載最新的版本
http://turtle.ee.ncku.edu.tw/openwebmail/download/release/
http://openwebmail.acatysmoof.com/download/release/ (OpenWebMail 2.52 20060502)

將下載的 openwebmail-x.xx.tar.gz mv 到 /var/www 下,再進行解壓縮
cd /var/www
tar -zxvBpf openwebmail-x.xx.tar.gz
mv data/openwebmail html/
rmdir data

修改 auth_unix.pl
vi /var/www/cgi-bin/openwebmail/auth/auth_unix.pl
my $passwdfile_encrypted = ‘/etc/shadow’;
my $passwdmkdb = ‘none’;
備註:
23 、 24 、 25 行修改後的資料如下:
my $passwdfile_plaintext = ‘/etc/passwd’;
my $passwdfile_encrypted = ‘/etc/shadow’;
my $passwdmkdb = ‘none’;

修改 openwebmail.conf
vi /var/www/cgi-bin/openwebmail/etc/openwebmail.conf
mailspooldir 改成 /var/spool/mail
ow_cgidir 改成 /var/www/cgi-bin/openwebmail
ow_htmldir 改成 /var/www/html/openwebmail
default_iconset default → default_iconset Cool3D.Chinese.Traditional #預設中文按鈕

在後面新增
default_language zh_TW.Big5 #設定語系為 Big5
spellcheck /usr/bin/aspell -a -S -w “-” -d @@@DICTIONARY@@@ -p @@@PDICNAME@@@ #拼字檢查
spellcheck_pdicname .aspell_words #拼字檢查
enable_sshterm no #禁止使用 open webmail 以ssh登入主機
enable_changepwd no #如果禁止使用 open webmail 變更密碼,才需要加上一行

修改使用者寄信的預設簽名檔
<default_signature>
修改您想要呈現的簽名檔
</default_signature>
儲存檔案

執行以下指令
/var/www/cgi-bin/openwebmail/openwebmail-tool.pl –init

如果出現要修改 /var/www/cgi-bin/openwebmail/etc/dbm.conf 的內容,請看以下內容修正

編輯一個新的檔案 dbm.conf
vi /var/www/cgi-bin/openwebmail/etc/dbm.conf #加入以下三行內容,如果已經有dbm.conf此檔案,請修改成以下內容。代碼:
dbm_ext .db
dbmopen_ext .db
dbmopen_haslock no

儲存檔案

再一次執行以下指令
/var/www/cgi-bin/openwebmail/openwebmail-tool.pl –init

最後進行測試
http://your ip/cgi-bin/openwebmail/openwebmail.pl

在 /etc/logrotate.d/syslog 加入下面的敘述,以便使用輪替式記錄檔:
vi /etc/logrotate.d/syslog

/var/log/openwebmail.log {
postrotate
/usr/bin/killall -HUP syslogd
endscript
}

備註:
Open Webmail 郵件過濾
http://turtle.ee.ncku.edu.tw/~tung/openwebmail/advanced.html
vi /var/www/cgi-bin/openwebmail/etc/defaults/openwebmail.conf

default_filter_badaddrformat no #過濾寄件人地址格式不正確的信件
default_filter_fakedsmtp no #過濾偽造來源端的信件
default_filter_fakedfrom no #過濾偽造寄件人地址的信件
default_filter_fakedexecontenttype no #過濾偽造 EXE 附件型態的信件

以上四個 filter 在 openwebmail.conf.default 中內定是關閉的,如果要啟動他們的功能,將 no 修改為 yes 。

備註:
修改 OpenWebmail
vi /var/www/cgi-bin/openwebmail/etc/defaults/openwebmail.conf

預設圖示
將 default_iconset 後面改成要的圖案

增加校名或注意事項
page_footer
<a href=”%ow_htmlurl%/openwebmail.html” target=”_blank$version %version%
&
<a accesskey=”H” href=”%help_url%” target=”_help”>%help_text%?</a>
/page_footer

Linux下安装OpenWebMail

作者:heiyeluren
博客:
http://blog.csdn.net/heiyeshuwu
时间:2006-11-04

我安装了Fedora Core 1,版本够老的,因为Fedora 6都出来了,呵呵,不过无所谓,我电脑配置破,反正都差不多。默认的Fedora都安装了Sendmail、Apache之类的东东,我也懒得配置Sendmail,那玩意儿太复杂,晕着捏,就简单的配置一个Web前端:OpenWebMail。
我觉得比较合适的两个后端跟前端的组合:Sendmail + OpenWebMail, Qmail + IGENUS
OpemWebMail我就不介绍了,反正就是一个能够支持Sendmail、Qmail的的Web前端,拿Perl写的,支持很多数据库 ,啥DBM、MySQL、PostgreSQL之类的,反正还比较不错。

【下载程序】
我们这里就讲如何安装,下载需要的包和扩展。这些包和扩展OpenWebMail的官方网站都有,并且很全。
OpenWebMail官方网站:http://openwebmail.org/
扩展程序下载地址:http://openwebmail.org/openwebmail/download
基本上最好直接下载RPM包比较简单,它提供的包都是包括FC1 – FC4和Redhat等等版本的,我们需要下载这些扩展:
MIME-Base64-3.01.tar.gz (这个包也可以去search.cpan.org中寻找下载更新版本)
下载地址: http://openwebmail.org/openwebmail/download/packages/MIME-Base64-3.01.tar.gz
perl-Text-Iconv-1.2-fc1.i386.rpm
下载地址: http://openwebmail.org/openwebmail/download/redhat/rpm/packages/fc1/perl-Text-Iconv-1.2-fc1.i386.rpm
perl-Compress-Zlib-1.16-12.i386.rpm
下载地址: http://openwebmail.org/openwebmail/download/redhat/rpm/packages/fc1/perl-Compress-Zlib-1.16-12.i386.rpm
perl-suidperl-5.8.1-92.i386.rpm
下载地址: http://openwebmail.org/openwebmail/download/redhat/rpm/packages/fc1/perl-suidperl-5.8.1-92.i386.rpm
还有我们的主角:
openwebmail-2.52-1.i386.rpm
下载地址: http://openwebmail.org/openwebmail/download/redhat/rpm/release/openwebmail-2.52-1.i386.rpm
上面几个包都在上面的扩展程序中有下载,但是一个Perl处理CGI模块的包上面没有下载,我们去: http://rpm.pbone.net 上面搜索,这是一个RPM Search的网站,我们使用关键字 “Speedy” 我们找到了一堆,我们选择FC1版本的:
perl-CGI-SpeedyCGI-2.22-1.1.fc1.rf.i386.rpm
下载地址:ftp://ftp.pbone.net/mirror/dag.wieers.com/packages/perl-CGI-SpeedyCGI/perl-CGI-SpeedyCGI-2.22-1.1.fc1.rf.i386.rpm
把上面的包都下载全了(推荐用wget下载),保存在一个目录,比如我的保存在:/root/download/openwebmail 目录下。

【安装配置】

安装步骤就是把所有的包安装好,然后最后安装openwebmail,并且做好相关的配置。(系统中一定要有Perl和相关的包,不然没法装)
先装Perl的MIME::Base64的包:
# cd /root/download/openwebmail   #下面的安装都是在这个目录
# tar zxvf MIME-Base64-3.01.tar.gz
# cd cd MIME-Base64-3.07
# perl Makefile.PL
# make
# make install
就安装好了,然后用rpm的方式安装其他几个包:
# cd /root/download/openwebmail/
# rpm -ivh perl-Text-Iconv-1.2-fc1.i386.rpm
# rpm -ivh perl-Compress-Zlib-1.16-12.i386.rpm
# rpm -ivh perl-suidperl-5.8.1-92.i386.rpm
# rpm -ivh perl-CGI-SpeedyCGI-2.22-1.1.fc1.rf.i386.rpm

如果安装rpm包的时候提示Key无效,可以强制安装:
# rpm -ivh –nodeps xxxx.rpm
如果包已经存在,可以执行更新升级安装:
# rpm -Uvh xxx.rpm
安装完上面的包,然后安装我们最重要的opemwebmail包:
# rpm -ivh openwebmail-2.52-1.i386.rpm
安装完成后,OpenWebMail已经自动把自己复制到 /var/www/cgi-bin/ 目录下,因为我们是缺省的Apache,所以文档目录是在 /var/www/html,配置文件在 /etc/httpd/conf/httpd.conf。我们开始配置OpenWebMail。
# cd /var/www/cgi-bin/openwebmail
# speedy_suidperl open*  
#speedy_suidperl应该是在/usr/bin/目录下,如果不存在,可以自己查找
开始配置OpemWebMail,配置保存信息的数据库:
# vi cd /var/www/cgi-bin/openwebmail/etc/defaults/dbm.conf
把里面内容改成这样:
dbm_ext           .db
dbmopen_ext       .db
dbmopen_haslock   yes

保存退出。然后在执行:
# vi /var/www/cgi-bin/openwebmail/etc/defaults/opemwebmail.conf
看到如下内容:
domainnames       auto #域名
smtpserver         127.0.0.1 #SMTP服务器地址
smtpport           25 #SMTP服务器端口
smtpauth           no #SMTP是否需要验证
mailspooldir       /var/mail #OpenWebMail邮件保存的目录

改成相应你自己的 域名、SMTP服务器、SMTP端口和是否对SMTP进行验证。我这里就保持默认值的,因为我的Sendmail跟OpemWebMail是同一台机器并且没有做任何设置。
再设置我们邮件系统的语言:
# vi /var/www/cgi-bin/openwebmail/etc/openwebmail.conf
找到:
default_language   en
改成:
default_language   zh_CN.GB2312
保存退出。

现在开始初始化操作:
# cd /var/www/cgi-bin/opemwebmail
# ./openwebmail-tools –init
 
初始化OpenWebMail,这个步骤很重要,如果出现错误,请仔细检查。在这个过程中会生成部分DBM数据库,如果在执行过程中执行时间过长,可以自己终止脚本,然后再重新执行脚本,一直到最后提示成功为止。

【测试】
现在来看看我们的OpenWebMail是否安装完成,打开浏览器,输入:
http://192.168.0.3/cgi-bin/openwebmail/openwebmail.pl
如果出现登录OpemWebMail的界面,则说明安装成功,出现错误请反正检查,包括你的cgi-bin目录在Apache是配置是否合理,看我的Apache中cgi-bin目录的配置:
ScriptAlias /cgi-bin/ /var/www/cgi-bin/
<Directory “/var/www/cgi-bin”>
AllowOverride None
Options Indexes FollowSymLinks MultiViews
Order allow,deny
Allow from all
</Directory>

现在我们在系统中建立一个能够登录的用户,root用户是不允许登录,我们建立一个叫做heiyeluren的用户:
# useradd heiyeluren
修改密码,按照提示输入密码和重复密码:
# passwd heiyeluren
现在开始登录我们的OpemWebMail,然后发送邮件测试,邮件地址可以是本地的,比如:[url=mailto:heiyeluren@localhost]heiyeluren@localhost 之类的,然后查看是否能正常接收。

安装完成,如果不清楚的,可以自行Google下相关安装资料。


【结束】

看点我安装后的图片吧,欣赏一下。
ScriptAlias /webmail “/var/www/cgi-bin/openwebmail/openwebmail.pl”

MySQL Server Error:Too many connections ( 1040 )

类归于: 乱7八糟 — 标签: — admin @ 11:57 上午
MySQL Server Error:Too many connections ( 1040 )
就是说数据库限制了连接数,而你的论坛访问数据库需要的连接超出
修改MYSQL的最大连接数,可以改MY.ini里的

从官方文档知道linux上面编译安装的mysql默认的连接为100个,这样对于网站的需求来说是远远不够的。
文档:http://dev.mysql.com/doc/refman/5.0/en/too-many-connections.html

If you get a Too many connections error when you try to connect to the mysqld server, this means that all available connections are in use by other clients.

The number of connections allowed is controlled by the max_connections system variable. Its default value is 100. If you need to support more connections, you should restart mysqld with a larger value for this variable.

mysql官方告诉我们需要修改max_connections的值,那么我们怎么去修改呢?有两种方法
1、修改配置文件文件
修改/etc/my.cnf这个文件,在[mysqld]中新增max_connections=N,如果你没有这个文件请从编译源码中的support-files文件夹中复制你所需要的*.cnf文件为到/etc/my.cnf。我使用的是my-medium.cnf,中型服务器配置。例如我的[mysqld]的内容如下

[mysqld]
port = 3306
socket = /tmp/mysql.sock
skip-locking
key_buffer = 160M
max_allowed_packet = 1M
table_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
max_connections=1000

由于对mysql还不是很熟悉,所以很多参数没有修改。哈哈。。

2、非使用mysqld脚本自动启动的用户。
修改$MYSQL_HOME/bin/mysqld_safe文件
例如:/usr/local/mysql/bin/mysqld_safe这个文件
grep -n ‘max_connection’ $MYSQL_HOME/bin/mysqld_safe
修改对应行号的max_connections参数值

APACHE支持静态化

类归于: 乱7八糟 — 标签: — admin @ 11:56 上午

APACHE支持静态化

Apache 2.x 的用户请检查 conf/httpd.conf 中是否存在如下一段代码:

LoadModule rewrite_module modules/mod_rewrite.so

如果存在,那么在配置文件(通常就是 conf/httpd.conf)中加入如下代码。此时请务必注意,如果网站使用通过虚拟主机来定义,请务必加到虚拟主机配置,即 <VirtualHost> 中去,如果加在虚拟主机配置外部将可能无法使用。改好后然后将 Apache 重启。
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteRule ^/([0-9]+)/spacelist_(.*)$ /index.php?$1/action_spacelist_$2
  RewriteRule ^/([0-9]+)/viewspace_(.+)$ /index.php?$1/action_viewspace_itemid_$2
  RewriteRule ^/([0-9]+)/viewbbs_(.+)$ /index.php?$1/action_viewbbs_tid_$2
  RewriteRule ^/([0-9]+)/(.*)$ /index.php?$1/$2
  RewriteRule ^/([0-9]+)$ /index.php?$1
  RewriteRule ^/action_(.+)$ /index.php?action_$1
  RewriteRule ^/category_(.+)$ /index.php?action_category_catid_$1
  RewriteRule ^/itemlist_(.+)$ /index.php?action_itemlist_catid_$1
  RewriteRule ^/viewnews_(.+)$ /index.php?action_viewnews_itemid_$1
  RewriteRule ^/viewthread_(.+)$ /index.php?action_viewthread_tid_$1
  RewriteRule ^/index([\.a-zA-Z0-9]*)$ /index.php
  </IfModule>

如果没有安装 mod_rewrite,您可以重新编译 Apache,并在原有 configure 的内容中加入 –enable-rewrite=shared,然后再在 Apache 配置文件中加入上述代码即可。

DNS配置参数和概念

类归于: 乱7八糟 — admin @ 11:55 上午

 

DNS服务器的配置参数和概念

  IP地址是在网络上分配给每台计算机或网络设备的32位数字标识。在Internet上,每台计算机或网络设备的IP地址是全世界唯一的。IP地址的格式是 xxx.xxx.xxx.xxx,其中xxx是 0 到 255 之间的任意整数。例如,科迈网站主机的IP地址是 210.22.12.54。

什么是固定IP地址?
  固定IP地址是长期分配给一台计算机或网络设备使用的IP地址。一般来说,采用专线上网的计算机才拥有固定的Internet IP地址。

什么是动态IP地址?
  通过Modem、ISDN、ADSL、有线宽频、小区宽频等方式上网的计算机,每次上网所分配到的IP地址都不相同,这就是动态IP地址。因为IP地址资源很宝贵,大部分用户都是通过动态IP地址上网的。

什么是内网、什么是公网、什么是NAT?
  公网、内网是两种Internet的接入方式。
内网接入方式:上网的计算机得到的IP地址是Inetnet上的保留地址,保留地址有如下3种形式:
10.x.x.x
172.16.x.x至172.31.x.x
192.168.x.x
内网的计算机以NAT(网络地址转换)协议,通过一个公共的网关访问Internet。内网的计算机可向Internet上的其他计算机发送连接请求,但Internet上其他的计算机无法向内网的计算机发送连接请求。
公网接入方式:上网的计算机得到的IP地址是Inetnet上的非保留地址。公网的计算机和Internet上的其他计算机可随意互相访问。
NAT(Network Address Translator)是网络地址转换,它实现内网的IP地址与公网的地址之间的相互转换,将大量的内网IP地址转换为一个或少量的公网IP地址,减少对公网IP地址的占用。NAT的最典型应用是:在一个局域网内,只需要一台计算机连接上Internet,就可以利用NAT共享Internet连接,使局域网内其他计算机也可以上网。使用NAT协议,局域网内的计算机可以访问Internet上的计算机,但Internet上的计算机无法访问局域网内的计算机。
Windows操作系统的Internet连接共享、sygate、winroute、unix/linux的natd等软件,都是使用NAT协议来共享Internet连接。
所有ISP(Internet服务提供商)提供的内网Internet接入方式,几乎都是基于NAT协议的。

什么是域名? 域名由什么构成?
  域名是internet上用来寻找网站所用的名字,是internet上的重要标识,相当于主机的门牌号码。 每一台主机都对应一个IP地址,每一个IP地址由一连串的数字组成,如101.25.11.34。人们为了方便记忆就用 域名来代替这些数字来寻找主机,如mydomain.com。每一个域名与IP地址是一一对应的,人们输入域名,再由域名服务器(DNS)解析成IP地址,从而找到相应的网站。每一个网址和EMAIL都要用到域名。在英文国际域名中,域名可以英文字母和阿拉伯数字以及横杠”-”组成,最长可达67个字符(包括后缀),并且字母的大小写没有区别,每个层次最长不能超过22个字母。在国内域名中,三级域名长度不得超过20个字。

什么是DNS?
  域名管理系统DNS(Domain Name System)是域名解析服务器的意思.它在互联网的作用是:把域名转换成为网络可以识别的ip地址.比如:我们上网时输入的www.163.com会自动转换成为202.108.42.72

什么是A记录?
  A (Address) 记录是用来指定主机名(或域名)对应的IP地址记录。用户可以将该域名下的网站服务器指向到自己的web server上。同时也可以设置您域名的二级域名。

什么是NS记录?
  NS(Name Server)记录是域名服务器记录,用来指定该域名由哪个DNS服务器来进行解析。

什么是别名记录(CNAME)?
  也被称为规范名字。这种记录允许您将多个名字映射到同一台计算机。 通常用于同时提供WWW和MAIL服务的计算机。例如,有一台计算机名为“host.mydomain.com”(A记录)。 它同时提供WWW和MAIL服务,为了便于用户访问服务。可以为该计算机设置两个别名(CNAME):WWW和MAIL。 这两个别名的全称就是“www.mydomain.com”和“mail.mydomain.com”。实际上他们都指向“host.mydomain.com”。

什么是泛域名解析?
  泛域名解析定义为: 客户的域名a.com,之下所设的*.a.com全部解析到同一个IP地址上去。 比如客户设b.a.com就会自已自动解析到与a.com同一个IP地址上去。

什么是MX记录?
  MX(Mail Exchanger)记录是邮件交换记录,它指向一个邮件服务器,用于电子邮件系统发邮件时根据 收信人的地址后缀来定位邮件服务器。例如,当Internet上的某用户要发一封信给 user@mydomain.com 时,该用户的邮件系统通过DNS查找mydomain.com这个域名的MX记录,如果MX记录存在, 用户计算机就将邮件发送到MX记录所指定的邮件服务器上。

在邮件系统中使用自己的域名
假设你的邮件服务器地址是: 61.176.1.120
已经建了一条A记录: mail.mydomain.com A 61.176.1.120

对于MX记录已经存在的情况
如果MX记录已经存在,并且已经检查出是在某一个域名服务器上,您需要做的工作就是与您的域名服务商或该域名服务器的管理人员联系,把该MX记录按如下的形式进行修改:
您的域名    IN MX 10 mail.mydomain.com
对于MX记录还不存在的情况
要搞清楚您的域名确切的是在哪个域名服务器(DNS)中进行域名解析的,有两种办法,一种是查阅您注册该域名时提交的有关申请资料,得到当时受理申请的单位,与该受理申请的单位联系,让对方的相关人员帮您查清楚;另一种是在WinNT,Win2000或各种Unix操作系统中,通过使用nslookup得到。
找到您的域名服务器后,请与您的域名服务商或该服务器的管理人员联系,让对方为您增加一条MX记录,该记录的形式如下:
您的域名   IN MX 10 mail.mydomain.com
只有主机名能否建邮件系统?
完全可以。假设你的邮件服务器的主机名是 mail.mydomain.com,就是说在internet上mail.mydomain.com解析到你的 邮件服务器IP地址。你可以在你的邮件系统中建立一个叫 mail.mydomain.com的域,你的email格式为 user1@mail.mydomain.com, 其它邮件系统可以发信到你的服务器,使用动态域名指向的也是一样。如果你有一个静态IP地址,你甚至可以建一个一IP地址为结尾的邮件系统。 还有一种情况你的域名直接指向你的邮件服务器,就是说在internet上mydomain.com解析到你的邮件服务器,这时你建一个mydomain.com的域, 你的email格式为 user1@mydomain.com

什么是动态域名
Internet上的域名解析一般是静态的,即一个域名所对应的IP地址是静态的,长期不变的。也就是说,如果要在Internet上搭建一个网站,需要有一个固定的IP地址。
动态域名的功能,就是实现固定域名到动态IP地址之间的解析。用户每次上网得到新的IP地址之后,安装在用户计算机里的动态域名软件就会把这个IP地址发送到动态域名解析服务器,更新域名解析数据库。Internet上的其他人要访问这个域名的时候,动态域名解析服务器会返回正确的IP地址给他。
因为绝大部分Internet用户上网的时候分配到的IP地址都是动态的,用传统的静态域名解析方法,用户想把自己上网的计算机做成一个有固定域名的网站,是不可能的。而有了动态域名,这个美梦就可以成真。用户可以申请一个域名,利用动态域名解析服务,把域名与自己上网的计算机绑定在一起,这样就可以在家里或公司里搭建自己的网站,非常方便。

私网ip网段
私有地址(Private address)属于非注册地址,专门为组织机构内部使用。以下列出留用的三类内部寻址地址:A类 10.0.0.0,B类 172.16.0.0 —— 172.31.0.0,C类 192.168.0.0 —— 192.168.255.0。

如何查看我的电脑的IP地址
Windows系统: 用鼠标选择“开始”->“程序”->“MS-DOS方式”,打开一个DOS命令行窗口,执行:ipconfig
unix/linux: 在命令行下输入ifconfig

什么是子域名、二级域名?
子域名是个相对的概念,是相对父域名来说的。域名有很多级,中间用点分开。例如公司的顶级域名是以 com 结尾的,所有以 com 结尾的域名便都是它的子域。例如:www.amaxit.net 便是 amaxit.net 的子域,而 amaxit.net 是 net 的子域。

RBL是什么?
RBL 全称是 Real-time Blackhole Lists, 是国外的反垃圾邮件组织提供的检查垃圾邮件发送者地址的服务, RBL 功能对中国用户而言,几乎不可用。 因为我们发现大部分中国的IP地址都在 RBL 数据库里。请不要启用RBL 功能。 常用的RBL服务器地址有: relays.ordb.org;dnsbl.njabl.org;bl.spamcop.net;sbl.spamhaus.org;dun.dnsrbl.net;dnsbl.sorbs.net 查询和删除RBL中的IP地址请到

电子邮件符号@的来历
@符号在英文中曾含有两种意思,即“在”或“单价”。它的前一种意思是因其发音类 似于英文at,于是常被作为“在”的代名词来使用。如“明天早晨在学校等”的英文便条就 成了“wait you @ schoolmorning”。除了at外,它又有each的含义,所以“@”也常常用 来表示商品的单价符号。
美国的一位电脑工程师汤林森确立了@在电子邮件中的地位,赋予符号“@”新意。为 了能让用户方便地在网络上收发电子邮件,1971年就职于美国国防部发展军用网络阿帕网的 BBN电脑公司的汤林森,奉命找一种电子信箱地址的表现格式。他选中了这个在人名中绝不会 出现的符号“@”并取其前一种含义,可以简洁明了地传达某人在某地的信息,“@”就这 样进入了电脑网络。
汤林森设计的电子邮件的表现格式为“人名代码+电脑主机或公司代码+电脑主机所属 机构的性质代码+两个字母表示的国际代码”。这就是现在我们所用电子邮件地址的格式, 其中用“@”符号把用户名和电脑地址分开,使电子邮件能通过网络准确无误地传送。

Postfix

类归于: 乱7八糟 — 标签: — admin @ 11:54 上午

 SMTP服务器的构建 ( Postfix )

< SMTP服务器的构建 ( Postfix ) > (最近更新日:2006/09/28)

前  言

  在CentOS中,默认的邮件服务器(SMTP方面)是sendmail,但sendmail有若干的缺点,比如,配置复杂、安全漏洞曾被多次发现–并且依然存在隐患、邮件发送速度慢等等,这里就不再一一叙述。而另一个被广泛应用于邮件服务方面的“Postfix”的缺点就少得多,或者说它就是针对于sendmail的缺点,而被设计的。对应sendmail的短处,它在各方面也比较成熟。所以,无特殊要求,这里不推荐用sendmail来构建邮件服务器。本站介绍的邮件服务器配置方法,也将基于Postfix。

添加MX记录(这里假设使用动态域名)

  由于MX记录添加后,可能生效要等待一段时间(通常为数分钟或数十分钟,也可能马上生效),所以在安装配置前,我们首先为动态域名添加MX记录。添加方法也会因域名ISP的不同而不同,但大致信息如下:

     mx mail.centospub.com. 10
     a mail 服务器的IP地址

  mail为别名,10为优先度。这个别名指向服务器的IP地址。(如有疑问或需要帮忙请到 技术论坛 发贴。)

  确认MX记录的添加是否生效的方法:

[root@sample ~]# host -t mx centospub.com

centospub.com mail is handled by 10 mail.centospub.com.  ← 确认MX记录生效

安装Postfix

  然后,安装Postfix。

[root@sample ~]# yum -y install postfix  ← 在线安装Postfix

Setting up Install Process
Setting up repositories
dag 100% |=========================| 1.1 kB 00:00
update 100% |=========================| 951 B 00:00
base 100% |=========================| 1.1 kB 00:00
addons 100% |=========================| 951 B 00:00
extras 100% |=========================| 1.1 kB 00:00
Reading repository metadata in from local files
primary.xml.gz 100% |=========================| 28 kB 00:04
update : ################################################## 84/84
Added 84 new packages, deleted 1499 old in 3.44 seconds
primary.xml.gz 100% |=========================| 157 B 00:00
Added 0 new packages, deleted 1499 old in 1.97 seconds
primary.xml.gz 100% |=========================| 26 kB 00:00
extras : ################################################## 102/102
Added 102 new packages, deleted 1499 old in 2.73 seconds
Reducing Dag RPM Repository for Red Hat Enterprise Linux to included packages only
Finished
Parsing package install arguments
Resolving Dependencies
–> Populating transaction set with selected packages. Please wait.
—> Downloading header for postfix to pack into transaction set.
postfix-2.2.10-1.RHEL4.2. 100% |=========================| 40 kB 00:00
—> Package postfix.i386 2:2.2.10-1.RHEL4.2 set to be updated
–> Running transaction check
Dependencies Resolved

=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
postfix i386 2:2.2.10-1.RHEL4.2 base 3.0 M

Transaction Summary
=============================================================================
Install 1 Package(s)
Update 0 Package(s)
Remove 0 Package(s)
Total download size: 3.0 M
Downloading Packages:
(1/1): postfix-2.2.10-1.R 100% |=========================| 3.0 MB 00:05
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing: postfix ######################### [1/1]

Installed: postfix.i386 2:2.2.10-1.RHEL4.2
Complete!

配置Postfix及相关组件

[1] 对Postfix进行配置。

[root@sample ~]# vi /etc/postfix/main.cf  ← 编辑Postfix的配置文件

#myhostname = host.domain.tld  ← 找到此行,将等号后面的部分改写为主机名
 ↓
myhostname = sample.centospub.com  ← 变为此状态,设置系统的主机名

#mydomain = domain.tld  ← 找到此行,将等号后面的部分改写为域名
 ↓
mydomain = centospub.com  ← 变为此状态,设置域名(我们将让此处设置将成为E-mail地址“@”后面的部分)

#myorigin = $mydomain  ← 找到此行,将行首的#去掉
 ↓
myorigin = $mydomain  ← 变为此状态,将发信地址“@”后面的部分设置为域名(非系统主机名)

inet_interfaces = localhost  ← 找到此行,将“localhost”改为“all”
 ↓
inet_interfaces = all  ← 变为此状态,接受来自所有网络的请求

mydestination = $myhostname, localhost.$mydomain, localhost  ← 找到此行,在行为添加“$mydomain”
 ↓
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain  ← 变为此状态,指定发给本地邮件的域名

#relay_domains = $mydestination  ← 找到此行,将行首的#去掉
 ↓
relay_domains = $mydestination  ← 变为此状态,定义允许转发的域名

#mynetworks = 168.100.189.0/28, 127.0.0.0/8  ← 找到此行,依照自己的内网情况修改
 ↓
mynetworks = 168.100.189.0/28, 127.0.0.0/8  ← 变为此状态,指定内网和本地的IP地址范围

#home_mailbox = Maildir/  ← 找到这一行,去掉行首的#
 ↓
home_mailbox = Maildir/  ← 变为此状态,指定用户邮箱目录

# SHOW SOFTWARE VERSION OR NOT
#
# The smtpd_banner parameter specifies the text that follows the 220
# code in the SMTP server’s greeting banner. Some people like to see
# the mail version advertised. By default, Postfix shows no version.
#
# You MUST specify $myhostname at the start of the text. That is an
# RFC requirement. Postfix itself does not care.
#
#smtpd_banner = $myhostname ESMTP $mail_name
#smtpd_banner = $myhostname ESMTP $mail_name ($mail_version)  ← 找到这一行,接此行添加如下行:
smtpd_banner = $myhostname ESMTP unknow  ← 添加这一行,不显示SMTP服务器的相关信息

在配置文件的文尾,添加如下行:

smtpd_sasl_auth_enable = yes  ← 服务器使用SMTP认证
smtpd_sasl_local_domain = $myhostname  ← 指定SMTP认证的本地域名(主机名)
smtpd_sasl_security_options = noanonymous   ← 不允许匿名的方式认证
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
message_size_limit = 15728640  ← 规定邮件最大尺寸为15MB

[2] 配置SMTP认证的相关选项

  为了提高安全性,我们不将系统用户的密码作为相应用户SMTP认证的密码,而将在后面为用户建立SMTP认证专用的密码。

[root@sample ~]# vi /usr/lib/sasl2/smtpd.conf  ← 编辑SMTP认证的配置文件

pwcheck_method: saslauthd  ← 找到此行,将“saslauthd”改为“auxprop”
 ↓
pwcheck_method: auxprop  ← 不使用系统用户密码作为用户的SMTP认证密码

[root@sample ~]# vi /etc/sysconfig/saslauthd

MECH=shadow  ← 找到这一行,在前面加#
 ↓
#MECH=shadow  ← 不使用shadow机制

FLAGS=  ← 找到此行,在等号后面添加“sasldb”
 ↓
FLAGS=sasldb   ← 定义认证方式为sasldb2

[3] 建立用户的邮箱目录

  首先建立用户模板下的邮箱目录,以便于建立新用户时,相应用户的邮箱目录自动被建立。

[root@sample ~]# mkdir /etc/skel/Maildir  ← 在用户模板下建立用户邮箱目录

[root@sample ~]# chmod 700 /etc/skel/Maildir  ← 设置用户邮箱目录属性为700

  然后再为已经存在的用户建立相应邮箱目录。

[root@sample ~]# mkdir /home/centospub/Maildir  ← 为用户(这里以centospub用户为例)建立邮箱目录

[root@sample ~]# chmod 700 /home/centospub/Maildir  ← 设置该用户邮箱目录属性为700

[root@sample ~]# chown centospub. /home/centospub/Maildir  ← 设置该用户邮箱目录为该用户所有

[4] 为用户设置SMTP认证密码

[root@sample ~]# saslpasswd2 -u sample.centospub.com -c centospub  ← 为centospub用户设置SMTP认证密码

Password:  ← 在这里输入密码(不会显示)
Again (for verification):  ← 再次输入密码

[5] 改变SALS的属性及归属

[root@sample ~]# chgrp postfix /etc/sasldb2  ← 将数据库归属改为postfix,

[root@sample ~]# chmod 640 /etc/sasldb2  ← 将数据库属性改为640

[6] 关闭sendmail服务及设置默认MTA

  因为在用Postfix作为SMTP服务器的前提下,我们不准备再用sendmail,所以将sendmail服务关掉,以确保安全及节省系统资源。

[root@sample ~]# /etc/rc.d/init.d/sendmail stop  ← 关闭sendmail服务

Shutting down sendmail:         [ OK ]
Shutting down sm-client:         [ OK ]

[root@sample ~]# chkconfig sendmail off  ← 关闭sendmail自启动

[root@sample ~]# chkconfig –list sendmail  ← 确认sendmail自启动已被关闭(都为off就OK)
sendmail 0:off 1:off 2:off 3:off 4:off 5:off 6:off

  然后再将默认的MTA设置为Postfix。

[root@sample ~]# alternatives –config mta  ← 设置默认MTA
There are 2 programs which provide ‘mta’.

Selection Command
———————————————–
*+ 1 /usr/sbin/sendmail.sendmail  ← 当前状态:sendmail为默认MTA
 2 /usr/sbin/sendmail.postfix

Enter to keep the current selection[+], or type selection number: 2  ← 在这里输入2,使Postfix成为默认MTA

启动相应服务

  最后,启动SMTP认证及Postfix服务,并设置相应服务为自启动。

[root@sample ~]# chkconfig saslauthd on  ← 将SMTP-Auth设置为自启动

[root@sample ~]# chkconfig –list saslauthd  ← 确认SMTP-Auth服务状态
saslauthd 0:off 1:off 2:on 3:on 4:on 5:on 6:off  ← 确认2~5为on的状态就OK

[root@sample ~]# /etc/rc.d/init.d/saslauthd start  ← 启动SMTP-Auth

Starting saslauthd:           [ OK ]

[root@sample ~]# chkconfig postfix on  ← 将Postfix设置为自启动

[root@sample ~]# chkconfig –list postfix  ← 确认Postfix服务状态
postfix 0:off 1:off 2:on 3:on 4:on 5:on 6:off  ← 确认2~5为on的状态就OK

[root@sample ~]# /etc/rc.d/init.d/postfix start  ← 启动Postfix

Starting postfix:            [ OK ]

  至此,就完成了SMTP服务器方面的配置,但目前只具从备客户端通过服务器发送邮件的功能。做为完整的邮件服务器,还需具备从客户端通过POP/IMAP协议接受邮件到本地的功能。POP/IMAP服务器的构建请参见下一节

< POP / IMAP 服务器的构建( Dovecot ) > (最近更新日:2006/10/11)

前言

  POP / IMAP 是 MUA 从邮件服务器中读取邮件时使用的协议。其中,与 POP3 是从邮件服务器中下载邮件比起来,IMAP4 则是将邮件留在服务器端直接对邮件进行管理、操作。这里,我们用 Dovecot 来实现对 POP3 及 IMAP4 等协议支持的邮件接收服务器的搭建。

  Dovecot 是一个比较新的软件,由 Timo Sirainen 开发,最初发布于 2002年7月。作者将安全性考虑在第一,所以 Dovecot 在安全性方面比较出众。另外,Dovecot 支持多种认证方式,所以在功能方面也比较符合一般的应用。

安装 Dovecot

  首先,安装 Dovecot 。

[root@sample ~]# yum -y install dovecot  ← 在线安装 Dovecot

Setting up Install Process
Setting up repositories
dag 100% |=========================| 1.1 kB 00:00
update 100% |=========================| 951 B 00:00
base 100% |=========================| 1.1 kB 00:00
addons 100% |=========================| 951 B 00:00
extras 100% |=========================| 1.1 kB 00:00
Reading repository metadata in from local files
Parsing package install arguments
Resolving Dependencies
–> Populating transaction set with selected packages. Please wait.
—> Downloading header for dovecot to pack into transaction set.
dovecot-0.99.11-4.EL4.i38 100% |=========================| 15 kB 00:00
—> Package dovecot.i386 0:0.99.11-4.EL4 set to be updated
–> Running transaction check
–> Processing Dependency: libmysqlclient.so.14(libmysqlclient_14) for package: dovecot
–> Processing Dependency: libpq.so.3 for package: dovecot
–> Processing Dependency: libmysqlclient.so.14 for package: dovecot
–> Restarting Dependency Resolution with new changes.
–> Populating transaction set with selected packages. Please wait.
—> Downloading header for postgresql-libs to pack into transaction set.
postgresql-libs-7.4.13-2. 100% |=========================| 11 kB 00:00
—> Package postgresql-libs.i386 0:7.4.13-2.RHEL4.1 set to be updated
—> Downloading header for mysql to pack into transaction set.
mysql-4.1.20-1.RHEL4.1.i3 100% |=========================| 35 kB 00:00
—> Package mysql.i386 0:4.1.20-1.RHEL4.1 set to be updated
–> Running transaction check
–> Processing Dependency: perl(DBI) for package: mysql
–> Restarting Dependency Resolution with new changes.
–> Populating transaction set with selected packages. Please wait.
—> Downloading header for perl-DBI to pack into transaction set.
perl-DBI-1.40-8.i386.rpm 100% |=========================| 11 kB 00:00
—> Package perl-DBI.i386 0:1.40-8 set to be updated
–> Running transaction check
Dependencies Resolved

=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
dovecot i386 0.99.11-4.EL4 base 612 k
Installing for dependencies:
mysql i386 4.1.20-1.RHEL4.1 base 2.9 M
perl-DBI i386 1.40-8 base 466 k
postgresql-libs i386 7.4.13-2.RHEL4.1 base 146 k

Transaction Summary
=============================================================================
Install 4 Package(s)
Update 0 Package(s)
Remove 0 Package(s)
Total download size: 4.1 M
Downloading Packages:
(1/4): dovecot-0.99.11-4. 100% |=========================| 612 kB 00:00
(2/4): postgresql-libs-7. 100% |=========================| 146 kB 00:00
(3/4): mysql-4.1.20-1.RHE 100% |=========================| 2.9 MB 00:02
(4/4): perl-DBI-1.40-8.i3 100% |=========================| 466 kB 00:00
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing: perl-DBI ######################### [1/4]
Installing: mysql ######################### [2/4]
Installing: postgresql-libs ######################### [3/4]
Installing: dovecot ######################### [4/4]

Installed: dovecot.i386 0:0.99.11-4.EL4
Dependency Installed: mysql.i386 0:4.1.20-1.RHEL4.1 perl-DBI.i386 0:1.40-8 postgresql-libs.i386 0:7.4.13-2.RHEL4.1
Complete!

配置 Dovecot

  然后,修改相应配置文件,配置 Dovecot 。

[root@sample ~]# vi /etc/dovecot.conf  ← 编辑Dovecot 的配置文件

#protocols = imap imaps  ← 找到这一行,将协议设置为imap与pop3
 ↓
protocols = imap pop3  ← 变为此状态

#default_mail_env =  ← 找到这一行,定义邮件目录
 ↓
default_mail_env = maildir:~/Maildir  ← 定义邮件目录为用户目录下的Maildir目录

添加防火墙规则

  由于 POP3 协议与 IMAP4 协议要分别用到110号和143号端口,所以在启动服务前,配置防火墙,开通这两个端口。

[root@sample ~]# vi /etc/sysconfig/iptables  ← 编辑防火墙规则

-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 25 -j ACCEPT  ← 找到此行,接着添加如下两行:
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 110 -j ACCEPT  ← 允许POP使用的110号端口
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 143 -j ACCEPT  ← 允许IMAP使用的143号端口

[root@sample ~]# /etc/rc.d/init.d/iptables restart  ← 重新启动防火墙,使新的设置生效

Flushing firewall rules:          [ OK ]
Setting chains to policy ACCEPT: filter   [ OK ]
Unloading iptables modules:       [ OK ]
Applying iptables firewall rules:      [ OK ]

启动 Dovecot

  最后,启动 Dovecot ,并将其设置为自启动。

[root@sample ~]# chkconfig dovecot on  ← 设置Dovecot为自启动

[root@sample ~]# chkconfig –list dovecot
dovecot 0:off 1:off 2:on 3:on 4:on 5:on 6:off  ← 确认2~5为on的状态就OK

[root@sample ~]# /etc/rc.d/init.d/dovecot start  ← 启动Dovecot服务

Starting Dovecot Imap:        [ OK ]

  至此,配合Postfix,就可以通过E-mail客户端软件实现电子邮件的收发了

centos 5.0 编译安装apache 2.2.6+php5.2.5+mysql5.0.46+ZEND

类归于: 乱7八糟 — admin @ 11:51 上午
centos 5.0 编译安装apache 2.2.6+php5.2.5+mysql5.0.46+Z

V2.0 2007年2月12日 操作系统更新为centos 5.0 apache 更新为2.2.6版本, php更新为5.2.5,增加集成Suhosin补丁,mysql 更新为5.0.46, Zend Optimizer 更新为3.3.0。解决新平台下的一些问题。修正文字错误。

v1.2 2007年2月12日 apache 更新为2.2.4版本,增加mod_ssl和openssl支持,增加apr和apr-util的编译, php更新为5.2.1,增加集成Suhosin补丁,mysql 更新为5.0.33, Zend Optimizer 更新为3.2.2,增加phpmyadmin。修改一些文字错误。

v1.0 2007年1月11日

先声明,我绝对是个Linux的菜鸟,以下的这些文字个人的安装笔记,是参考了网上许多高手的成功经验组合而成的,说实话我自己的东西不多 :)我想把这些经验写下来,既可以对其他跟我一样摸索的兄弟一个经验,也可以防止以后自己都忘记了,嘿嘿。

所以如果某个大虾看到我借用了你的资源,请你不要生气。也欢迎大家进行指点。

1、下载centos 5
我是下载的DVD版本,大家也可以下载服务器CD安装版本,其实都差不多。大家可以到这儿下载,速度很快的。
http://ftp.iasi.roedu.net/mirrors/ce…86-bin-DVD.iso

当然也可以在windows下用BT或迅雷下载,速度也很不错的。

下载后当然就刻录成光盘。我建议你刻录DVD啦,如果是菜鸟,也可以在图形界面进行学习,不会这么抓不住头脑。

2、(1)安装CentOS 5
作为服务器,不安装不需要的组件,所以在选择组件的时候,除了选择FTP SERVER外取消所有组件的选择。也不要选web服务器。因为我们后面要手动编译安装。

系统约定RPM包和源码包存放位置

RPM包和源码包存放位置 /usr/local/src
源码包编译安装位置(prefix) /usr/local/xxx
脚本以及维护程序存放位置 /usr/local/sbin
MySQL 数据库位置 /var/lib/mysql
Apache 网站根目录 /home/www
Apache 虚拟主机日志根目录 /data/logs/www
yum RPM包信息文件 /etc/yum.list

3、系统环境部署及调整

(1). 检查系统是否正常
# more /var/log/messages //检查有无系统内核级错误信息
# demesg //检查硬件设备是否有错误信息
# ifconfig //检查网卡设置是否正确
# ping www.163.com // 检查网络是否正常

(2). 关闭不需要的服务
# export LANG=’en_US’ //设置语言
# setup //选择启动的服务
进入system service 选项。
以space 键选定所需服务。
以下仅列出需要启动的服务,未列出的服务一律关闭:
crond
irqbalance 仅当服务器CPU为S.M.P架构或支持双核心、HT技术时,才需开启,否则关闭。
microcode_ctl
network
vsftpd
sshd
syslog

(3)、修改/etc/yum.repos.d/CentOS-Base.repo,将镜象站点地址改为在中国的镜象站点地址。不然我们通过yum安装软件速度会极慢。修改如下:

# CentOS-Base.repo
#
# This file uses a new mirrorlist system developed by Lance Davis for CentOS.
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client. You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the
# remarked out baseurl= line instead.
#
#

[base]
name=CentOS-$releasever – Base
baseurl=http://mirror.be10.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
protect=1

#released updates
[updates]
name=CentOS-$releasever – Updates
baseurl=http://mirror.be10.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
protect=1

#packages used/produced in the build but not released
[addons]
name=CentOS-$releasever – Addons
baseurl=http://mirror.be10.com/centos/$releasever/addons/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
protect=0

#additional packages that may be useful
[extras]
name=CentOS-$releasever – Extras
baseurl=http://mirror.be10.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
protect=0

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever – Plus
baseurl=http://mirror.be10.com/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
protect=1

#contrib – packages by Centos Users
[contrib]
name=CentOS-$releasever – Contrib
baseurl=http://mirror.be10.com/centos/$releasever/contrib/$basearch/
gpgcheck=1
enabled=0
protect=0
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5

#packages in testing
[testing]
name=CentOS-5 – Testing
baseurl=http://mirror.be10.com/centos/5/testing/i386/

gpgcheck=1
enabled=0
protect=0

保存。

(2)更新系统,我们使用yum,

然后执行:
# yum upgrade
建议更新所有列出的程序,rhel 5.X的稳定性还要继续努力呢。

(4)、定时校正服务器时间
# yum install ntp
# crontab -e
0 23 * * * root /usr/sbin/ntpdate 210.72.145.44 > /dev/null 2>&1

以上命令设置好后存盘。您的机器将在每天的23:00根据中国国家授时中心的NTP服务器时间自动校准时间。

(5). 对TCP/IP网络参数进行调整,加强抗SYN Flood能力
# echo ‘net.ipv4.tcp_syncookies = 1′ >> /etc/sysctl.conf //将net.ipv4.tcp_syncookies = 1写入sysctl.conf 文件
# sysctl -p //查看

(6)、FTP服务器的配置
vi /etc/vsftpd/vsftpd.conf
把anonymous_enable=YES注释掉不允许匿名登录。
把chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
前的注释去掉。
把ftpd_banner=*前的注释去掉。后面改成你的欢迎信息(这样设置可以避免显示ftp服务器的版本信息)
然后保存,service vsftpd start就可以了。

这时应当添加用户,因为root默认不能通过FTP方式登录。

# adduser username
# passwd userpassword

这样对于我们上传一些文件到系统中很方便。

4. 重新启动系统
# init 6

5. 使用 yum 程序安装所需开发包(以下为标准的 RPM 包名称)
# yum install gcc gcc-c++ gcc-g77 flex bison autoconf automake bzip2-devel zlib-devel ncurses-devel libjpeg-devel libpng-devel libtiff-devel freetype-devel pam-devel openssl-devel libxml2-devel

#这里我们将编译GD所必须的一些小软件比如libpng,libtiff,freetype,libjpeg,等先用RPM的方式一并安装好,避免手动编译浪费时间,同时也能避免很多错误,这几个小软件的编译很麻烦。这几个小软件编译错误了,GD当然安装不了,php5的编译当然也没戏了。所以我们抓大放小,对这些小牛鬼蛇神采取快速简洁的方式进行安装。并且对服务器的性能也不能产生什么影响。
另外libxml2系统已经默认安装了,所以我们不需要手工编译了,直接安装它的开发包就行了。

6. 源码编译安装所需包 (Source)
(1) GD2
# cd /usr/local/src
# wget http://www.boutell.com/gd/http/gd-2.0.34.tar.gz
# tar xzvf gd-2.0.34.tar.gz
# cd gd-2.0.34
# CHOST=”i686-pc-linux-gnu” CFLAGS=”-O3 -msse2 -mmmx -Wall -W -mfpmath=sse -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer” CXXFLAGS=”-O3 -msse2 -mmmx -Wall -W -mfpmath=sse -funroll-loops -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer” ./configure –prefix=/usr/local/gd2 –mandir=/usr/share/man //./configure 配置。

# make //make 是用来编译的,它从 Makefile 中读取指令,然后编译。
# make install //make install 是用来安装的,它也从 Makefile 中读取指令,安装到指定的位置。

(2) Apache 日志截断程序
# cd /usr/local/src
# wget http://cronolog.org/download/cronolog-1.6.2.tar.gz
# tar xzvf cronolog-1.6.2.tar.gz
# cd cronolog-1.6.2
# ./configure –prefix=/usr/local/cronolog
# make
# make install

7、编译mysql 5.0.46
mysql 5.0.46是企业版本,貌似双数版本都是企业版本了。个人觉得代码质量要比社区版本要好一些。大家可以下载,免费使用。并不需要向mysql公司交钱。

cd /usr/local/src
# wget http://mirror.provenscaling.com/mysq…-5.0.46.tar.gz
# tar xzvf mysql-5.0.46.tar.gz
# cd mysql-5.0.46

修改mysql 客户端最大连接数, 默认的只有100,远远达不到我们的要求。

# vi sql/mysqld.cc

搜索找到下面一行:
{“max_connections”, OPT_MAX_CONNECTIONS,
“The number of simultaneous clients allowed.”, (gptr*) &max_connections,
(gptr*) &max_connections, 0, GET_ULONG, REQUIRED_ARG, 100, 1, 16384, 0, 1,
0},

将其中的100改为1500, 当然小点也可以,根据你的需要来,不建议改的太大。

{“max_connections”, OPT_MAX_CONNECTIONS,
“The number of simultaneous clients allowed.”, (gptr*) &max_connections,
(gptr*) &max_connections, 0, GET_ULONG, REQUIRED_ARG, 1500, 1, 16384, 0, 1,
0},

保存。

# CHOST=”i686-pc-linux-gnu” CFLAGS=”-O3 -msse2 -mmmx -Wall -W -mfpmath=sse -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer” CXXFLAGS=”-O3 -msse2 -mmmx -Wall -W -mfpmath=sse -funroll-loops -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer” ./configure –prefix=/usr/local/mysql –localstatedir=/var/lib/mysql –with-comment=Source –with-server-suffix=-enterprise-gpl –with-mysqld-user=mysql –without-debug –with-big-tables –with-charset=utf8 –with-collation=utf8_general_ci –with-extra-charsets=all –with-pthread –enable-static –enable-thread-safe-client –with-client-ldflags=-all-static –with-mysqld-ldflags=-all-static –enable-assembler –without-innodb –without-ndb-debug –without-isam

配置成功会提示:

MySQL has a Web site at http://www.mysql.com/ which carries details on the
latest release, upcoming features, and other information to make your
work or play with MySQL more productive. There you can also find
information about mailing lists for MySQL discussion.

Remember to check the platform specific part of the reference manual for
hints about installing MySQL on your platform. Also have a look at the
files in the Docs directory.

Thank you for choosing MySQL!

// 注意 ,CHOST=”i686-pc-linux-gnu” CFLAGS=”-O3 -msse2 -mmmx -Wall -W -mfpmath=sse -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer” CXXFLAGS=”-O3 -msse2 -mmmx -Wall -W -mfpmath=sse -funroll-loops -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer” 这个环境参数只针对intel P4 芯片,如果你的CPU是AMD的,注意不能使用。请查看相应的编译优化参数。否则程序会无法编译,即使编译成功也无法运行,嘿嘿。

关于其他CPU的优化请看我的BLOG的一篇转贴:
http://www.cnprint.org/bbs/blogs/1/blog43.html

# make
编译的时间可能会比较长,毕竟优化的比较厉害。

# make install

编译安装完成后执行后续操作:
# useradd mysql //添加 mysql 用户
# cd /usr/local/mysql
# bin/mysql_install_db –user=mysql
# chown -R root:mysql . //设置权限,注意后面有一个 “.”
# chown -R mysql /var/lib/mysql //设置 mysql 目录权限
# chgrp -R mysql . //注意后面有一个 “.”
# cp share/mysql/my-medium.cnf /etc/my.cnf
# cp share/mysql/mysql.server /etc/rc.d/init.d/mysqld //开机自动启动 mysql。
# chmod 755 /etc/rc.d/init.d/mysqld
# chkconfig –add mysqld
# /etc/rc.d/init.d/mysqld start //启动 MySQL
# bin/mysqladmin -u root password “password_for_root”
# service mysqld stop //关闭 MySQL

8. 编译安装 Apache
# cd /usr/local/src
# wget http://www.ip97.com/apache.org/httpd/httpd-2.2.6.tar.gz
# tar zxvf httpd-2.2.6.tar.gz
# cd httpd-2.2.6

依次安装apr和apr-util

# cd srclib/apr
# CHOST=”i686-pc-linux-gnu” CFLAGS=”-O3 -msse2 -mmmx -Wall -W -mfpmath=sse -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer” CXXFLAGS=”-O3 -msse2 -mmmx -Wall -W -mfpmath=sse -funroll-loops -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer” ./configure –prefix=/usr/local/apr –enable-threads –enable-other-child –enable-static
# make && make install

# cd ../apr-util
# CHOST=”i686-pc-linux-gnu” CFLAGS=”-O3 -msse2 -mmmx -Wall -W -mfpmath=sse -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer” CXXFLAGS=”-O3 -msse2 -mmmx -Wall -W -mfpmath=sse -funroll-loops -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer” ./configure –prefix=/usr/local/apr-util –with-apr=/usr/local/apr/ –with-mysql=/usr/local/mysql
# make && make install

cd /usr/local/src/httpd-2.2.6
# CHOST=”i686-pc-linux-gnu” CFLAGS=”-O3 -msse2 -mmmx -Wall -W -mfpmath=sse -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer” CXXFLAGS=”-O3 -msse2 -mmmx -Wall -W -mfpmath=sse -funroll-loops -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer” ./configure –prefix=/usr/local/apache2 –enable-mods-shared=all –with-mysql=/usr/local/mysql –enable-cache –enable-file-cache –enable-mem-cache –enable-disk-cache –enable-static-support –enable-static-htpasswd –enable-static-htdigest –enable-static-rotatelogs –enable-static-logresolve –enable-static-htdbm –enable-static-ab –enable-static-checkgid –disable-cgid –disable-cgi –with-apr=/usr/local/apr/ –with-apr-util=/usr/local/apr-util/ –enable-ssl –with-ssl=/usr/include/openssl

# make
# make install
# echo ‘/usr/local/apache2/bin/apachectl start ‘ >> /etc/rc.local //将 apachectl 的调用加入到你的系统启动文件中。

注解:
./configure //配置源代码树
–prefix=/usr/local/apache2 //体系无关文件的顶级安装目录PREFIX ,也就Apache的安装目录。
–enable-module=so //打开 so 模块,so 模块是用来提 DSO 支持的 apache 核心模块
–enable-mods-shared=all //编译全部的模板,对于不需要我们可以在httpd.conf去掉。
–enable-cache //支持缓存
–enable-file-cache //支持文件缓存
–enable-mem-cache //支持记忆缓存
–enable-disk-cache //支持磁盘缓存
–enable-static-support //支持静态连接(默认为动态连接)
–enable-static-htpasswd //使用静态连接编译 htpasswd – 管理用于基本认证的用户文件
–enable-static-htdigest //使用静态连接编译 htdigest – 管理用于摘要认证的用户文件
–enable-static-rotatelogs //使用静态连接编译 rotatelogs – 滚动 Apache 日志的管道日志程序
–enable-static-logresolve //使用静态连接编译 logresolve – 解析 Apache 日志中的IP地址为主机名
–enable-static-htdbm //使用静态连接编译 htdbm – 操作 DBM 密码数据库
–enable-static-ab //使用静态连接编译 ab – Apache HTTP 服务器性能测试工具
–enable-static-checkgid //使用静态连接编译 checkgid
–disable-cgid //禁止用一个外部 CGI 守护进程执行CGI脚本
–disable-cgi //禁止编译 CGI 版本的 PHP
–enable-ssl // 编译 ssl模块。

我们不再使用worker模式编译apache,worker模式和php貌似有一些不协调不稳定之处。所以使用了默认的perfork模式。

将apache设置成开机自启动:

在/etc/rc.d/rc.local文件中加入一行
/usr/local/apache2/bin/apachectl start
这样每次重新启动系统以后,apache也会随系统一起启动.

或者
# cp /usr/local/apache2/bin/apachectl /etc/rc.d/init.d/httpd
然后 vi /etc/rc.d/init.d/httpd 添加(#!/bin/sh下面)
# chkconfig: 2345 10 90
# description: Activates/Deactivates Apache Web Server
最后,运行chkconfig把Apache添加到系统的启动服务组里面:
# chkconfig –add httpd
# chkconfig httpd on

9、编译php 5.2.5-devel。
php 5.2.4有点小BUG,无法在centos 5上正常编译,官方已经在php5.2.5中修复了。所以我们使用php 5.2.5进行编译。
Suhosin是php增强型安全补丁,可以编译到静态内核中,也可以编译成php动态扩展。我个人强烈你建议安装成静态内核。Suhosin已经进入freebsd和gentoo的ports。下面的以下先说静态安装步骤。当然你也可以在安装php后将它编译成php的动态扩展。

# cd /usr/local/src
# wget http://cn.php.net/get/php-5.2.5.tar.gz/from/this/mirror
wget http://www.hardened-php.net/suhosin/…9.6.2.patch.gz
# tar zxvf php-5.2.5.tar.gz
# gunzip suhosin-patch-5.2.1-0.9.6.2.patch.gz
# cd php-5.2.5

# CHOST=”i686-pc-linux-gnu” CFLAGS=”-O3 -msse2 -mmmx -Wall -W -mfpmath=sse -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer” CXXFLAGS=”-O3 -msse2 -mmmx -Wall -W -mfpmath=sse -funroll-loops -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer” ./configure –prefix=/usr/local/php –with-apxs2=/usr/local/apache2/bin/apxs –with-pear=/usr/share/php –with-zlib-dir –with-bz2 –with-libxml-dir=/usr –with-gd=/usr/local/gd2 –enable-gd-native-ttf –enable-gd-jis-conv –with-freetype-dir –with-jpeg-dir –with-png-dir –with-ttf=shared,/usr –enable-mbstring –with-mysql=/usr/local/mysql –with-mysqli=/usr/local/mysql/bin/mysql_config –with-config-file-path=/etc –with-iconv –disable-ipv6 –enable-static –enable-maintainer-zts –enable-zend-multibyte –enable-inline-optimization –enable-zend-multibyte –enable-sockets –enable-soap –with-openssl

配置成功会提示:

+——————————————————————–+
| License: |
| This software is subject to the PHP License, available in this |
| distribution in the file LICENSE. By continuing this installation |
| process, you are bound by the terms of this license agreement. |
| If you do not agree with the terms of this license, you must abort |
| the installation process at this point. |
+——————————————————————–+

Thank you for using PHP.

# make

# make install

# cp php.ini-recommended /etc/php.ini

在这里也顺便说一下将suhosin安装成为php的动态扩展的方法。毕竟网上根本不见它的中文安装教程。

虽然我个人不推荐这种方式。

wget http://www.hardened-php.net/suhosin/…sin-0.9.16.tgz
tar zxvf suhosin-0.9.16.tgz
cd suhosin-0.9.16
./configure –with-php-config=/usr/local/php/bin/php-config
make
make install

会提示编译的模块存在的目录,记住它。
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/

然后在php.ini中增加一行下列语句。
extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/suhosin.so

10 、整合apache 与php
# vi /usr/local/apache2/conf/httpd.conf
在最后一行加上:
AddType application/x-httpd-php .php

查找:(设置 WEB 默认文件)
DirectoryIndex index.html
替换为:
DirectoryIndex index.php index.html index.htm //在 WEB 目录不到默认文件,httpd 就会执行 /var/www/error/noindex.html

找到这一段:
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be “All”, “None”, or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride none

更改为AllowOverride all
允许apache rewrite

# 监听443端口,支持https连接
取消注释 httpd.conf 中的 Include conf/extra/httpd-ssl.conf

保存httpd.conf,退出。

# /usr/local/apache2/bin/apachectl restart //重启 Apache

这时会出现错误:

/usr/local/apache2/bin/apachectl start
httpd: Syntax error on line 107 of /usr/local/apache2/conf/httpd.conf: Cannot load /usr/local/apache2/modules/libphp5.so into server: /usr/local/apache2/modules/libphp5.so: cannot restore segment prot after reloc: Permission denied

不急,我们慢慢解决。

先重启下机器:
reboot
这个Permission denied问题,在centos 5下面一般是Selinux引起的,作为生产用服务器,我建议你千万别草率地关掉Selinux一了百了。就像家里的防盗网,阻碍了你的猫自由进出窗户,你不能为了猫方便,就把防盗网简单拆除是同样的道理。我看见网上许多人建议把Selinux简单关闭来解决这个问题,很不以为然。
我们可以这样操作:

# audit2allow -d
allow initrc_t usr_t:file execmod;
allow mount_t default_t:file execute;

# cd /etc/selinux/targeted/modules/
# audit2allow -M local -d

屏幕产生如下提示:

产生类型强制文件:local.te
正在编译策略
checkmodule -M -m -o local.mod local.te
semodule_package -o local.pp -m local.mod

********************重要 ***********************

为了在内核中加载这个新创建的策略软件包,
您需要执行

semodule -i local.pp

我们运行

# semodule -i local.pp

这样就让Selinux加载了新的规则。

更详细的内容请看我在BLOG上的转贴:

http://www.cnprint.org/bbs/blogs/1/blog48.html

reboot

哈哈,apache不会再报错了吧?
这样我保留了selinux的功能,同时apache也能正常运行。

11. 查看确认 L.A.M.P 环境信息
vi /usr/local/apache2/htdocs/phpinfo.php

新增加下面一行,并保存。

<?php phpinfo(); ?>

# chmod 755 /usr/local/apache2/htdocs/phpinfo.php

用浏览器打开 http://127.0.0.1/phpinfo.php

# echo ‘ ‘ > /usr/local/apache2/htdocs/testdb.php
# chmod 755 /usr/local/apache2/htdocs/testdb.php
# service mysqld start
用浏览器打开 http://127.0.0.1/testdb.php
检查 phpinfo 中的各项信息是否正确。

12、设置SSL并创建自己的CA

# cd /usr/share/ssl/misc

# ./CA -newca

屏幕上出现如下的提示:CA certificate filename (or enter to create)

这是要求输入要创建的CA的证书文件名, 可以直接回车或输入证书文件名。

Making CA certificate …
Generating a 1024 bit RSA private key
………++++++
…………………………..++++++
writing new private key to ‘./demoCA/private/./cakey.pem’
Enter PEM pass phrase:

Verifying password – Enter PEM pass phrase:-

此时要求输入和验证CA的私钥口令、国家代码(中国是CN)、省份、城市或地区、组织或企业名称、部门名称、CA的名称或服务器的主机名称、管理员电子邮件地址。

至此,在当前目录下生成了demoCA的目录,CA的证书就在该目录下,文件名为cacert.pem

生成服务器的证书请求

# ./CA -newreq

屏幕上出现如下的提示:

Generating a 1024 bit RSA private key
……………………………………………..++++++
…..++++++
writing new private key to ‘newreq.pem’
Enter PEM pass phrase:
Verifying password – Enter PEM pass phrase:

此时要求输入和验证服务器的私钥口令、国家代码(中国是CN)、省份、城市或地区、组织或企业名称、部门名称、CA的名称或服务器的主机名称、管理员电子邮件地址。

Please enter the following ‘extra’ attributes

to be sent with your certificaterequest

A challenge password []:

An optional company name []:

.Request (and private key) is in newreq.pem

这是要求输入服务器的相关信息。

此时,在当前目录下生成了一个名为newreq.pem的文件,包含了要生成服务器数字证书的请求。

签署证书

# ./CA -sign

屏幕上出现如下的提示:

Using configuration from /usr/share/ssl/openssl.cnf

Enter PEM pass phrase:

此时一样需要输入CA的私钥口令、国家代码(中国是CN)、省份、城市或地区、组织或企业名称、部门名称、CA的名称或服务器的主机名称、管理员电子邮件地址。

Certificate is to be certified until Nov 19 13:46:19 2002 GMT (365 days)

Sign the certificate? [y/n]:y

这时显示证书请求文件中的各项信息,并询问是否要签署证书,回答y,进行签署。

1 out of 1 certificate requests certified, commit? [y/n]y

回答y,会显示已经签署的证书的信息,并在当前目录下生成服务器的证书文件newcert.pem。

# mkdir /usr/local/apache2/conf/ssl.crt/
# mkdir /usr/local/apache2/conf/ssl.key/
# cp newcert.pem /usr/local/apache2/conf/ssl.crt/server.pem
# cp newreq.pem /usr/local/apache2/conf/ssl.key/server.pem

更改服务器的证书文件的相关配置
# vi /usr/local/apache2/conf/extra/httpd-ssl.conf

查找并修改

# Server Certificate:
# Point SSLCertificateFile at a PEM encoded certificate. If
# the certificate is encrypted, then you will be prompted for a
# pass phrase. Note that a kill -HUP will prompt again. Keep
# in mind that if you have both an RSA and a DSA certificate you
# can configure both in parallel (to also allow the use of DSA
# ciphers, etc.)
SSLCertificateFile /usr/local/apache2/conf/ssl.crt/server.pem
#SSLCertificateFile /usr/local/apache2/conf/server-dsa.crt

# Server Private Key:
# If the key is not combined with the certificate, use this
# directive to point at the key file. Keep in mind that if
# you’ve both a RSA and a DSA private key you can configure
# both in parallel (to also allow the use of DSA ciphers, etc.)
SSLCertificateKeyFile /usr/local/apache2/conf/ssl.key/server.pem
#SSLCertificateKeyFile /usr/local/apache2/conf/server-dsa.key

示例文件

在SSL的根目录中生成一个index.html,它是如下所示:

<html>

这是SSL示例!

</html>

测试

假如Web服务器的DNS名称是www.cnprint.org.

在浏览器的URL地址栏里输入 http://www.cnprint.org/,浏览器便会显示APACHE安装时确省的Test Page.

在浏览器的URL地址栏里输入 https://www.cnprint.org/,注意:是 https 而不是http !

浏览器会提示站点已经采用了SSL进行数据的加密传输.由于我们的CA证书不是浏览器缺省的信任的根证书,所以,浏览器会说无法确认服务器的证书可信。暂时不管,一直NEXT,最后,浏览器会显示:这是SSL示例!

可以把CA的证书放在非SSL的站点上,让浏览器下载并安装CA证书,并将其设置成可信任的根证书,便可解决上面的问题.8 解除HTTPD起动时的口令输入。

由于安全的原因,Web服务器的私钥是口令加密了的,每次重新起动HTTPD或Linux时,都会要求输入Web服务器的私钥的口令。

如果要解除HTTPD起动时的口令输入,可以这样:

# cd /usr/local/apache2/conf/ssl.key/
# cp server.pem server.pem.org
# openssl rsa -in server.pem.org -out server.pem
# chmod 400 server.pem

另外在网上看到一个方法,我没有试。有兴趣的可以试下。

创建SSL密码自动应答文件,否则每次Apache启动的时候,都会要求你输入SSL的密码.
创建 /usr/local/apache2/conf/ssl.key/sendsslpwd ,内容如下.
#!/bin/bash
SSLpasswd=”YOUR PASSPHRASE”
echo $SSLpasswd
chmod 755 /usr/local/apache2/conf/ssl.key/sendsslpwd

此时,Web服务器的私钥已经没有口令加密,一定要确保server.pem文件除root外,任何用户均无权读取它。

13、安装 Zend Optimizer
# cd /usr/local/src
# wget http://downloads.zend.com/optimizer/…21-i386.tar.gz
# tar xzvf ZendOptimizer-3.3.0-linux-glibc21-i386.tar.gz
# ./ZendOptimizer-3.3.0-linux-glibc21-i386/install.sh
按照它的提示一步步进行就行了。
总之一句话。如果你的服务器环境不需要ZendOptimizer,那么能不安就不安装这个。避免和eaccelerator冲突。

14、安装eaccelerator // eaccelerator是php的加速软件,使用后php的执行效率会有较大幅度的提升。目前eaccelerator 0.9.5.2已经和ZendOptimizer-3.3.0能够基本上兼容啦。不过我个人觉得,ZendOptimizer-3.3.0没有加速的功能,反而使php运行变慢,只是起到了运行zend加密文件的作用而已。闲话不多说了,大家有兴趣的,可以去google下。

# cd /usr/local/src
# wget http://bart.eaccelerator.net/source/….9.5.2.tar.bz2
# tar -jxvf eaccelerator-0.9.5.2.tar.bz2
# cd eaccelerator-0.9.5.2

export PHP_PREFIX=”/usr/local/php”
$PHP_PREFIX/bin/phpize //指定一下php的目录

# ./configure –enable-eaccelerator=shared –with-php-config=$PHP_PREFIX/bin/php-config // 设置

# make & make install

编译安装后我们会看到屏幕提示的eaccelerator.so所在的目录,比如我得到的是/usr/local/php/lib/php/extensions/no-debug-zts-20060613/eaccelerator.so,记住这个路径,待会要用到。

修改php.ini(安装完zend之后,php.ini存放于/usr/local/Zend/etc)
在文件最后,zend之前,注意,这部分内容务必放在zend之前,不然可能会出现不可预期的服务器问题。添加下列信息:

[eaccelerator]
extension=”/usr/local/php/lib/php/extensions/no-debug-zts-20060613/eaccelerator.so”
eaccelerator.shm_size=”32″
eaccelerator.cache_dir=”/tmp/eaccelerator”
eaccelerator.enable=”1″
eaccelerator.optimizer=”1″
eaccelerator.check_mtime=”1″
eaccelerator.debug=”0″
eaccelerator.filter=”"
eaccelerator.shm_max=”0″
eaccelerator.shm_ttl=”0″
eaccelerator.shm_prune_period=”0″
eaccelerator.shm_only=”0″
eaccelerator.compress=”1″
eaccelerator.compress_level=”9″

解释:
zend_extension 是安装完程序自动指示给我们的
eaccelerator.shm_size=”32″ 缓存大小单位MB
eaccelerator.cache_dir=”/tmp/eaccelerator” 缓存路径

# mkdir /tmp/eaccelerator // 建立目录
# chmod 0777 /tmp/eaccelerator // 修改目录属性

最后重新启动apachectl

重启apache,phpinfo显示:
This program makes use of the Zend Scripting Language Engine:
Zend Engine v2.2.0, Copyright (c) 1998-2006 Zend Technologies
with eAccelerator v0.9.5.2, Copyright (c) 2004-2006 eAccelerator, by eAccelerator
with Zend Extension Manager v1.0.11, Copyright (c) 2003-2006, by Zend Technologies
with Zend Optimizer v3.3.0, Copyright (c) 1998-2006, by Zend Technologies

也会有eAccelerator的具体信息。

15、安装phpmyadmin,管理mysql数据库

# cd /usr/local/apache2/htdocs/
# wget http://nchc.dl.sourceforge.net/sourc…-8-only.tar.gz

# tar zxvf phpMyAdmin-2.11.1-all-languages-utf-8-only.tar.gz
# mv phpMyAdmin-2.11.1-all-languages-utf-8-only phpmyadmin

# cd phpmyadmin/libraries

修改配置文件
# vi config.default.php

找到这几行进行修改:
$cfg['Servers'][$i]['auth_type'] = ‘http’; // Authentication method (valid choices: config, http, HTTP, signon or cookie)
$cfg['Servers'][$i]['user'] = ‘root’; // MySQL user
$cfg['Servers'][$i]['password'] = ‘PASSWORD’; // MySQL password (only needed

经过这几个步骤,我们一个比较安全的LAMP服务器就环境基本建立成功啦。感觉上也不是很难,是吧?

500 OOPS: could not bind listening IPv4 socket 错误

类归于: 乱7八糟 — 标签: — admin @ 11:48 上午

500 OOPS: could not bind listening IPv4 socket 错误

500 OOPS: could not bind listening IPv4 socket 错误
关键字:   500 OOPS: could not bind listening IPv4 socket 错误  

因为xinetd已经启动了vsftpd,而vsftpd设置成了stardalone模式,所以,先
停止xinetd服务, service xinetd stop ,然后 /usr/local/sbin/vsftpd &
启动ftp服务

500 OOPS: vsftpd: refusing to run with writable anonymous root
用chmod 775 /var/ftp,就可以登入了
比如您想让匿名用户上传和下载都在/var/ftp/pub,就可以把/var/ftp/pub的权限打开,如果没有这个目录,您要自己建一个;

[root@localhost ~]# mkdir /var/ftp/pub
[root@localhost ~]# chmod -R 777 /var/ftp/pub
这表示ftp用户的家目录的权限不对,应该改过才对;

[root@localhost ~]# more /etc/passwd |grep ftp
ftp:x:1000:1000:FTP User:/var/ftp:/sbin/nologin

我们发现ftp用户的家目录在/var/ftp,就是这个/var/ftp的权限不对所致,这个目录的权限是不能打开所有权限的;是您运行了chmod 777 /var/ftp所致;如果没有ftp用户这个家目录,当然您要自己建一个;
如下FTP用户的家目录是不能针对所有用户、用户组、其它用户组完全开放;

[root@localhost ~]# ls -ld /var/ftp
drwxrwxrwx 3 root root 4096 2005-03-23 /var/ftp
修正这个错误,应该用下面的办法;

[root@localhost ~]# chown root:root /var/ftp
[root@localhost ~]# chmod 755 /var/ftp
有的弟兄可能会说,那匿名用户的可读、可下载、可上传怎么办呢?这也简单,在/var/ftp下再建一个目录,权限是777的就行了,再改一改vsftpd.conf就OK了;没有什么难的;
vsFTPd出于安全考虑,是不准让ftp用户的家目录的权限是完全没有限制的

vsftp细节问题: 500 OOPS: could not bind listening IPv4 socket 解决办法2007年08月10日 星期五 12:56

第一. 执行/usr/local/sbin/vsftpd &之后
vsftpd 的错误提示:500 OOPS: could not bind listening IPv4 socket 遇到这个问题我在通过编译源代码后安装vsftpd的时候遇到的,在这以前我已经通过rpm方式安装过了vsftp
因此其配置文件/etc/xinet.d/vsftpd还在并且是自启动的,也就是说是XINET模式;但是/etc/rc.local中又写入
了启动脚本,因此便发生了冲突,只需要关闭它们中的一个问题就解决了。
有以下两种方式:
1.使用XINET模式
去掉/etc/rc.local文件中的vsftpd的启动脚本/usr/local/sbin/vsftp &
运行service vsftpd restart命令启动vsftpd
2.使用STANDALONE独立模式
在服务器的负担比较重的情况下最好用这个模式
chkconfig vsftpd –level 3 off
或者直接修改/etc/xinetd.d/vsftpd文件,把disable=no改成disable=yes就行了!

第二.
我曾经也碰到过这样的问题,

VSFTPD我是自己编译的,在论坛上许多文章说是编译使用的是XINETD模式,所以只要在/etc/xinetd.d/vsftpd文件中,把disable=no改成YES就行了!

还有就是在/etc/vsftpd.conf文件添加listen=yes这样就改成了STANDALONE独立模式!
重启!OK

« 较近文章早前文章 »

WordPress 所驱动