由于最近工作中遇到了一个在比较老旧RedHat系Linux发行版系统上升级安装Apahce+MysqL+PHP环境的事情,鼓弄了半天,发现和在比较新的操作系统如CentOS7上安装配置还是有一定区别的,因此,在此记录一下主要的方法和过程,希望能帮到有同样需求的朋友。(注:有些文件目录可能和你的实际情况有出入,请按需调整)
CentOS6.5环境:
内核版本: 2.6.32-431.el6.x86_64
GLIBC版本:2.1.2
安装升级AMP版本(均为目前最新的稳定版本)说明:
原有低版本:
(1)Apache2.2.15
(2)MysqL5.1
(3)PHP5.3.3
待升级版本:
(1)Apache2.4.23
(2)MysqL5.7
(3)PHP 5.6.28
Apache升级安装
首先,说一下Apache的升级安装,从低版本环境升级到高版本Apache环境可以采用两种方法:
yum方法
升级安装步骤:
(1)配置yum仓库
cd /etc/yum.repos.d
wget http://repos.fedorapeople.org/repos/jkaluza/httpd24/epel-httpd24.repo
# Place this file in your /etc/yum.repos.d/ directory
[epel-httpd24]
name=httpd-2.4 scl
baseurl=http://repos.fedorapeople.org/repos/jkaluza/httpd24/epel-$releasever/$basearch/
enabled=1
skip_if_unavailable=1
gpgcheck=0
[epel-httpd24-source]
name=httpd-2.4 scl - Source
baseurl=http://repos.fedorapeople.org/repos/jkaluza/httpd24/epel-$releasever/SRPMS
enabled=0
skip_if_unavailable=1
gpgcheck=0
(2)安装
yum install httpd24
yum方法可能遇到的坑:
1.httpd24安装后会自动兼容原有版本的Apache服务,安装到哪里去了?
你会发现通过yum安装,httpd24服务被安装到了/opt/rh/httpd24/root目录下,并且按照Linux根目录下的目录形式将httpd24分别的文件分别放置,比如主程序就在/opt/rh/httpd24/root/etc/httpd下,日志就在/opt/rh/httpd24/root/var/log/httpd下。
另外,通过chkconfig | grep httpd你会发现保留了原版本的httpd服务,另外增加了httpd24-httpd服务。httpd24以这种方式单独呈现,因此,所有的配置工作都需要在对应的目录下展开。
2.仍然需要你手动安装apxs 工具,用于在PHP编译中生成扩展模块。
apxs is a tool for building and installing extension modules for the Apache HyperText Transfer Protocol (HTTP) server.
需要支持PHP,就需要自己重新编译生成libPHP5.so作为Apache服务器支持PHP的模块,因此,apxs 是必备条件,所以你仍然需要进行针对apxs 的源码包安装,你可以通过http://httpd.apache.org/docs/current/programs/apxs.html单独获取源码包进行编译安装。
源码包方法
源码下载地址:http://apache.fayea.com/httpd/需要下载httpd源码包以及deps依赖包,你可以通过源码包编译方式进行安装,这里就不多做介绍了。
MysqL升级安装
在PHP安装前,为了生成对MysqL的PDO连接模块,系统中需要首先安装MysqL Client,当然,如果需要服务端,你就需要进行安装,安装方法可以多种方法,这里可以参考MysqL的官网,以下以yum方法为例:
查看http://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/说明,通过Yum方式安装MysqL5.7版本,通过http://dev.mysql.com/downloads/repo/yum/下载一个5.7版本的repo包,比如:
rpm -Uvh MysqL57-community-release-el6-n.noarch.rpm
安装社区版MysqL Server
yum install MysqL-community-server
安装后目录为:
/usr/local/MysqL
通过阅读doc/INSTALL-BINARY进行用户、用户组、文件夹权限的配置工作,由于MysqL5.7版本的安全策略发生了一些变化,之后的主要步骤如下:
(1)初始化数据库
MysqL_install_db --datadir=/var/lib/MysqL –user=MysqL
(2)忽略权限启动MysqL服务
MysqLd_safe --skip-grant-tables &
(3)无密码登录
MysqL -p
(4)修改root密码
update MysqL.user set authentication_string=password('password') where user='root' and Host = 'localhost';
flush privileges;
(5)使用标准模式重新启动MysqL,带密码登录MysqL,再次确认修改密码:
alter user 'root'@'localhost' identified by 'password';
flush privileges;
PHP升级安装
由于需要生成libPHP5.so作为Apache服务器支持PHP的模块,另外,考虑到指定编译选项有助于你最终生成各类扩展,所以,采用源码包安装。
这个可以通过http://php.net/get/php-5.6.28.tar.gz/from/a/mirror 进行下载
为了支持MysqL我们需要编译MysqLnd、pdo-MysqL,并且编译一些必要的模块以及libPHP5.so:
./configure --prefix=/usr/local/PHP --with-config-file-path=/usr/local/PHP/etc \
--enable-fpm --with-fpm-user=PHP-fpm --with-fpm-group=PHP-fpm --with- \
pdo-MysqL=/usr/local/MysqL --with-MysqL=MysqLnd --with-libxml-dir \
--with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir \
--with-zlib-dir --with-mcrypt=/usr/local/libmcrypt--enable-soap --enable- \
gd-native-ttf --enable-ftp --enable-mbstring --enable-exif --disable-ipv6 \
--with-pear --with-curl --with-openssl --with-apxs2=/usr/local/apache2/bin/apxs
这里需要注意两点,一是pdo-MysqL编译依赖MysqL Client的库,需要指明MysqL的安装目录。apxs2需要指明apxs程序的路径,以便利用apxs生成libPHP5.so模块。
另外,你也可以在PHP安装完成后,单独编译一些你所需要的模块,所有的扩展模块均在PHP源码包的ext目录下,如pdo-MysqL,就在PHP-5.6.28/ext/pdo_MysqL下,编译生成模块文件后,再通过配置PHP.ini的扩展进行手动添加,主要参考:
首先在模块源码目录下需要使用/usr/local/PHP/bin/PHPize
工具程序生成configure文件;
之后,完成正常的编译安装:
./configure -with-PHP-config=/usr/local/PHP/bin/PHP-config --with-pdo-MysqL=/usr/local/MysqL
make
make install
完成后会安装在/usr/local/PHP/lib/PHP/extensions/目录下,最终通过配置PHP.in文件开启extension模块即可。
PDO模块编译安装中可能遇到的坑:
对于在系统安装时就已经安装好的MysqL由于遍布在/usr目录下,在pdo-MysqL配置时就直接指明为/usr目录即可,另外,有可能出现找不到libMysqLclient的情况出现,需要执行以下命令:
ln -s /usr/lib64/MysqL/libMysqLclient.so.16 /usr/lib/libMysqLclient.so
一些可能在升级安装中需要的依赖包
pcrelib依赖
ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/
libmcrypt依赖
https://sourceforge.net/projects/mcrypt/?source=typ_redirect