实现Redhat7.2+Apache+PHP4+MySQL+phpMyAdmin+DNS+Qmail+Igenus

发表于:2007-07-04来源:作者:点击数: 标签:
参考了本论坛许多高手的文章,终于实现了以上东东,把过程贴上来共享一下: 以下在redhat7.2下安装,redhat的安装是自定义安装,除选装DNS服务外,其它如Apache, 数据库 等默认都没装, 以便自己下载较新的源代码编译安装。。。安装过程中参考了网上众多老大的

参考了本论坛许多高手的文章,终于实现了以上东东,把过程贴上来共享一下:

以下在redhat7.2下安装,redhat的安装是自定义安装,除选装DNS服务外,其它如Apache,数据库等默认都没装,
以便自己下载较新的源代码编译安装。。。安装过程中参考了网上众多老大的文章哦,谢谢啊...

1。先装MySQL,用的是mysql-3.23.56.tar.gz

shell> ./configure --prefix=/usr/local/mysql --with-charset=gb2312
shell> make 
shell> make install 
shell> scripts/mysql_install_db 
shell> chown -R root /usr/local/mysql 
shell> chown -R mysql /usr/local/mysql/var 
shell> chgrp -R mysql /usr/local/mysql 
shell> cp support-files/my-medium.cnf /etc/my.cnf 
shell> /usr/local/mysql/bin/safe_mysqld --user=mysql & 

如果Linux系列,且在安装时已经安装了mysql, 
那以后要再次自己编译安装,mysql用户和组就不用建立了. 
但目录文件权限,是一定要给的(否则MySQL起不来). 

2。安装Apache(DSO模式),用的是apache_1.3.26.tar.gz,
一开始用httpd-2.0.40.tar.gz编译老是出错。

shell> ./configure --prefix=/usr/local/apache --enable-module=so
       make 
make install
# vi /usr/local/apache/conf/httpd.conf 
添加以下内容: 

AddType application/x-tar.tgz 
Addtype application/x-httpd-php .php .php3 

/usr/local/apache/bin/apachectl start 启动
Q;安装好默认http://ip ;不能浏览,必须敲入http://ip/index.php才行,后来又可以了,奇怪!!


3。安装php4,用的是php4-STABLE-200304121930.tar.gz
# tar -zxvf php4-STABLE-200304121930.tar.gz 
# cd php4-STABLE-200304121930
# ./configure --with-mysql --with-apxs=/usr/local/apache/bin/apxs 
# make 
# make install 
# cp php.ini-dist /usr/local/lib/php.ini 
# vi /usr/local/lib/php.ini 
register_globals =off 更改为:register_globals =on 

(注:编译APACHE,是使它支持DSO模块。然后编译PHP,将SO文件安装到你的APACHE的模块目录里,这样也方便以后扩展功能.)


这样编译后httpd.conf中会有如下一段:
#Dynamic Shared Object (DSO) Support
.....
# Example:
# LoadModule foo_module libexec/mod_foo.so
LoadModule php4_module        libexec/libphp4.so



这时重启Apache,就可以支持php了 

在/etc/rc.d/rc.local中可加入以下
/usr/local/apache/bin/apachectl start
/usr/local/mysql/bin/safe_mysqld --user=mysql &
以便开机以上服务自启动。


4.安装phpMyAdmin 2.4.0
直接解压至apache默认的目录下,我的是usr/local/apache/htdocs/phpadmin24下
因为版本高,所以它已经直接支持中文了,只要在语言那选择一下zh就可以了.
另外如果Mysql的root有密码的话,要改config.inc.php中的
$cfg['Servers'][$i]['password']      = 'root'; <--改为你的密码
才能登陆!
直接执行其目录下的index.php就可以了!

5.控制存取phpmyadmin
phpmyadmin如可以随便访问会有安全问题,这里采用Apache来限制:
1、修改http.conf 
  假设你想控制/usr/local/apache/htdocs下各目录的不同访问权限,你可以在
# This controls which options the .htaclearcase/" target="_blank" >ccess files in directories can
# override. Can also be "All", or any combination of "Options", "FileInfo",
# "AuthConfig", and "Limit"
#
#    AllowOverride None
    AllowOverride All
改成上面一行: 

AllowOverride All 
  意思是在/usr/local/apache/htdocs下不同目录的访问权限由该目录下的.htaccess文件来控制,
而且不同目录的权限策略可互相覆盖。 

2、编辑你想要控制的目录下的.htaccess文件 
  假设你的phpmyadmin目录在/usr/local/apache/htdocs下,你可以这样在phpmyadmin目录下创建一
个.htaccess文件,
内容如下: 

AuthUserFile /usr/local/apache/pass/pwdPhp 
AuthType Basic 
AuthName "Database Security Zone" 
ErrorDocument 401 /catchErrors/err_401.html 

require valid-user 


该文件说明了几个问题: 
(1) 用户信息存放在/usr/local/apache/pass/pwdPhp中. 
(2) 认证类型为基本型(此外还有一些其他的加密类型). 
(3) ErrorDocument 所指向的html文件. 
(4) 认证方式:用户认证(valid-user)或组认证(valid-group). 


cd /usr/local/apache/pass
mkdir pass
cd pass
vi pwdPhp

3. 生成用户密码文件 
有一个用户密码生成程序:htpasswd(在/usr/local/apache/bin下), 它可以加入用户密码信息到指定的文件中,如
/usr/local/apache/pass/pwdPhp. 

例如
htpasswd -bc /usr/local/apache/pass/pwdPhp admin admin1997

我的用户密码文件内容如下: 
admin:ekDP8Mm5Z66po


4. 重起apache deamon 
/usr/local/apche/bin/apachectl restart 
这时,再访问你的phpmyadmin就要用户名和密码了。。。


6.DNS配置:
邮件的前提是DNS,这里仅做为一简单例子,实际要结合你自身的环境来配置;

保证Bind已安装, redhat7.2带的是bind-9.1.3-4

应该在/etc下有
named.conf host.conf nsswitch.conf resolv.conf

named.conf
/ generated by named-bootconf.pl

options {
        directory "/var/named";
        /*
         * If there is a firewall between you and nameservers you want
         * to talk to, you might need to uncomment the query-source
         * directive below.  Previous versions of BIND always asked
         * questions using port 53, but BIND 8.1 uses an unprivileged
         * port by default.
         */
        // query-source address * port 53;
};

//
// a caching only nameserver config
//
controls {
        .net 127.0.0.1 allow { localhost; } keys { rndckey; };
};
zone "." IN {
        type hint;
        file "named.ca";
};

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; };
};

zone "hfcb.com.cn" {
        type master;
        file "hfcb.db";
};

zone "5.10.10.in-addr.arpa" {
        type master;
        file "5.10.10.in-addr.arpa";
};
include "/etc/rndc.key";

host.conf
order hosts,bind
multi off

nsswitch.conf
hosts:      files nisplus dns

resolv.conf
search hfcb.com.cn
nameserver 10.10.5.20


/var/named/
5.10.10.in-addr.arpa   hfcb.db  localhost.zone  named.ca  named.local

hfcb.db
TTL 3600
@ IN SOA localhost. root.localhost. (
                20030429
                28800             ;refresh - 5 minutes
                60              ;Retry - 1 minutes
                1209600         ;Expire - 2 weeks
                43200)          ;Minimum - 12 hours
                IN      NS      linux.hfcb.com.cn.
                IN      MX 10   linux.hfcb.com.cn.
linux           IN      A       10.10.5.20
lywang          IN      A       10.10.5.13
mjc             IN      A       10.10.5.29
mk              IN      A       10.10.5.22

5.10.10.in-addr.arpa
TTL 43200
@               IN SOA  linux.hfcb.com.cn. root.hfcb.com.cn. (
                        2003042801      ;Serial
                        300             ;Refresh - 5 Minutes
                        60              ;Retry  - 1 Minutes
                        1209600         ;Expire - 2 Weeks
                        43200)          ;Mininum - 12 Hours
                        IN      NS      linux.hfcb.com.cn.
13                      IN      PTR     lywang.hfcb.com.cn.
29                      IN      PTR     mjc.hfcb.com.cn.
22                      IN      PTR     mk.hfcb.com.cn.
20                      IN      PTR     linux.hfcb.com.cn.


7。安装QMail等(参考peng老大安装文章)
安装用iceblood编写的qmail_setup-v1.5.4a.stable.tar.gz,用qmail_setup安装包的版本,解包后详细阅读
install和setup文件,根据需要修改setup。
然后执行 
#./setup >install.log
安装时,可能会出现下面情况
./setup: [Linux: command not found
./setup: line 278:  3659 Terminated              sh 
/tmp/iceblood/Qmail_setup/iceblood/sleep.sh
./setup: line 298:  5963 Terminated              sh 
/tmp/iceblood/Qmail_setup/iceblood/sleep.sh
userdel: user vpopmail does not exist
groupdel: group vchkpw does not exist
./setup: line 349:  6778 Terminated              sh 
/tmp/iceblood/Qmail_setup/iceblood/sleep.sh
could not connect to mysql update server Unknown database 'vpopmail' with 
database
./setup: line 380:  6805 Terminated              sh 
/tmp/iceblood/Qmail_setup/iceblood/sleep.sh
./setup: line 400:  8330 Terminated              sh 
/tmp/iceblood/Qmail_setup/iceblood/sleep.sh
mv: cannot stat `/usr/include/string.h.bak': No such file or directory
./setup: line 420:  9705 Terminated              sh 
/tmp/iceblood/Qmail_setup/iceblood/sleep.sh
./setup: line 449:  9730 Terminated              sh 
/tmp/iceblood/Qmail_setup/iceblood/sleep.sh
./setup: line 450: 10546 Terminated              sh 
/tmp/iceblood/Qmail_setup/iceblood/sleep.sh  (wd: 
/tmp/iceblood/Qmail_setup)

但没有问题,不管它。继续。。。
 
当安装完qmail+mysql+vpopmail时,要修改以下mysql的库文件的vpopmail databases。 

# mysql -uroot -ppassword password---你的密码 

在mysql中创建address表,具体表结构如下: 
# use vpopmail 
# create table address 

id int(11) unsigned NOT NULL auto_increment, 
pw_id int(5) unsigned NOT NULL default '0', 
name varchar(64) NOT NULL default '', 
email varchar(128) NOT NULL default '', 
UNIQUE KEY id (id), 
KEY pw_id (pw_id) 
);
修改原来的vpopmail表,方法如下: 
use vpopmail; 
alter table vpopmail drop primary key; 
alter table vpopmail add column pw_id int(5) NOT NULL primary key 
auto_increment; 

(注:添加address table,是因为要使用igenus中的个人通讯录,添加pw_id是因为igenus用它来标识用 

户的唯一性的,但vpopmail用的是pw_uid) 


前提:保证httpd.conf中有
User vpopmail 
Group vchkpw 

否则运行igenus会有权限问题。。


最后,安装igenus. 
1、安装igenus 
# cd /root 
# cp igenus_2_20030311.tgz /usr/local/apache 
# cd /usr/local/apache 
# mkdir temp 
# chown vpopmail.vchkpw temp 
# tar zxvf igenus_2_20030311.tgz(设置好后,将igenus目录cp至
/usr/local/apache/htdocs) 

2、修改config/config_inc.conf文件。config_inc.conf是iGNEUS的配置文件,必须正确设置,具体设 

置如下: 
# vi /var/www/igenus 

$CFG_BASEPATH = "/usr/loal/apache/igenus"; 
$ CFG_BASEPATH -----是iGNEUS webmail安装在系统的路径。 

$CFG_MYSQL_HOST = 'localhost'; 
$CFG_MYSQL_HOST -----是mysql服务器的地址。 

$CFG_MYSQL_USER = 'root'; 
$CFG_MYSQL_USER -----是mysql服务器的用户名。 

$CFG_MYSQL_PASS = '123456'; 
$CFG_MYSQL_PASS -----是mysql服务器的密码,根据你的实际填写 

$CFG_HOSTNAME = "http://bsd.gic.ac.cn/mail/"; 
$CFG_HOSTNAME-----是服务器的主机名,根据你的实际填写 

$CFG_LANGUAGE = gb; 
$CFG_LANGUAGE-----是系统默认语言,可有中英日可选。 

$CFG_GMT = +8; // GMT time local 
$CFG_GMT----是时区设置,中国选+8。 

$CFG_TEMP = $CFG_BASEPATH."/../temp"; 
$CFG_TEMP----临时文件的位置。 


好了,到这里,就全部结束了。 
测试一下: 
# /usr/local/apache/bin/apachectl start 
# /home/vpopmail/bin/vadddomain mydomains.com --添加域 
# /home/vpopmail/bin/vadduser test@mydomains.com --添加用户 
你要是安装了qmailadmin,也可以从web添加用户。
http://10.10.5.20/cgi-bin/qmailadmin
 
浏览: httpd://10.10.5.20/igenus/index.php ,就可以看到你的mail了。 



8.接下来就要安装VQSIGNUP了,这个包是用来提供用户申请账户功能的。 

· vqsignup的安装文档说“This program is not easy to install, so good luck ;]”,据我的经
验, vqsignup的安装相当简单,由于涉及比较多的文件编辑工作,同时比较简单,所以,vqsignup不提供安装脚本。以下是安装过程: 

· 1:tar -zxvf vqsignup-0.5.tar.gz 

· 2:编译 

cd vqsignup-0.5 

./configure 

make 

· 3:执行部分 

cp vqsignup /usr/local/apache/cgi-bin/vqsignup.cgi 

chown vpopmail /usr/local/apache/cgi-bin/vqsignup.cgi 

chgrp vchkpw /usr/local/apache/cgi-bin/vqsignup.cgi 

chmod ug+s /usr/local/apache/cgi-bin/vqsignup.cgi 

cp vqsignup.conf /usr/local/apache/cgi-bin/ 

chmod ugo+r /usr/local/apache/cgi-bin/vqsignup.conf 

· 4:html界面 

mkdir /usr/local/apache/cgi-bin/vqsignup 

mkdir /usr/local/apache/cgi-bin/vqsignup/html 

cp html/*.* /usr/local/apache/cgi-bin/vqsignup/html/ 

cp vqsignup.html /usr/local/apache/htdocs 

· 5:修改 

修改 /usr/local/apache/html/vqsignup.html 的下拉列表项以符合你的虚拟域; (可以用文本编辑器直接修改html代
码) 

修改 /usr/local/apache/cgi-bin/vqsignup.conf 的add_domain项以符合你的虚拟域; 

/usr/local/apache/html/vqsignup.html和
/usr/local/apache/cgi-bin/vqsignup.conf的虚拟域必须一一对应。 

· 6:测试 

打开浏览器,http://xxx.xxx.xxx.xxx/vqsignup.html ;
(hehe,界面太难看了,你自己修改吧。。。)

输入用户名、密码,Click Submit,OK! 

你可以使用qmailadmin察看,对应的虚拟域中已经多了一个用户! 


9.限制邮箱容量相关问题:
如果在vpopmail中不设定用户邮箱大小(如安装ice_blood包时没有指定),那么在mailbox.php中的第331行 
<?php echo intval($MTotalSize/($MQuota)*100)."%";?>会出现被0除的错误,则修改如下: 
<?php echo intval($MTotalSize/($MQuota+100)*100)."%";?>,让它从0%到100%显示。

限制容量:
cd /home/vpopmail/bin 
#./vsetuserqutoa hfcb.com.cn 21000000s --hfcb.com.cn这个域,都设成20m的 
如用vqsignup申请的默认却不限制容量,只能改Vpopmail数据库pwshell字段

10.结束...

 白狐狸 回复于:2003-04-30 20:48:23
很好嘛,鼓励一下先!

粗略看了一下,phpmyadmin完全没必要使用这种方法进行验证吧。直接把phpmyadmin中身份验证方式改为http即可。

 haohaoo 回复于:2003-05-01 12:50:12
没有安装php之前好像加入AddType application/x-tar.tgz 
Addtype application/x-httpd-php .php .php3 

后apache启动不了哦

 轩辕砍刀 回复于:2003-05-01 13:55:44
疯掉了

 xuehua 回复于:2003-05-01 14:47:05
不错

 lianyong 回复于:2003-05-01 19:10:40
[quote:3095a9b064="白狐狸"]很好嘛,鼓励一下先!

粗略看了一下,phpmyadmin完全没必要使用这种方法进行验证吧。直接把phpmyadmin中身份验证方式改为http即可。[/quote:3095a9b064]


是吗,在哪里改啊,是config.inc.php里面?


 :roll:

 lianyong 回复于:2003-05-01 19:11:32
[quote:05ffb9bfd5="轩辕砍刀"]疯掉了[/quote:05ffb9bfd5]

老大,啥意思? :(

 taijun 回复于:2003-05-01 21:22:01
收之,谢谢
不知rh9.0行不行,以后试试

 daidai 回复于:2003-05-02 19:11:58
辛苦了

 白狐狸 回复于:2003-05-02 19:28:26
[quote:bf109b5657="lianyong"]


是吗,在哪里改啊,是config.inc.php里面?


 :roll:[/quote:bf109b5657]

是的

 zgliu 回复于:2003-05-02 19:53:14
真是辛苦楼主了,不错!

 nnfirst 回复于:2003-05-02 20:10:35
hao

 1000g.net 回复于:2003-05-03 10:20:42
看了这些帖子,看来linux确实问题很多啊。

 alstone 回复于:2003-05-03 12:15:56
这些问题很正常啊。 多调调就行了。 调试的过程也是学习的过程

 冷雨纷飞 回复于:2003-05-05 22:06:11
看完了~
厉害呀~~
收了,慢慢调试,慢慢研究

 style 回复于:2003-09-05 11:40:21
但是直接根据iceblood的qmail_setup脚本安装就没有SMTP验证了

 skid 回复于:2005-07-13 11:08:12
太好了,7。3可以用吗?

原文转自:http://www.ltesting.net