配合QMAIL邮件系统:SOLARIS + HTTPD + MYSQL + PHP + LIMITIP

发表于:2007-05-26来源:作者:点击数: 标签:
本人声明如需转载请保留如下信息: 作者:LLZQQ MAIL:LLZQQ@126.COM FROM:WWW.CHINA UNIX .NET 一、READY: 首先安装下列工具包,并设置PATH: perl ncurse autoconf libgcc automake make gcc 二、My SQL -4.0.15: #groupadd mysql #useradd-gmysql–s/bin

本人声明如需转载请保留如下信息:

作者:  LLZQQ 
MAIL: LLZQQ@126.COM 
FROM: WWW.CHINAUNIX.NET 


一、READY:

首先安装下列工具包,并设置PATH:

perl
ncurse
autoconf
libgcc
automake
make
gcc

二、MySQL-4.0.15:

# groupadd mysql
# useradd -g mysql –s /bin/false mysql

# pkgadd -d ./ -s /var/spool/pkg SFWmysql SFWgcmn
# pkgadd SFWgcmn SFWmysql
# /opt/sfw/mysql/bin/mysql_install_db

# chown -R root /opt/sfw/mysql 
# chgrp -R mysql /opt/sfw/mysql 
# chown -R mysql /opt/sfw/mysql/var

# cp /opt/sfw/mysql/share/mysql/my-medium.cnf /etc/my.cnf
# vi /etc/my.cnf

bind-address = 127.0.0.1

设置启动脚本:

# cp /opt/sfw/mysql/share/mysql/mysql.server /etc/init.d/mysql.server
# ln /etc/init.d/mysql.server /etc/rc3.d/S79mysql
# ln /etc/init.d/mysql.server /etc/rc0.d/K00mysql
# ln /etc/init.d/mysql.server /etc/rc1.d/K00mysql
# ln /etc/init.d/mysql.server /etc/rc2.d/K00mysql
# ln /etc/init.d/mysql.server /etc/rcS.d/K00mysql
# chown root:sys /etc/init.d/mysql.server /etc/rc3.d/S79mysql 
# chmod 0744 /etc/init.d/mysql.server /etc/rc3.d/S79mysql 

设置ROOT密码:

# mysqladmin -u root password ******

三、HTTPD-2.0.49:

# gzip –d patch-2.5.4-sol8-intel-local.gz
# pkgadd –d patch-2.5.4-sol8-intel-local
# gzip -d httpd-2.0.49.tar.gz
# gzip -d mod_limitipconn-0.22.tar.gz
# tar vxf httpd-2.0.49.tar
# tar vxf mod_limitipconn-0.22.tar
# cd httpd-2.0.49
# ./configure 
--prefix=/usr/local/apache 
--with-module=aaa:../mod_limitipconn-0.22/mod_limitipconn.c 
--with-charset=gb2312 
--with-extra-charsets=all 
--enable-so 
--enable-shared=max 
--enable-module=most 
--enable-forward 
--enable-deflate 
--enable-threads
--with-mpm=worker

# make
# make install

建立启动脚本:

# cp /usr/local/apache/bin/apachectl /etc/init.d/httpd
# chmod 744 /etc/init.d/httpd
# chown root:sys /etc/init.d/httpd
# ln -s /etc/init.d/httpd /etc/rc3.d/S50http 
# ln -s /etc/init.d/httpd /etc/rc3.d/K50http 
# ln -s /usr/local/apache/bin/apachectl /bin/apache  
# ln -s /usr/local/mysql/bin/mysql /bin/mysql
# vi /usr/local/apache/conf/httpd.conf

配置允许的最大进程数量:

<IfModule worker.c>
StartServers            10
ServerLimit             2000
MaxClients              1500
MinSpareThreads         25
MaxSpareThreads         75
ThreadsPerChild         25
MaxRequestsPerChild     0
</IfModule>

修改添加下列配置项:

DirectoryIndex index.html index.html.var index.php 
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
AddDefaultCharset GB2312
ExtendedStatus On

为安全起见取消VER显示:

ServerTokens Prod
ServerSignature Off

限制IP进程数设置:

<IfModule mod_limitipconn.c> 
<Location / > 
MaxConnPerIP 3 
</Location> 
</IfModule>

限制PHP请求的数据大小:

<Files *.php>  
SetOutputFilter PHP  
SetInputFilter PHP  
LimitRequestBody 5640000  
</Files>

四、PHP-4.3.6:

# gzip -d php-4.3.6.tar.gz
# tar vxf php-4.3.6.tar
# cd php-4.3.6
# ./configure 
--prefix=/usr/local/php
--with-charset=gb2312 
--with-mysql 
--with-mail
--with-apxs2=/usr/local/apache/bin/apxs 
--enable-track-vars 
--enable-force-cgi-redirect 
--enable-pic 
--enable-inline-optimiation 
--enable-memory-limit 
--enable-bcmath
# make
# make install

# cp php.ini-dist /usr/local/php/lib/php.ini
# vi /usr/local/php/lib/php.ini

register_globals = On
display_errors = Off
memory_limit = 16M
post_max_size = 6M 
upload_max_filesize = 6M

五、测试服务器

# vi /usr/local/apache/htdocs/test.php

<?php phpinfo(); ?> 

在浏览器中测试:

http://nero.3322.org/test.php

六、注意事项:

如果要使用QMAIL/SENDMAIL+IGENUS的邮件服务器,要先安装QMAIL/SENDMAIL然后再安装PHP,否则PHP中的“—with mail”将不会生效。

 llzqq 回复于:2004-06-08 14:56:45
上面贴子是为了大家在SOLARIS上安装QMAIL而写的,想不到大家都不认可。

 fwizard 回复于:2004-06-08 15:09:45
楼主辛苦了

 yyh 回复于:2004-06-08 16:52:36
好贴。


 wodeemy 回复于:2004-06-10 16:16:48
llzqq  发帖 必是精品!
但老大你发的太快!
我都做不过来了!

 peng 回复于:2004-06-10 18:34:28
怎么没有mysql安装过程?
还有apache设置的:
MaxClients 1500 
MinSpareThreads 25 
MaxSpareThreads 75 
ThreadsPerChild 25 
MaxRequestsPerChild 10000 
</IfModule> 
是不是有商榷的地方。
MaxClients x ThreadsPerChild = MaxRequestsPerChild 

还有,对于solaris,可以适当的添加MaxClients和ThreadsPerChild数值。但尽量不要添加MaxClients,这个更容易消耗memory,要体现mpm优势,可以适当更改ThreadsPerChild的值。这样,在sun下能比较好的体现出mpm的特性。对于linux下的mpm=workers模式,则要尽量添加MaxClients的值。linux对apache2的这个性能支持不是很好。

 llzqq 回复于:2004-06-10 18:43:27
怎么没有MYSQL的安装过程,第二节就是啊。
另外你的关于APACHE的说法不是很明白,我斑竹详细一点好吗

 peng 回复于:2004-06-10 19:07:27
[quote:7747840e21="llzqq"]怎么没有MYSQL的安装过程,第二节就是啊。
另外你的关于APACHE的说法不是很明白,我斑竹详细一点好吗[/quote:7747840e21]

sory,第一个是我看花眼了。

关于apache2的连接请求数的,你可以看看apche2手册。
在apche2中,起用了多道处理模块(mpm)的机制。也就是说引出了线程的概念。在apche1中,一个请求,apahce都要启动一个进程来响应一个http请求,这样就对系统的memory有很大的要求。

apche2引进的现成的感念,就是线程机制,可以复用内存。(具体可以看看相关的东东)。对于apache的最大响应数,就是MaxClients x ThreadsPerChild 的结果。对于MaxRequestsPerChild ,应该是对请求的一个限制,一般默认是0。就是不限制。

你的设置的数值,被你的最大限制给设置了。
对于sun的主机,web访问属于tcp/ip连接,还应该更改solaris的内核,设置最大的tcp/ip连接请求数,不然,软件的设置还是不行的。
内核可以通过ndd来更改,更改的tcp_conn_req_max_q 和tcp_conn_req_max_q0的值。这个值的大小也要参考系统的具体情况和机器型号。

 llzqq 回复于:2004-06-10 19:17:42
明白了。

 peng 回复于:2004-06-10 19:22:56
[quote:f8f21f0da5="llzqq"]如果不限制MaxRequestsPerChild的值,是否会引发安全问题,利用MaxRequestsPerChild来攻击服务器?[/quote:f8f21f0da5]

要是攻击你,这个值限制也没有用的。

如果你的访问连接被非法请求占满,正常用户不能访问,这个限制有什么用。。

对了,忘了说了,我也不是斑竹。我是跟着南非蜘蛛来学习的。。 :em17:

 llzqq 回复于:2004-06-10 19:28:23
明白了

 wodeemy 回复于:2004-06-11 17:19:27
# pkgadd -d ./ -s /var/spool/pkg SFWmysql SFWgcmn 
# pkgadd SFWgcmn SFWmysql 

我去哪找 MYSQL的包呀?!?

 llzqq 回复于:2004-06-11 17:44:22
[quote:53356c6dda="wodeemy"]# pkgadd -d ./ -s /var/spool/pkg SFWmysql SFWgcmn 
# pkgadd SFWgcmn SFWmysql 

我去哪找 MYSQL的包呀?!?[/quote:53356c6dda]

下载这个,里面有的。
http://mirrors.cn99.com/solaris/software_companion_x86.rr.bz2

 wodeemy 回复于:2004-06-15 09:32:48
怎么用software_companion_x86.rr.bz2呀??

知道了!
> bunzip2 file.rr.bz2
> mv file.rr file.iso

 wodeemy 回复于:2004-06-16 11:20:35
[root@bjtest bin]#./apachectl start
[root@bjtest bin]#./apachectl stop 
httpd (pid 630?) not running
完全按你的方法做的!
做的过程中没有出错!
但HTTPD 好象启动不了!

 llzqq 回复于:2004-06-16 11:28:58
检查一下HTTPD.CONF,应该可以的

 wodeemy 回复于:2004-06-16 13:42:15
[Wed Jun 16 13:33:18 2004] [alert] (22)Invalid argument: setgid: unable to set group id to Group 4294967295
[Wed Jun 16 13:33:18 2004] [warn] pid file /usr/local/apache/logs/httpd.pid overwritten -- Unclean shutdown of previous
 Apache run?
[Wed Jun 16 13:33:18 2004] [alert] (22)Invalid argument: setgid: unable to set group id to Group 4294967295
[Wed Jun 16 13:33:18 2004] [alert] (22)Invalid argument: setgid: unable to set group id to Group 4294967295
[Wed Jun 16 13:33:18 2004] [alert] (22)Invalid argument: setgid: unable to set group id to Group 4294967295
[Wed Jun 16 13:33:18 2004] [alert] (22)Invalid argument: setgid: unable to set group id to Group 4294967295
[Wed Jun 16 13:33:18 2004] [alert] (22)Invalid argument: setgid: unable to set group id to Group 4294967295
[Wed Jun 16 13:33:18 2004] [alert] (22)Invalid argument: setgid: unable to set group id to Group 4294967295
[Wed Jun 16 13:33:18 2004] [alert] (22)Invalid argument: setgid: unable to set group id to Group 4294967295
[Wed Jun 16 13:33:18 2004] [alert] (22)Invalid argument: setgid: unable to set group id to Group 4294967295
[Wed Jun 16 13:33:18 2004] [alert] (22)Invalid argument: setgid: unable to set group id to Group 4294967295
[Wed Jun 16 13:33:18 2004] [alert] (22)Invalid argument: setgid: unable to set group id to Group 4294967295
[Wed Jun 16 13:33:18 2004] [notice] Apache configured -- resuming normal operations
[Wed Jun 16 13:33:18 2004] [alert] Child 1023 returned a Fatal error...\nApache is exiting!

实在搞不定了,老大帮看一下!!

 llzqq 回复于:2004-06-16 14:41:38
哪个SOLARIS自带的卸了没有,另外检查httpd.conf中的

user nobody
group nogroup

两项

 wodeemy 回复于:2004-06-16 16:05:18
已经可以了!谢谢老大!

 Linux@初学者 回复于:2004-07-12 23:59:01
# ./mysql -uroot
ld.so.1: ./mysql: fatal: libncurses.so.5: open failed: No such file or directory
Killed

 Linux@初学者 回复于:2004-07-13 01:04:50
make: not found
# find / -name make
/usr/ccs/bin/make
/usr/share/lib/make
/usr/xpg4/bin/make
/usr/appserver/samples/rmi-iiop/cpp/src/client/make
/usr/local/bin/make
/usr/local/doc/make
^C# /usr/local/bin/make
Making all in srclib
make[1]: Entering directory `/soft/httpd-2.0.48/srclib'
Making all in apr
make[2]: Entering directory `/soft/httpd-2.0.48/srclib/apr'
Making all in strings
/bin/bash: make: command not found
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/soft/httpd-2.0.48/srclib/apr'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/soft/httpd-2.0.48/srclib'
make: *** [all-recursive] Error 1
楼主是怎么装的MAKE啊?我是下的GZ包,然后gzip -d make-3.80-sol9-intel-local.gz

 llzqq 回复于:2004-09-23 17:24:02
看看我发的《SOLARIS初步设置》把该装的编译工具和其他文中列出的包都装上问题就不大了

# gzip -d ncurses-5.3-sol9-intel-local.gz
# pkgadd -d ncurses-5.3-sol9-intel-local

# gzip -d libiconv-1.8-sol9-intel-local.gz
# gzip -d gcc-3.3.2-sol9-intel-local.gz
# pkgadd -d libiconv-1.8-sol9-intel-local
# pkgadd -d gcc-3.3.2-sol9-intel-local

# gzip -d make-3.80-sol9-intel-local.gz
# gzip -d automake-1.7.2-sol9-intel-local.gz
# pkgadd -d make-3.80-sol9-intel-local
# pkgadd -d automake-1.7.2-sol9-intel-local


# pkgadd -d expat-1.95.5-sol9-intel-local
# pkgadd -d gdbm-1.8.3-sol9-intel-local
# pkgadd -d openssl-0.9.7d-sol9-intel-local
# pkgadd -d libgcc-3.3-sol9-intel-local
# pkgadd -d libpcap-0.8.1-sol9-intel-local
# pkgadd -d tcp_wrappers-7.6-sol9-intel-local 
# pkgadd -d tcpdump-3.8.1-sol9-intel-local 
# pkgadd -d zlib-1.2.1-sol9-intel-local
# pkgadd -d lsof-4.68-sol9-intel-local

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