11.1 LAMP架构介绍
LAMP指的Linux(操作系统)、ApacheHTTP 服务器,MySQL(有时也指MariaDB,数据库软件) 和PHP(有时也是指Perl或Python) 的第一个字母,一般用来建立web应用平台。
11.2 MySQL、MariaDB介绍
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。
MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。
由于其社区版的性能卓越,搭配 PHP 和 Apache 可组成良好的开发环境。
MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,使用XtraDB(英语:XtraDB)来代替MySQL的InnoDB。 MariaDB由MySQL的创始人Michael Widenius(英语:Michael Widenius)主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给了SUN,此后,随着SUN被甲骨文收购,MySQL的所有权也落入Oracle的手中。MariaDB名称来自Michael Widenius的女儿Maria的名字。
MariaDB基于事务的Maria存储引擎,替换了MySQL的MyISAM存储引擎,它使用了Percona的 XtraDB,InnoDB的变体,分支的开发者希望提供访问即将到来的MySQL 5.4 InnoDB性能。这个版本还包括了 PrimeBase XT (PBXT) 和 FederatedX存储引擎。
11.3/11.4/11.5 MySQL安装
1、下载MySQL源码包。
2、初始化。
解压刚才下载的MySQL源码包。
#tar -xvzf mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz
如出现错误:FATAL ERROR: please install the following Perl modules before executing ./scripts/mysql_install_db:
Data::Dumper
是因为没有安装Perl模块,解决方法是安装autoconf库:yum -y install autoconf
上面的命令执行完毕后,再输入命令echo $?查看输出结果是否为0。
3、配置MySQL。
复制配置文件。
然后修改配置文件如下图:
然后复制启动脚本文件并修改其属性:
再修改启动脚本:
#vim /etc/init.d/mysqld
更改内容为datadir=/data/mysql。再把启动脚本加入系统服务项,设定开机启动并启动MySQL:
11.6 MariaDB安装
下载MariaDB源码包并解压:
编辑文件
/usr/local/mariadb/my.cnf这个只需要增加如下一行即可。
更改启动脚本:#vim /etc/init.d/mariadb
启动mariadb服务
然后查看是否启动成功
至此,MariaDB安装完毕。
11.7/11.8/11.9 Apache安装
这里我们要安装的是2.4版本的,还需手动编译安装apr和apr-util包。
下载安装包,并解压
apr(apr和apr-util)可以理解成一个通用的函数库,主要为上层应用提供支持。在这里,httpd是依赖apr和apr-util的,如果不安装这两个,httpd就无法工作,我们先安装apr和apr-util:
如果在安装apr-util时报错的话,要先安装以下包,然后再安装
#yum install -y expat-devel
安装好了apr和apr-util后,我们再来安装httpd:
此时会报错,我们要安装以下包:#yum install -y pcre pcre-devel
再编译安装:
安装完成后,可以查看httpd的目录结构以及modules目录下面的模块文件:
查看加载了哪些模块:
11.10/11.11/11.12 安装PHP5
下载PHP安装包
解压源码包
#tar xjvf php-5.6.32.tar.bz2
配置编译参数
[root@zhangjin-120:/usr/local/src]#cd php-5.6.32/ [root@zhangjin-120:/usr/local/src/php-5.6.32]#./configure \ --prefix=/usr/local/php \ --with-apxs2=/usr/local/apache2.4/bin/apxs \ --with-config-file-path=/usr/local/php/etc \ --with-mysql=/usr/local/mysql \ --with-libxml-dir \ --with-gd \ --with-jpeg-dir \ --with-png-dir \ --with-freetype-dir \ --with-iconv-dir \ --with-zlib-dir \ --with-bz2 \ --with-openssl \ --with-mcrypt \ --enable-soap \ --enable-gd-native-ttf \ --enable-mbstring \ --enable-sockets \ --enable-exif
编译错误的解决方法:
1、configure: error: xml2-config not found. Please check your libxml2 installation.
解决方法:
#yum install -y libxml2-devel
2、configure: error: Cannot find OpenSSL's <evp.h>
解决方法:
#yum install -y openssl openssl-devel
3、checking for BZip2 in default path... not found
configure: error: Please reinstall the BZip2 distribution
解决方法:
#yum install -y bzip2 bzip2-devel
4、configure: error: png.h not found.
解决方法:
#yum install -y libpng libpng-devel
5、configure: error: freetype-config not found.
解决方法:#yum install -y freetype freetype-devel
6、configure: error: mcrypt.h not found. Please reinstall libmcrypt.
解决方法:#yum install -y epel-release
#yum install -y libmcrypt-devel
看到这一步,就说明PHP配置编译参数成功:
然后进行编译和安装:
#make
#make install
最后,我们再复制配置文件:
[root@zhangjin-120:/usr/local/src/php-5.6.32]#cp php.ini-production /usr/local/php/etc/php.ini
11.13 安装PHP7
下载源码包
解压源码包
#tar jxvf php-7.1.6.tar.bz2
进入php-7.1.6目录
cd php-7.1.6
然后配置编译参数
[root@zhangjin-120:/usr/local/src/php-7.1.6]#./configure --prefix=/usr/local/php7 \ --with-apxs2=/usr/local/apache2.4/bin/apxs \ --with-config-file-path=/usr/local/php7/etc \ --with-pdo-mysql=/usr/local/mysql \ --with-mysqli=/usr/local/mysql/bin/mysql_config \ --with-libxml-dir \ --with-gd \ --with-jpeg-dir \ --with-png-dir \ --with-freetype-dir \ --with-iconv-dir \ --with-zlib-dir \ --with-bz2 \ --with-openssl \ --with-mcrypt \ --enable-soap \ --enable-gd-native-ttf \ --enable-mbstring \ --enable-sockets \ --enable-exif
再编译安装
#make
#make install
复制配置文件:
11.14/11.15 Apache和PHP结合
1、配置httpd支持PHP
编辑httpd的主配置文件
[root@zhangjin-120:~]#vim /usr/local/apache2.4/conf/httpd.conf
然后将193行的#去掉
再修改如下内容:
将202行的denied修改为granted。修改的目的是,允许所有请求,如果不设置这一行,则我们访问的时候会报403错误码。
再搜索376行,并在下面增加一行:
再将下面的内容修改为:
2、测试LAMP是否成功
http、MySQL和PHP安装后,需要先检验httpd的配置文件是否正确,只有正确配置才可以正确解析PHP文件。
检验httpd的配置文件是否正确
[root@zhangjin-120:~]#/usr/local/apache2.4/bin/apachectl -t Syntax OK
然后启动httpd服务
[root@zhangjin-120:~]#/usr/local/apache2.4/bin/apachectl start /usr/local/apache2.4/bin/apachectl: 行 79: 54904 段错误 (吐核)$HTTPD -k $ARGV
可以看到,报错了,报错的原因是我们安装了2个PHP版本,解决的办法如下图所示:
然后我们再启动httpd服务
[root@zhangjin-120:~]#/usr/local/apache2.4/bin/apachectl start
然后查看是否启动成功:
可以看到,httpd服务已经成功启动。
我们也可以使用curl命令进行简单的测试:
显示这一行则说明测试成功。
测试是否正确解析PHP
编写一个测试脚本:
保存脚本的,再用curl命令进行测试:
如果能显示以上信息则说明PHP解析正确。