实验环境
linux系统(redhat)+apache(源码)+php(源码)+mysql(绿色解压缩后能使用软件)
1 首先安装apache
源码包为httpd-2.2.17.tar.bz2
# tar xf httpd-2.2.17.tar.bz2 解压源码包
# cd httpd-2.2.17 //一般都有编译说明文件(如INSTALL),我们在编译的时候最好看看。
#less INSTALL
看过说明文件后,下一步就要执行预编译。
--prefix=指定安装路径
--sysconfdir=指定配置文件的路径
--enable-so 表示启用apache的动态装卸模块功能
--enable-ssl 启用ssl
--enable-track-vars 用于追踪
--enable-rewrite启用URL地址重写
--enable-mods-shared=most 所支持模块的共享方式
--with-zlib 支持zlib数据压缩工具
上面给出的都是常用的,可以看./configure –help 可以查看详细的信息。
# ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd --enable-ssl --enable-track-vars --with-zlib --enable-rewrite --enable-mods-shared=most
预编译没有报错的话就可以编译了
#make
编译过后就可以安装了
#make install
安装过后为了能够正常使用还需要改一些配置:
一:要实现和redhat一样启动和关闭服务如service httpd start ,那就需要我们自己写个脚本httpd放在/etc/init.d目录下(由于能力有限,借助于redhat官方提供的httpd脚本自己在改写)其重要部分:
#!/bin/bash
. /etc/rc.d/init.d/functions 把function脚本引入到脚本中
HTTPD_LANG=${HTTPD_LANG-"C"}
apachectl=/usr/local/apache/bin/apachectl 指定apachectl路径
httpd=/usr/local/apache/bin/httpd 指定httpd路径
prog=httpd 设置变量prog值
pidfile=${PIDFILE-/var/run/httpd.pid} 如PIDFILE有值则以这个值给pidfile,如果没有则把后面的字符串赋值给你变量pidfile。在这我们需要指定配置文件中定义PidFile "/var/run/httpd.pid"
lockfile=${LOCKFILE-/var/lock/subsys/httpd} 锁文件,不是httpd进程自己产生的
RETVAL=0
STOP_TIMEOUT=${STOP_TIME-10}
start() {
echo -n $"Starting $prog: "
LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd
RETVAL=$?
echo
[ $RETVAL = 0 ] && touch ${lockfile}
return $RETVAL
}
stop() {
echo -n $"Stopping $prog: "
killproc -p ${pidfile} -d 10 $httpd
RETVAL=$?
echo
[ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile}
}
reload() {
echo -n $"Reloading $prog: "
if ! LANG=$HTTPD_LANG $httpd $OPTIONS -t >&/dev/null; then
RETVAL=$?
echo $"not reloading due to configuration syntax error"
failure $"not reloading $httpd due to configuration syntax error"
else
killproc -p ${pidfile} $httpd -HUP
RETVAL=$?
fi
echo
}
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status -p ${pidfile} $httpd
RETVAL=$?
;;
restart)
stop
start
;;
condrestart)
if [ -f ${pidfile} ] ; then
stop
start
fi
;;
reload)
reload
;;
graceful|help|configtest|fullstatus)
$apachectl $@
RETVAL=$?
;;
*)
echo $"Usage: $prog {start|stop|restart|condrestart|reload|status|fullstatus|graceful|help|configtest}"
exit 1
esac
exit $RETVAL
注意改httpd脚本的权限和chkconfig –add httpd和chkconfig httpd on
二,把二进制执行路径加入到PATH环境变量中。
# vim /etc/profile
PATH=$PATH:/usr/local/apache/bin 添加
# . /etc/profile
重读/etc/profile配置文件
三,把apache头文件引入道/etc/inculd目录下
# ln -sv /usr/local/apache/include /usr/include/apache 使用软链接
四,把库文件放到/etc/ld.so.conf.d目录下,以便被其他服务调用。
# vim /etc/ld.so.conf.d/apache.conf
/usr/local/apache/lib
# ldconfig –v 重读上面的那个文件,使其立即生效。
五,让man文档能够不指定路径就能查看。
# vim /etc/man.config 编辑这文件在里面加一行
MANPATH /usr/local/apache/man
到此为止,一个http服务已安装好。
2,下面安装mysql。
在这我们使用绿色不用编译的软件包mysql-5.5.15-linux2.6-i686.tar.gz
# tar xf mysql-5.5.15-linux2.6-i686.tar.gz -C /usr/local/
# groupadd -r mysql
# useradd -g mysql mysql 创建mysql用户和组,让mysql目录下的文件属主属组为mysql
# chown -R mysql:mysql mysql
初始化mysql的时候要先创建逻辑卷,然后把数据目录指定为此逻辑卷。
# /usr/local/mysql/scripts/mysql_install_db --user=mysql --datadir=/mydata/data/
初始化话成功后需要把/usr/local/mysql/目录下的文件属主改成root
# chown -R root .
# ll
total 76
drwxr-xr-x 2 root mysql 4096 Nov 29 18:49 bin
-rw-r--r-- 1 root mysql 17987 Jul 14 03:09 COPYING
drwxr-xr-x 4 root mysql 4096 Nov 29 18:49 data
drwxr-xr-x 2 root mysql 4096 Nov 29 18:49 docs
drwxr-xr-x 3 root mysql 4096 Nov 29 18:49 include
-rw-r--r-- 1 root mysql 7604 Jul 14 03:09 INSTALL-BINARY
drwxr-xr-x 3 root mysql 4096 Nov 29 18:49 lib
drwxr-xr-x 4 root mysql 4096 Nov 29 18:49 man
drwxr-xr-x 10 root mysql 4096 Nov 29 18:49 mysql-test
-rw-r--r-- 1 root mysql 2552 Jul 14 03:09 README
drwxr-xr-x 2 root mysql 4096 Nov 29 18:49 scripts
drwxr-xr-x 27 root mysql 4096 Nov 29 18:49 share
drwxr-xr-x 4 root mysql 4096 Nov 29 18:49 sql-bench
drwxr-xr-x 2 root mysql 4096 Nov 29 18:49 support-files
mysql的主配置文件
# cp support-files/my-large.cnf /etc/my.cnf 需要把这个文件放到/etc下
编译/etc/my.cnf,指定datadir路径,同时修改thread_concurrency = 2
thread_concurrency = 2
datadir = /mydata/data
mysql的服务控制脚本mysql.server 这个脚本要求mysql的安装路径必须是/usr/local/mysql/目录下。
# cp support-files/mysql.server /etc/init.d/musqld
下面的操作同上面的apache安装一样,这里只写过程了哈
# chkconfig --add mysqld
# chkconfig mysqld on
# vim /etc/profile
PATH=$PATH:/usr/local/apache/bin:/usr/local/mysql/bin
# . /etc/profile
# ln -sv /usr/local/mysql/include /usr/include/mysql
create symbolic link `/usr/include/mysql' to `/usr/local/mysql/include'
# vim /etc/ld.so.conf.d/mysql.conf
/usr/local/mysql/lib添加这个路径
# ldconfig -v
# vim /etc/man.config
MANPATH /usr/local/mysql/man添加
测试
root@localhost /]# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.5.15-log MySQL Community Server (GPL)
Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
3,下面安装php
安装包php-5.3.6.tar.bz2
操作步骤和apache一样,在这只写操作过程和结果
# tar xf php-5.3.6.tar.bz2
--with-apxs2=/usr/local/apache/bin/apxs 把php编译成apache的模块
--with-mysql=/usr/local/mysql 自动编译访问mysql的驱动
-with-mysqli=/usr/local/mysql/bin/mysql_config
--with-zlib
--enable-track-vars
--enable-mbstring=all
下面的几项是让php实现绘图功能
--with-xml
--with-png
--with-jpeg
--with-freetype
--with-gd
#../confgure --prefix=/usr/local/php5 --with-apxs2=/usr/local/apache/bin/apxs --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbsring=all --enable-track-vars --with-png --with-xml --with-freetype --with-gd --with-zlib
#make
#make install
安装完成后 ,要做以下配置
[root@mail php-5.3.6]# cp php.ini-production /usr/local/php5/lib/php.ini向php提供配置文件
# vim /etc/httpd/httpd.conf 添加支持.php网页的新类型, 网站主目录加上index.php
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
定义php测试页
# cd /usr/local/apache/htdocs/
# vim index.php
加入如下内容测试php网页
<?php
phpinfo();
?>
加入下面内容测试php能否连上mysql。
<?php
$link=mysql_connect(localhost,'root','');
if ($link)
echo "Success";
else
echo "Failure"
?>