LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2317|回复: 13

Redhat Enterprise Linux Advanced Server 4上安装MYSQL+APACHE+PHP+ZEND问题

[复制链接]
发表于 2005-12-9 23:39:38 | 显示全部楼层 |阅读模式
Redhat Enterprise Linux Advanced Server 4上用MySQL-server-4.0.21-0.i386.rpm,MySQL-client-4.0.21-0.i386.rpm,MySQL-devel-4.0.21-0.i386.rpm,MySQL-shared-4.0.21-0.i386.rpm文件安装MYSQL后无法启动MYSQL,压根就没生成mysql.sock,机器名.pid这个两个文件,MYSQL目录里也没默认数据库文件,不知道Redhat Enterprise Linux Advanced Server 4是不是不能用这样的安装文件,以前在RH8和RH9上都是可以安装整个并能正常启动服务的。MSYQL没安装上去,所以后面的APACHE+PHP+ZEND就没安装,然而这个MYSQL也卸载不掉,也不知道该删除哪些文件,然后就直接安装系统自带的MYSQL+APACHE+PHP,APACEH倒是安装上了也支持PHP了,但MYSQL还是不能启动,系统自带的MYSQL服务名是mysqld,启动提示超时。
  不知道在Redhat Enterprise Linux Advanced Server 4上安装MYSQL+APACHE+PHP+ZEND正确的配置是怎么样的,希望大虾指点。
 楼主| 发表于 2005-12-9 23:56:43 | 显示全部楼层
RH EA的APACHE的web目录也不是/usr/local/apache/htdocs了,RH EA的APACHE的web目录好象在/var/www/html里
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-12-10 01:01:16 | 显示全部楼层
我把自己的WEB目录放到/lib/www里后改名成html启动httpd服务提示
?ˉ??¨ httpd???Syntax error on line 265 of /etc/httpd/conf/httpd.conf:
DocumentRoot must be a directory
可是他默认的html是个空目录啊
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-12-10 01:34:24 | 显示全部楼层
zend已经安装了,可还是乱码
[Zend]
zend_optimizer.optimization_level=15
zend_extension_manager.optimizer=/usr/local/Zend/lib/Optimizer-2.5.5
zend_extension_manager.optimizer_ts=/usr/local/Zend/lib/Optimizer_TS-2.5.5

zend_extension=/usr/local/Zend/lib/ZendExtensionManager.so
zend_extension_ts=/usr/local/Zend/lib/ZendExtensionManager_TS.so
"php.ini" 1078L, 38765C                                                                                     1077,1       底端
难道是这个ZendOptimizer-2.5.5-linux-glibc21-i386在 linux ea4下不支持?我用这个不行啊

有没有Redhat Enterprise Linux Advanced Server 4下的zend下载呀?,
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-12-10 02:24:58 | 显示全部楼层
php的测试信息里没有Zend Optimizer的说明信息,郁闷,正常的安装后,在测试也面上应该可以看到
This program makes use of the Zend Scripting Language Engine:
Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies with Zend Extension Manager v1.0.4, Copyright (c) 2003-2004, by Zend Technologies with Zend Optimizer v2.5.5, Copyright (c) 1998-2004, by Zend Technologies
这些信息,可我的只有这些
This program makes use of the Zend Scripting Language Engine:
Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies
回复 支持 反对

使用道具 举报

发表于 2005-12-10 09:17:40 | 显示全部楼层
mysql.sock文件可能在/var/run下面.
回复 支持 反对

使用道具 举报

发表于 2005-12-11 14:11:54 | 显示全部楼层

运行SELinux了吗?

把SELinux先关掉,再试试mysql
至于PHP,起码要能运行mysql再装
否则很难保证PHP运行mysql,不能用数据库的PHP不就等于html了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-12-11 17:42:41 | 显示全部楼层
现在我用Redhat Enterprise Linux ES4.0 自带的mysql和apache能正常启动服务并运行,现在的问题是我的WEB上的php文件都是通过zend加密了的,所以需要在系统上安装Zend Optimizer,因为这个系统不自带,所以我用自己下载的Zend Optimizer v2.5.5安装(PHP版本是PHP Version 4.3.9),安装后Zend Optimizer v2.5.5自动写入他的代码到php.ini的[zend]段,这个说明zend是已经作用于php了的,但apache服务重新启动后zend还是没起作用,显示的还是乱码(与apache编码无关,apache默认编码已经改成gb2312了),不知道是为什么,我以前在rh8和rh9上安装同版本zend时没出现过这个问题,不知道是否和系统有关??
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-12-11 21:00:36 | 显示全部楼层
呵呵,这两天没去照相,就在家鼓捣服务器来了,凑合先把这篇笔记放到这个板块

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


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

2.rpm包可以到http://www.findrpm.com上找, ... 具体方法参考
网上教程。(装包: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 问题解决。

基本上就是这些了,写着个又花了1个半钟头,哎,这两天比上班还累,不过收获也算不小,歇着去了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-12-11 21:05:03 | 显示全部楼层
Redhat Enterprise Linux中如何关闭SELinux?  

红帽企业 Linux 4 包括了一个 SELinux 的实现。SELinux 代表了用户,程序以及进程间相互交流的主要变化。在这个发行版本中,SELinux 被默认安装并被开启使用。

在安装的过程中,您可以选择禁用 SELinux,或是设置它只记录警告信息,或是使用它的只在以下守护进程中有效的目标化策略:dhcpd、httpd、mysqld、named、nscd、ntpd、portmap、postgres、snmpd、squid、syslogd

目标化策略在默认的情况下被启用。

红帽企业 Linux 4 使用在 ext2/ext3 文件系统上的扩展属性来支持 SELinux。这就意味着,当一个文件被写到默认挂载的 ext2/ext3 文件系统中时,一个扩展的属性也会被写入。

当系统有 红帽企业 Linux 4 和 红帽企业 Linux 2.1 双重启动的时候,这就可能会产生一些问题。红帽企业 Linux
2.1 内核不支持文件的扩展属性,当它遇到文件的扩展属性时,系统可能会崩溃。

有Linux桌面用户在安装了Redhat Enterprise Linux 4.0后,可能会需要关闭SELinux,正确的方法是:
修改/etc/selinux/config文件中的SELINUX="" 为 disabled ,然后重启。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表