全部博文(408)
分类: 系统运维
2006-12-08 13:42:11
AS3上安装Apache2+MySQL+PHP5+Resin+SSL+GD以及webalizer(补充)
我们假设安装系统时没有选择任何系统自带的服务器程序,例如Apache,MySQL。如果已经安装,请首先卸
载。我们还假设已经安装了开发工具。
第一部分:web服务器的配置
(一) 下载文件:(假设全部放在~/server下面)
httpd-2.0.50.tar.gz
mysql-standard-4.0.20-pc-linux-i686.tar.gz
http://dev.mysql.com/get/Downloa ... ysql.ihostunit.com/
php-5.0.0.tar.gz
resin-3.0.8.tar.gz
openssl-0.9.7d.tar.gz
j2sdk-1_4_2_05-linux-i586-rpm.bin
... -linux-i586-rpm.bin
gd-2.0.27.tar.gz
(二) 安装
1、MySQL
# groupadd mysql
# useradd -g mysql mysql
# cd /usr/local
# gunzip < ~/server/mysql-standard-4.0.20-pc-linux-i686.tar.gz | tar xvf -
# ln -s mysql-standard-4.0.20-pc-linux-i686 mysql
# cd mysql
# scripts/mysql_install_db --user=mysql
# chown -R root .
# chown -R mysql data
# chgrp -R mysql .
# bin/mysqld_safe --user=mysql &
# ./mysqladmin -u root password ‘password’ #使用mysqladmin修
改root的口令为 'password’
系统启动时自动运行:
# 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
2、安装openssl
cd ~/server
# tar -zxvf openssl-0.9.7d.tar.gz
# cd openssl-0.9.7d
# ./configure --prefix=/usr/local/openssl #设置安装路径
# make
# make test
# make install
3、配置Apache
# cd /usr/local/
# tar -zxvf ~sea/server/httpd-2.0.50.tar.gz
# ./configure --enable-so --enable-ssl --with-ssl=/usr/local/openssl --enable-rewrite
# make
# make install
到这我们就要说说APR了,这个东西是Apache可移植运行库,源自为了服务器代码的多
平台性, 尝试将不同的操作系统特定字节与操作系统无关代码隔离。结果就提供了一
个基础API的接口。具体作用大家可参考
文章。
apache-2.2.0提供了apr以及apr-util的源代码
要使用发行源代码中自带的apr/apr-util源代码进行安装,你必须手动完成:
我们先编译和安装 apr 1.2
# tar xzvf httpd -2.2.0.tar.gz
# cd httpd-2.2.0
# cd srclib/apr
# ./configure --prefix=/usr/local/apr
# make
# make install
现在编译和安装 apr-util 1.2
# cd ../apr-util
# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/
# make
# make install
# ./configure --prefix=/usr/local/apache2 \
--enable-mods-shared=all \
--enable-cgi \
--with-apr=/usr/local/apr \
--with-apr-util=/usr/local/apr-util/bin \
--enable-ssl \
--with-ssl=/usr/local/openssl/bin \
--enable-rewrite
# make
#make install
生成 Apache 启动文件
# cd /etc/rc.d/init.d
# sed 's/sbin/atd/local/servers/apache/bin/httpd/g' atd > httpd
# sed 's/atd/httpd/g' httpd > /tmp/txt
# sed 's/at daemon/httpd daemon/g' /tmp/txt > httpd
# rm /tmp/txt
# chmod 755 httpd
# chkconfig --level 345 httpd on
# chkconfig --level 0126 httpd off
启动并测试Apache服务器
# /etc/rc.d/init.d/httpd start
如果出现:
Starting httpd daemon: [ OK ]
则证明 httpd 已经正确的安装并已经在后台运行,如果出现其它的提示,请检查您的安装步骤是否正确
。
输入或,可以看到apache的欢迎页面。
./configure --prefix=/usr/local/apache2 \
--enable-mods=all \
--enable-rewrite \
--enable-speling \
--enable-ssl \
--with-ssl=/usr/local/openssl \
--enable-forward \
--enable-vhost-alias \
./configure --prefix=/usr/local/apache2 \
--enable-mods=all \
--enable-rewrite \
--enable-speling --enable-ssl \
--with-ssl=/usr/local/openssl \
--enable-forward \
--enable-vhost-alias \
make
make install
然后apachectl -l
显示:
Compiled in modules:
core.c
mod_access.c
mod_auth.c
mod_include.c
mod_log_config.c
mod_env.c
mod_setenvif.c
mod_ssl.c
prefork.c
http_core.c
mod_mime.c
mod_limitipconn.c
mod_status.c
mod_autoindex.c
mod_asis.c
mod_cgi.c
mod_negotiation.c
mod_dir.c
mod_imap.c
mod_actions.c
mod_speling.c
mod_userdir.c
mod_alias.c
mod_rewrite.c
mod_so.c
看到了rewrite,limitipconn,ssl都加载了。。
终于暂时的松口气了。。。
然后再重新编译php
而问题就出在--enable-so
现在知道了--enable-so的意思是说
让apache 核心装载DSO,但是不实际编译任何动态模块
--enable-ModuleName的意思是说 编译并包含模块ModuleName
而 --enable-ModuleName=shared 的意思是说将这个模块编译成动态的.
明白了这几个选项的意思,感觉就水落石出了
根据上面的总结
我应该去掉--enable-so这行
如何希望动态编译模块
比如:--enable-rewrite应该替换为: --enable-rewrite=shared
最后,我将要编译的应该为:
./configure \
--prefix=/usr/local/apache2 \
--enable-mods-shared=all \
--enable-rewrite \
--enable-speling \
--enable-forward \
--enable-cgi \
--with-apr=/usr/local/apr \
--with-apr-util=/usr/local/apr-util/bin \
--enable-ssl \
--with-ssl=/usr/local/openssl
上面中 --enable-mods-shared=most的意思是说 动态的编译进来大多数的模块
而 --enable-mods-shared=all是指动态的编译所有的模块
如果把-shared去掉,就是静态的编译了...
综上所述
总结出了我个人对apache的动态与静态编译的理解
好比有两个人a和m
a代表apache,m代表module
要想让a使用m的东西
一个方法是把m的东西都放到a那里去,a使用的时候就是现成的了
就是所谓的静态编译
还有一个方法,
就是告诉a, m的住址,当a要使用m的东西的时候,a去找m,然后使用
不过,这种方法要注意的一个问题就是:m必须要有实际的住址,
否则a会找不到m而产生错误的,我此文开始提到的 apachectl startssl产生
的错误就是这个原因,应该再编译好ssl才可以的.
这种方法也就是apache 的动态(DSO)编译了
希望我上面的叙述能够给初学的朋友一些帮助
同时也希望朋友们和我一起交流
共同学习,共同进步
httpd: apr_sockaddr_info_get() failed
去apache网站查找才知道,这是apache2.0的一个小bug
这是他们网站的原文
Change Listen directive to bind to all addresses returned by
apr_sockaddr_info_get when a hostname is not specified
解决办法:vi /etc/sysconfig/network
修改字段HOSTNAME=localhost.localdomain
然后重启服务器,问题解决。
3、配置J2DK
# cd ~/server
# chmod 755 j2sdk-1_4_2_05-linux-i586-rpm.bin
# rpm -ivh j2sdk-1_4_2_05-linux-i586.rpm
vi ~/.bash_profile
把其改成如下:
JAVA_HOME=/usr/java/j2sdk1.4.2_05
CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/rt.jar
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
BASH_ENV=$HOME/.bashrc
USERNAME="root"
export USERNAME BASH_ENV PATH JAVA_NAME CLASSPATH
注销,然后重新登录,使环境变量起作用
# exit
# su -
# java
# javac
如果java 和javac运行了,说明java环境变量配置成功。
4、安装Resin
# cd /usr/local
# tar -zxvf ~/server/resin-3.0.8.tar.gz
# cd resin-3.0.8/
#
./configure \
--prefix=/usr/local/resin \
--with-java-home=$JAVA_HOME \
--with-apxs=/usr/local/apache2/bin/apxs \
--with-apache=/usr/local/apache2
# make
# make install
resin直接编译
./configure --prefix=/usr/local/resin --with-apache=/usr/local/apache2
make
make install
然后配置resin的环境
RESIN_HOME=/usr/local/resin
RESIN_BIN=$RESIN_HOME/bin
export RESIN_HOME
export RESIN_BIN
PATH=$PATH:$RESIN_BIN
然后修改/usr/local/resin/conf/resin.conf中的
apache的目录
启动测试
没有问题
这个时候忽然想到了曾经在网上看到的resin启动的问题
需要有个sleep15 seconds的延时什么的,否则resin很有可能不会正常启动
于是
使用vi在/usr/local/servers/apache/htdocs/创建一个名为test.jsp的文件,其内容包括:
<%
out.println("
存盘之后,使用浏览器查看 如果正确的话,可以看到"Hello, World!"
字样。否则,请检查:Resin是否运行、Resin的参数修改是否正确、JAVA环境安装是否正确、Apche是否
运行正常。
5、安装GD
# cd /usr/local
# tar -zxvf ~/server/gd-2.0.27.tar.gz
# cd gd-2.0.27/
# ./configure --prefix=/usr/local/gd2
# make
# make install
6、安装PHP
# cd /usr/local
# tar -zxvf ~/server/php-5.0.0.tar.gz
# mv php-5.0.0 php5
# cd php5/
#
./configure --prefix=/usr/local/php/ \
--with-mysql=/usr/local/mysql/ \
--with-apxs2=/usr/local/apache2/bin/apxs \
--with-curl=/usr/local/curl/ \
--with-mcrypt=/usr/local/libmcrypt/ \
--with-gd=/usr/local/gd2 \
--enable-track-vars \
--enable-ftp \
--with-zlib-dir=/usr/local/zlib/
make
make install
cp ./php.ini-dist /usr/loocal/php/php.ini
# make
# make install
( 如果configure最后出现以下错误信息:configure: error: libxml2 version 2.6.11 or greater
required. 则补充操作如下:
wget
tar -zxvf libxml2-2.6.11.tar.gz
cd libxml2-2.6.11
./configure --enable-ipv6=no
make
make install
# cp php.ini-dist /usr/local/php/lib/php.ini
# vi /usr/local/php/lib/php.ini
;default_charset = "iso-8859-1"
在这行下面加一行
default_charset = "gbk"
# vi /usr/local/apache/conf/httpd.conf
找到#AddType application/x-tar .tgz 这行,在下面加两行
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
找到下面一行在后面加上index.php,这表示网站的默认页也能够为index.php
DirectoryIndex index.html index.html.var index.php
注意:改变了http.conf后,要重启apache服务
使用vi打开httpd.conf,在头部添加:
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
AddType application/x-httpd-php .php3
重新启动Apache以使修改生效
# /etc/rc.d/init.d/httpd restart
测试PHP
使用vi在/www/troyoo.com建立一个文件(info.php),内容包括:
phpinfo();
?>
使用浏览器查看数。如果出现错误,则请检查:Apache是否运行、参数修改是否
正确。
为php编译mcrypt函数
网站的需要,php需要用到mcrypt函数,初步看了一下php的编译函数,很简单,就是增加--with-mcrypt
编译参数就行,但你真的预编译的时候,他就会提示错误configure: error: mcrypt.h not found.
Please reinstall libmcrypt,大致意思是你没有编译libmcrypt,我们只好先编译libmcrypt
到这里下载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,去下载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.
" 按理你应该是安装了mhash,之所以他提这么的错误,我们可以初步分析为预编译
的时候没找到lib文件所在的地址,所以我们可以这么做
cd mcrypt-2.6.4
LD_LIBRARY_PATH=/usr/local/lib ./configure
make
make install
第二部分:web服务器日志分析软件webalizer
webalizer-2.01-10-src.tgz
# tar zxf webalizer-2.01-10-src.tgz
#
./configure --with-language=simplified_chinese \
--with-gdlib=/usr/local/gd2 \
--with-gd=/usr/local/gd2
# perl /path/of/webalizer_patch.pl ./ #这里为了解决乱码问题,参看
()
# make
# make install
# mkdir /www/troyoo.com/usage
#cp webalizer /usr/bin/
#cd /etc
#ls webalizer*
webalizer.conf.sample
#cp webalizer.conf.sample webalizer.conf.troyoo
#vi webalizer.conf.troyoo
Edit the webalizer.conf.troyoo file(将里面的值改成下列):
LogFile /usr/local/apache2/log/access_log
OutputDir /www/troyoo.com/usage
HostName
Incremental yes
PageType htm*
PageType cgi
PageType php
HideURL *.gif
HideURL *.GIF
HideURL *.jpg
HideURL *.JPG
HideURL *.ra
IgnoreURL /taskbar*
运行:
#/usr/bin/webalizer -c /etc/webalizer.conf.troyoo
正常信息:
Webalizer V2.01-10 (Linux 2.4.21-4.EL) Simplified Chinese
使用日志文件 /usr/local/apache2/logs/access_log (clf)
输出结果到 /www/troyoo.com/usage
产生报表的主机名是 'SEA'
正在读取历史信息文件... webalizer.hist
正在生成报表 ---- 为 七月 2004
正在生成综合报表
正在保存历史信息文件...
3273647 条记录 共用时 33.57 秒, 97517/sec
自动运行:
设定crontab 让webalizer每小时运行一次:
#crontab -e
0 * * * * /usr/bin/webalizer -c /etc/webalizer.conf.troyoo
至此, Redhat LinuxAS3.0上安装Apache2.0.50+MySQL+PHP5+Resin+SSL以及流量统计工具
(webalizer)已经安装完毕,网站的根目录是/www/troyoo.com,您可以在这个系统上提供基于PHP和JAVA
语言的站点服务。