RHAS4上安装MYSQL+APACHE+PHP+ZEND问题
tongxiaokun
|
1#
tongxiaokun 发表于 2006-08-13 11:56
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 问题解决。 |