Rhel下安装httpd+php+mysql+phpmyadmin
话说这个安装真是把我折磨得够呛,特在此总结整理,希望能够给有需要的朋友一些帮助。在此篇博文中我将完整的记录自己安装的全过程... ...
背景介绍:我们真正需要的是Mysql,为了给客户提供更为友好的管理Mysql项目组决定采用phpMyAdmin来进行管理。(本人接触Linux也不到一个星期)
1、 受Windows思维影响,一开始便上网搜索“Rhel下安装Mysql",搜到了资料并且照着资料操作,还蛮顺利的不到1小时便安装成功。于是将安装步骤记录下来之后便开始下载PhpMyAdmin,接着上网搜索相关资料,搜索结果中夹杂着”使用CentOs 安装apache+mysql+php"之类的条目,心里有点不解为什么出来一些不相干的结果... ...
找到一篇文章照着文章中的说法开始安装phpMysql,可是解压完之后却发现找不到所谓的httpd.conf,再进一步摸索才知道还得安装httpd服务器;虽然有点不爽但还是继续前行,这一前行才知道什么是崩溃,安装途中抛出一堆错误,都是与以来相关的... ...
2、 上网搜索“如何解决Linux rpm方式安装时的依赖关系”... ... 经过对搜索结果进行初步的排查将注意力锁定在Yum.
Yum(Yellow Dog Updater, Modified)是一个Fedora中的shell前端软件包管理器,寄语RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理以来关系,并且1次安装所有依赖的网络连接存储(NAS)和基于块的存储区域网(SAN)。
3、 上网搜索到Yum的基本用法,于是便照着资料开始操作起来,可是当敲入"yum list"时却报错了,意识是说不具备权限... ...
4、 将错误信息帖到google上搜索,得知在REDHAT 5以后,加入了YUM这个新功能,可以解决RPM包的依赖关系,但不注册RHN的话不这个功能是不能使用的。继而对其期待品CentOs展开了解,CentOs(Community Enterprise Operating System)是Linux发行版之一。有些要求高度稳定性的服务器以CentOS替代商业版的Red Hat Enterprise Linux使用。两者的不同,在于CentOS并不包含封闭源代码软件。
5、 ^_^ ^_^ 问题有进展了呀! 心想这下便可以使用CentOs的yum来安装了,依赖之痛将不再光临。接下来的关键问题便是搭建CentOs的Yum源,选中了搜索结果中的“配置YUm本地更新源”... ...
6、 悲剧呀真是悲剧,照着网上的资料做到半路时感觉越来越不对劲,什么DVD挂载...这是什么东东呀?于是再次在网上游荡,终于找到了一篇释疑的文章《在RHEL_5中配置YUM服务器端及客户端》,读罢了解到我其实只需要配置一个客户端即可。
7、 找到一篇好的参考资料:http://tonychiu.blog.51cto.com/656605/326640 ,由于我的操作系统是64位的因此按照文章中给出的资料下载rpm包。下载的时候又报404错误,MD,真是让人崩溃呀!我一路走来受得折磨还少吗? 怎么办呢? 再一次陷入了沉默... ...
8、 突然想到是不是版本不对呀,因此截取下载链接中的前半截进行访问,如:http://mirrors.163.com/centos/5/os/x86_64/CentOS/yum-3.2.19-18.el5.centos.noarch.rpm,只截取其前面的那部分即http://mirrors.163.com/centos/5/os/x86_64/CentOS进行访问。^_^ ^_^ 果真有了,列出一堆的rpm包,于是我开始搜索“yum-3.2.19-18.el5.centos.noarch.rpm”,虽然没能搜索到一模一样的rpm包(因为包已经升级了),但是可以据此而搜多到更高版本的rpm。
9、 这回终于成功的一次性安装好了apache+mysql+php,剩下来就只剩phpMyAdmin了。
上网搜索phpMyAdmin的配置,搜索到一堆资料,大体做法都是如下“将phpMyAdmin解压缩到web伺服器的文件根目录说明白些也就是你放置网页的地方“PHPMyAdmin\libraries”目录下的“config.default.php”文件拷贝到“PHPMyAdmin”根目录下,并改名为‘config.inc.php’并进行相应的配置”... ...
10、 这又让我抓狂了呀,网上的那种做法与项目中的需求场景不相符... ... 再此陷入沉默。继续摸索最终总算弄懂了个大概:
我们管理Mysql需要phpMyAdmin,phpMyAdmin运行于httpd之上且需要php的解析
说到底其实只要配置好httpd即可了
11、 按照网上的资料配置好了/etc/httpd/httpd.conf,在浏览器中输入192.168.6.111/phpmyadmin时确显示一个Forbidden的页面,错误信息:you don't have permission to access /phpmyadmin on this Server
12、 按照网上给出的解决方案如使用chmod赋权限和编辑httpd.conf等都没能成功,最后是关闭了SeLinux才使问题得到解决。设置方法如下:
vi /etc/Selinux/targeted/booleans(默认并没有这个文件的)
添加内容:
httpd_disable_trans = 1
然后键入如下命令:
#setsebool httpd_disable_trans 1
#service httpd restart
再此访问192.168.6.111/phpmyadmin
页面上只出现如下字符: PHP5.2+ is required
13、 现在摆在面前的有两个选择,一则是降低phpMyAdmin的版本以使其匹配php5.1.6;另外则是升级php到5.2+。我选择的是后者,理由是32位的mySql虚拟设备中使用的就是phpMyAdmin3.5.1。 上网搜索“CentOs 5.3下升级php”,找到一篇还不错的参考资料《CentOs 5.x系统下使用Yum升级php到5.2.x 最简便方法》... ...
————————RHel使用CentOs的Yum源————————————————
1、 删除RHel自带的YUm源
2、 下载4个文件(64位最新版)
一、Wget http://mirrors.163.com/centos/5/os/x86_64/CentOS/yum-3.2.22-26.el5.centos.noarch.rpm
二、Wget http://mirrors.163.com/centos/5/os/x86_64/CentOS/yum-metadata-parser-1.1.2-3.el5.centos.x86_64.rpm
三、Wget http://mirrors.163.com/centos/5/os/x86_64/CentOS/python-iniparse-0.2.3-4.el5.noarch.rpm
四、Wget http://mirrors.163.com/centos/5/os/x86_64/CentOS/yum-fastestmirror-1.1.16-14.el5.centos.1.noarch.rpm
第一项和第四项一起安装,免得发生相互依赖的错误… …
3、 下载配置文件
wget http://sudone.com/download/CentOS-Base.repo(163的源)
另外网上提到的中国科技大学的Yum源,本人在Rhel5.3下测试失败
4、 编辑配置文件
因为默认的配置文件中服务器地址用的版本号是变量$releasever,所以需要将其替换为实际的版本号,否则是无法连接到服务器的,当前CentOS最新版是5.3,所以我们修改CentOS-Base.repo:
vi CentOS-Base.repo
:%s/$releasever/5.3/
保存推出即可
5、 将Yum设置成自动运行(可选)
# chkconfig --list yum
# chkconfig --level 3 yum on
关于phpMyAdmin的配置,主要就是配置/etc/httpd/httpd.conf
在其中加入:
<Directory "phpmyadmin路径">
AllowOverride None
Order allow, deny
Allow from all
</Directory>
Alias /phpmyadmin "phpmyadmin路径"
最后关闭SELinux即可(关闭方法文中有叙述)
————————————————————————————————————————
14、 参照《CentOs5.3升级php成5.2.9的办法》进行操作,报错:
mysql-libs-5.1.5.3-1.el5.remi-x86_64 conflicts with file mysql5.0.77i386或者是x86_64 ... ...
郁闷,继续搜寻,了解到单独升级PHP将失败,联通Mysql一起升级才行。
——————————————————————————————————————
CentOS5.3 的php版本默认为5.1.6,然后在5.2.9版本之前的的php都存在一个漏洞,但是目前网上很多地方都无法使用yum update php*升级到5.2.9,比较常见的是升级到5.2.6版本的,经过搜索国外资料,现在终于找到一种升级CentOS的php到5.2.9的方法。
注意,此方法只能在官方的php版本上升级,如果你使用网上的升级到5.2.6版本的升级方法已经升级了,将无法使用本方法升级php。
运行下面命令:
http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm
wget http://rpms.famillecollet.com/en ... el5.remi.noarch.rpm
http://rpms.famillecollet.com/enterprise/5/remi/i386/remi-release-5-7.el5.remi.noarch.rpm
然后编辑/etc/yum.repos.d/remi.repo
#vi /etc/yum.repos.d/remi.repo
在这个文件的最后增加一行:
priority=13
保存退出。
/etc/yum.repos.d/epel.repo和/etc/yum.repos.d/epel-testing.repo这两个文件也按照上面的方法进行编辑!
使用下面的命令进行升级,但是经过测试,如果单独升级php将提示失败,只有联通mysql一起升级才可以,所以我们必须执行以下命令才能升级php到5.2.9版本:
yum –enablerepo=remi update php* mysql*
注意: 上述描述的第一个rpm包是不正确的,自己可以参照我文章中描述的方法寻找可用的rpm包(我今天还特意记录了一下但遗留在公司了... ... )
——————————————————————————————————————
15、 联通之后运行,发现14中描述错误中的x86_64部分错误已经不见了,但是i386的冲突问题仍然存在。 这是由于我当初安装Mysqlx86_64时其自动安装了i386
16、 又是个纠结呀, 灵机一动终于又发现了新大陆,解决方案为:
#yum remove mysql.i386
# yum remove mysql.i686
^_^ ^_^ 搞定,使用yum list php发现php已经由原来的5.1.6升级到5.3.3,mysql从之前的mysql5.0.7升级到了mysql-5.1.53
17、 好事多磨呀,我快词穷了... ... ^_^ ^_^。终于登录成功,但是登录界面却显示如下信息"无法加载mcrypt(外链、英语)扩展,请检查你的Php配置... ...
哎,我的M呀,继续上网搜索解决方案,
方案一:找到php.ini,却掉";extenion=mysql.so"前面的";"号即可(试验失败)
方式二: 因为没有安装php-mcrypt php-mbstring 等扩展(正解)
想起来了,自己当初使用Yum安装时的确没有安装扩展。继而使用如下命令安装:
#yum install php-mcrypt php-mbstring
结果: 出现了错误,原因是我现在的php已经是5.3.3了而php-crypt与php-mbstring都还是5.1.6版本的。
18、 又回到了岔路口: 到底是回滚到5.1.6+php2.1.11呢还是尝试安装php5.3.3的php-mcrypt和php-mbstring呢?
19、 搜索“php5.3.3-mcrypt和php5.3.3-mbstring安装”,搜索出了很多结果,但是大多数的做法都是使用源码安装,重新编译... ...
头疼了呀! 捣了将近两个小时未果,开始转换关键词进行搜索“CentOs 5.3升级php-mcrpt和php-mbstring"。 ^_^ ^_^ 非常高兴的是发现了一篇与我的问题相似度非常高的文章《CentOs5.3升级php到5.3.0后的问题》,照着文章的描述下载安装了3个rpm,php-mbstring和php-common的安装倒是挺顺利,但是临到php-mcrypt时报了一堆有关依赖的错误... ...
再度面临崩溃... ... 心里也就很纳闷,那文章的作者明确说只要安装三个包即可,难道他就没有碰到这个问题? 而且让人郁闷的是还有那么多的人原封不动的转载, 这种作风使不得呀使不得!
于是再次以超人的毅力将php-mcrypt所以来的所有rpm包都下载了下来,安装时又报了一个glib-common的冲突问题... ...
20、 考虑到自己已经在这次安装下耗费了太多时间,为了保持进度果断回滚到php5.1.6时代,安装了phpMyAdmin2.11-11.1。
访问测试,结果报错:
#1045: Access denied for user 'root@localhost'(using password:No)
经过短暂的摸索之后修改了config.inc.php, 可以登录了。
题外话:phpMyAdmin3+起就不需再采取配置config.inc.php这种方式了。
反思: 有些版本的不同可能会误导你对一些产品的理解... ...
21、 出现新的错误: #2003,服务器没有响应
又是花了一个多小时排查调试,最终发现问题竟然是出在phpMyAdmin下配置文件config.inc.php中的...[host] 处, 我起初填写的是本机的ip:192.168.6.111,当将此处改成localhost便成功登录。
疑问: 为什么配Ip不可以呢?
至此整个配置工作终于完成,尽管没有使用起初预定的phpMyAdmin3.5.1
22、 今日将制作好的Mysql64bit放到应用平台部署,部署成功,但当使用PhpMyAdmin(使用了代理)登录时却发现个问题,可以显示登录页面,但是输入账号/密码之后却什么也看不到。导致此问题的最大可能是因为后台代理中是假定MySql数据库为5.1版本的,而CentOs默认的为5.0.x,况且PM也建议32位与64的虚拟设备采取同样版本的phpMyAdmin。也因此我遗留的小问题这回是逃避不了啦... ...
23、 来吧,来吧,老子不怕,这么多折磨都经历过了还怕这个小问题。这次换了个搜索关键词“CentOs5.3 升级mysql”。^_^ ^_^ 运气貌似不错马上就找到了针对性很强的资料:http://hi.baidu.com/houdelei250/blog/item/09d833cdee24b71e00e92876.html
其实后来的实践结果表明其所起的作用与CentOS升级php几乎一样,反思呀:关键词的确定是个很重要的问题!
——————————————————————————————————————#cat /etc/redhat-release
CentOS release 5.3 (Final)
我的系统是5.3的,首先要下载两个软件包
下载地址:
http://ianwinter.co.uk/wp-content/uploads/2010/08/epel-release-5-4.noarch.rpm
epel-release-5-4.noarch.rpm
下载地址:
http://ianwinter.co.uk/wp-content/uploads/2010/08/remi-release-5.rpm
remi-release-5.rpm
安装成功后
cd /etc/yum.repos.d/
vi remi.repo
将enabled=0改为enabled=1(有两处),保存退出
yum update mysql
再查看发现版本情况已经变成了:
mysql.x86_64 5.5.7-1.el5.remi
php.x86_64 5.3.4-0.1.201011270530.el5.remi
重启HTTPD, 再进入浏览器访问,你会发现之前的“PHP 5.2+ is required”已经不见了
—————————————————————————————————————
24、 正欲欢呼时又出现了意外状况,在浏览器中输入账号/密码报“#2002 无法登录 MySQL 服务器”。跑到后台使用#mysql -u 用户名 -p访问时抛出错误:
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)这也是升级后才有的问题!
上网一搜索,结果有很多,貌似这还真是个常见的错误,整理归纳了一下常用的解决方案有:
#################################################################
解决方法一:
因为你还没有启动mysql,当你启动mysql后,mysql.sock就会自动的生成。先查看 /etc/rc.d/init.d/mysqld status 看看mysql是否已经启动.
解决方法二:
1)默认的mysql.sock文件是在/tmp目录下。
2)我们建立一个软连接,ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock
3)赋权限:如果是权限问题,则先改变权限 #chown -R mysql:mysql /var/lib/mysql
25、 其实我根本没有机会逐一验证上面的这些做法,因为当我使用命令#service mysqld start启动Mysql时就抛出了另外一个异常,而且我觉得这个异常是上面那个异常的起因。异常:“MySQL Daemon failed to start”
26、 继续网络求助,也算是个常见的问题,尝试了一些做法也没能搞定。于是想到了通过日志查看具体错误信息兴许会有所裨益... ... 如下为我的错误日志内容:
***************************************************************
mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
/usr/libexec/mysqld: Table 'mysql.plugin' doesn't exist
[ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
[ERROR] /usr/libexec/mysqld: unknown option '--skip-locking'
[ERROR] Aborting
使用命令: #mysql_install_db - u mysql有
WARNING: The host '192168006206' could not be looked up with resolveip.
This probably means that your libc libraries are not 100 % compatible
with this binary MySQL version. The MySQL daemon, mysqld, should work
normally with the exception that host name resolving will not work.
This means that you should use IP addresses instead of hostnames
when specifying MySQL privileges !
Installing MySQL system tables...
摸索尝试到了晚上9点还没搞定... ... 暂时搁浅回家... ...
明天会是怎样呢? ? ?
27、 继续网络求助, 已经记不得很清楚当时是如何进入了如下这个帖子:
—————————————————————————————————————————————————
全部进行重命名的备份,然后新件一个 .repo后缀的文件 名字自己随便起,在这个文件中添加内容如下:
[utterramblings]
name=Jason’s Utter Ramblings Repo
baseurl=http://www.jasonlitka.com/media/EL$releasever/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka
最好先复制到一个文本文档中,免得编码不同有问题。
好了那就开始yum 升级需要的包吧!这里我建议大家现查询下自己系统已经安装的php版本
shell>rpm -aq|grep php
然后执行相应版本的升级
shell>yum install php* 或shell>yum install php-devel
首先就是要升级我们的php 等升级完成以后就可以升级相应的包了。
shell>yum install php-gd
shell>yum install php-mcrypt
shell>yum install php-mbstring
OK 等所有的都升级完以后我们用php -m查看下加载情况:
shell>php -m
bz2
calendar
ctype
curl
date
dbase
exif
filter
ftp
gd
gettext
gmp
hash
iconv
json
ldap
libxml
mbstring
mcrypt
memcache
mysql
mysqli
odbc
openssl
pcntl
pcre
PDO
pdo_mysql
PDO_ODBC
pdo_sqlite
posix
pspell
readline
Reflection
session
shmop
SimpleXML
sockets
SPL
standard
sysvmsg
sysvsem
sysvshm
tokenizer
wddx
xml
Zend Optimizer
zip
zlib
[Zend Modules]
Zend Extension Manager
Zend Optimizer
####################################
看到了那些必须的包以后就可以重启apache了
shell>service httpd restart
到这里就可以登录phpmyadmin看看还有那些烦人的提示吗!
———————————————————————
28、 刚开始的时候还是蛮兴奋的,因为发现文章中所描述的情况跟自己的很相似,但是想到了作者使用的是CentOs5.1而且并没有提到任何有关mysql升级的描述。因为我的需求要同时满足Mysql升级到5.1+,PHP升级到5.2+,因此不打算贸然就去操作了(因为这样贸然尝试失败的情况已经上演过多次了)。我只是复制了文章中的链接:http://www.jasonlitka.com点击进去
29、 ^_^ ^_^ 纯英文呀,虽然说不是对于看英文网站毫无障碍但是还是看得懂的。一眼就看到了《MySQL 5.1 packages live, PHP & httpd also upgraded》,通读了一下文章中的内容得知作者已经将Mysql升级到5.1.5,php升级到5.2.4,httpd升级到2.2.6.^_^ ^_^ 这不恰好是我所需要的吗?
30、 兴奋没有来得太久,因为我并未在其文章中找到相关的yum源下载的链接。在其网站摸索了一回仍然未果之后就直接以“MySQL 5.1 packages live, PHP & httpd also upgraded”作为关键词进行搜索,进入了:http://www.jasonlitka.com/yum-repository/。终于找到相关yum源的描述,按照作者的描述进行操作,配置成功!
31、 回头想想,其实最终找到的Yum源就是28中文章描述的。后来突然想明白了YUm源就是一些地址描述、验证码什么的,我们是通过YUm中描述的地址去下载相应的安装包,这样子一来只要YUm源的链接有效,使用CentOS5.1跟CentOs5.3的xxx.repo文件就可以一致,至于下载的安装包是不是最新的就得看Yum仓库是否更新了。
32、 登录phpMyAdmin成功,进入内层页面发现有提示:“配置文件现在需要一个短语密码”。
解决方法:
新版本的PhpMyAdmin 增强了安全性,需要在配置文件设置一个短语密码。否则进入之后会有“配置文件现在需要一个短语密码。”的红色警叹提示。
1、将 phpMyAdmin/libraries/config.default.php中的
$cfg['blowfish_secret'] = ''; 改成 $cfg['blowfish_secret'] = '123456'; (注:其中的’123456′为随意的字符)
2、在phpMyAdmin目录中,打开config.sample.inc.php,18行
$cfg['blowfish_secret'] = ''; 改成 $cfg['blowfish_secret'] = '123456'; (注:其中的’123456′为随意的字符)
这个密码用于Cookies的加密,以免多个PhpMyAdmin或者和其他程序共用Cookies时搞混。
33、 http://192.168.6.206/phpmyadmin 用户名乱码。
解决方法:
解决:
在phpmyadmin的config.default.php文件:
搜索$cfg['DefaultLang'] ,将其设置为 zh-gb2312 ;
搜索$cfg['DefaultCharset'] ,将其设置为 gb2312 ;
——————————————总结感悟 ———————————————————
这一路走来还真不轻松,^_^ ^_^ 这些问题,不碰到便罢了。但是对于新手来说,第一次碰到的话,自己查找解决方案的话一般都是到处查找,网上一大堆的方法都不适用的情况下,自己会感觉到多么的无奈了... ...
A、 配置之类的活儿最好是看别人示范!虽然说自己摸索体会来得深些但毕竟太耗时间了 B、 其次在真正着手解决问题之前一定得花些时间弄明白问题到底是什么?否则就会像我上述的苍蝇表现!
C、 程序员都是在纠结、崩溃中成长起来的, 经历此次浩劫,我想我对Linux下安装部署有了个更为深入的了解。想必下次再从事类似任务的时候应该可以比较快的搞定了。
D、 一定要要注意看官方的说明文档,虽然是英文的,但是还是很有用的。一手资料更为通用,最大的屏蔽了个体的差异
之所以将这些琐屑的步骤都写出来,因为我发现自己的整个配置过程中暴露出了许多不好的习惯,有许多值得改进的地方。特写此博帮助自己反思... ...