RHAS4上安装MYSQL+APACHE+PHP+ZEND问题

RHAS4上安装MYSQL+APACHE+PHP+ZEND问题

  周末在家坐了两天,历尽千辛万苦终于把这些东西配好了,再回首,荆棘密布啊!以下是我的安装笔记,
详细的步骤就不写了,网上到处都是教程,我只把遇到的一些困难及解决办法写出来,加深一些印象,
也让和我遇到相同困难的朋友们少走些弯路。


1.安装前先看一下服务器上有没有编译软件,没有的话先装一个gcc,我装的是gcc4.0的rpm包。

2.rpm包可以到http://www.findrpm.com上找,装gc...??方法参考
网上教程。(装包:rpm ivh 包名、删包 rpm -e 包名、查询 rpm -qa|grep 包名、详细信息 rpm -q 包名 i、
文件列表 rpm -q 包名 l)。

3.apache,mysql,php这三个就不要用rpm包了,因为你需要根据自己的情况作具体配置。

4.先装MySQL,这个东西最好不要自己编译,我开始自己编译了很多次都没成功,估计是gcc的版本太高所致,官方
网站上推荐用gcc2.95 2.96 3.2什么的。直接下载二进制包要省事的多,二进制包里面有一个安装说明文件,按照那个
一步一步来就ok了,一般都是装在/usr/local/mysql下。解包 tar zxvf 包名

5.mysql装完以后,可以ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql 做一个连接,以后在任何路径下都可以执行mysql了。

6.mysql装好以后别忘了修改root密码,把user表就留一个root@localhost就行了,其他都删掉,以后需要再慢慢加,一定要给php
连接数据库建一个用户,只分配必要的权限。记得修改mysql授权表后要 flush privileges 刷新权限。
修改密码#mysqladmin -u root -p oldpassword newpasswd
分配权限mysql>GRANT 权限 ON 库名.表名 TO 用户名@主机名 IDENTIFIED BY "密码" [WITH GRANT OPTION]
权限有这些:
ALTER 修改表和索引 / CREATE 创建数据库和表 / DELETE 删除表中已有的记录 / DROP 抛弃(删除)数据库和表
INDEX 创建或抛弃索引 / INSERT 向表中插入新行 / REFERENCE 未用 / SELECT 检索表中的记录 / UPDATE 修改现存表记录
FILE 读或写服务器上的文件 / PROCESS 查看服务器中执行的线程信息或杀死线程
RELOAD 重载授权表或清空日志、主机缓存或表缓存。 / SHUTDOWN 关闭服务器 / ALL 所有;ALL PRIVILEGES同义词
USAGE 特殊的“无权限”权限

7.如果你装的是php4.X,那么要改一下mysql密码的加密算法,用 update user set password=old_password('password') where user='root';
改成老的算法,不然php是连接不上数据库的。如果是php5就不用改了。

8.然后装GD库,这个网上也有不少教程,装GD库之前要装很多东西,有gd-devel,xpm,ZLIB,JPEGSRC,LIBPNG啥的,都有现成
的rpm包,需要什么就装什么,最后再装GD2,我是下载原文件编译的,在这里下http://www.boutell.com/gd/
#tar zxvf gd-2.0.28.tar.gz
#cd gd-2.0.28
#./configure --with-png=/usr/local --with-jpeg=/usr/local --with-freetype=/usr
#make
#make install
编译过程很顺利,直接装rpm估计也可以。

9.然后装apache2,这个强烈推荐自己编译,我开始装了rpm的,很顺利,可后来装php的时候发现不能动态加载模块,造成php不能加载mysql,
万般无奈只好返工。顺便说一句apache从2以后改名叫httpd了,我装的是httpd-2.0.55.tar.gz
#tar zxvf httpd-2.0.50.tar.gz
#cd httpd-2.0.50
#./configure --prefix=/usr/local/apache2 --enable-module=so
#make
#make install
--enable-module=so就是动态加载模块用的,编译基本顺利,如果发现缺少什么软件就从rpm包里面找。
./configure --help可以查看配置参数列表。

10.在每次编译之前,最好先运行 make clean 或者 make distclean 来清除先前的编译环境。

11.apache装好后启动一下试试 /usr/local/httpd/bin/apachectl start,不报错就ok了。可以在浏览器上输入网址,应该可以看到apache的默认页。

12.最关键的就是装php了,我的配置命令:
./configure --prefix=/usr/local/php --with-apxs2=/usr/local/httpd/bin/apxs --with-jpeg-dir=/usr/local --with-png-dir=/usr/local --with-gd=/usr/local --enable-trace-vars --with-zlib-dir=/usr/local --with-mysql=/usr/local/mysql --with-freetype-dir=/usr/lib/ --enable-gd-native-ttf
在configure时的提示信息:
Configuring extensions
checking whether to enable LIBXML support... yes
checking libxml2 install dir... /usr/lib/libxml2.so.2.6.19
configure: error: xml2-config not found. Please check your libxml2 installation.
可是libxml2的rpm包我已经装了,经过反复查找问题,发现libxml2-devel没有装,下载一个rpm包装上ok!还是那句话:缺什么就装什么。
装完php后,重启apache,出现了一个难题,显示:
Syntax error on line 232 of /usr/local/apache/conf/httpd.conf:
Cannot load /usr/local/apache/modules/libphp5.so into server: /usr/local/apache/ modules/libphp5.so: cannot restore segment prot after reloc: Permission denied
上网查找n小时,终于找到答案,原来新版的Linux有一个SELinux保护模式,像个防火墙,是用来提高安全性的,可以让工作进程在一定范围内受限,
如果开启这个模式很多程序运行就会受限,具体情况我还没有深入了解,不过总算找到解决办法了:
执行 chcon libphp5.so -t shlib_t 问题解决,不过chcon的具体作用我还不太了解。
可以用 system-config-securitylevel 暂时关掉SELinux模式,不然apache很可能不能正常运行,等我把SELinux的详细配置规则弄明白再开启吧。
php装好以后需要修改一下/usr/local/httpd/conf/httpd.conf配置文件,增加
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
默认的启动页增加一个index.php ,apache详细的配置优化过程请参考相关文档。
重启apache,然后就可以写一个测试页测试一下了 ,如果熟悉的紫色表格出现就基本ok了,仔细看一下该装的模块是否都加载了,GD,mysql什么的,
然后写一个连接数据库的代码:
@$db = mysql_connect("localhost","user","password");
if(!$db)
{
echo 'connect fail:'.mysql_error();
}
else
{
echo 'connect ok!';
}
?>
如果显示connect ok!就ok,否则根据错误信息解决。

13.然后要装的是ZendOptimizer,这个东西可以提高30%-40%的程序执行速度,不过我装这个主要是因为phpwind是用zend-encode加了密的,要用这个解密,
不然页面都是乱码,类似这样:
Zend 2000112002110894895x?? 峐mO???R?$?Z夸舃!?_6&獇?um............
ZendOptimizer安装是傻瓜型的,非常简单:
#tar zxvf ZendOptimizer-2.5.10a-linux-glibc21-i386.tar.gz
#cd ZendOptimizer-2.5.10a-linux-glibc21-i386
#./install.sh
根据提示一路ok,重启apache后,如果没问题,phpinfo里应该显示:
This program makes use of the Zend Scripting Language Engine:
Zend Engine v2.0.5, Copyright (c) 1998-2004 Zend Technologies
with Zend Extension Manager v1.0.8, Copyright (c) 2003-2005, by Zend Technologies
with Zend Optimizer v2.5.10, Copyright (c) 1998-2005, by Zend Technologies
可是问题偏偏就来了,我的只显示:
This program makes use of the Zend Scripting Language Engine:
Zend Engine v2.0.5, Copyright (c) 1998-2004 Zend Technologies with Zend Extension Manager v1.0.8, Copyright (c) 2003-2005。
phpwind依然是乱码,说明Zend Optimizer没有加载成功!又经过n小时查找终于发现apache的错误日志里有:
Failed loading /usr/local/Zend/lib/Optimizer-2.5.10/php-5.0.x/ZendOptimizer.so: /usr/local/Zend/lib/Optimizer-2.5.10/php-5.0.x/ZendOptimizer.so: cannot restore segment prot after reloc: Permission denied
原来还是SELinux的问题!
执行 chcon ZendOptimizer.so -t shlib_t 问题解决。
谢谢分享
不错!!很有帮助!!谢谢分享!!