目录

17.1 Linux LAMP环境搭建的前期准备

获取源码包

把软件包传送到Linux服务器上

安装编译工具

关闭RPM包安装的apache和mysql

关闭防火墙和SELinux

关闭不必要的服务

批量解压源码包

检查硬盘的剩余空间

17.2 Linux libxml2安装

17.3 Linux libmcrypt安装

17.4 Linux mhash和mcrypt安装

mhash源码包安装

mcrypt源码包安装

17.5 Linux zlib和libpng安装

17.6 Linux jpeg6安装

17.7 Linux freetype安装

17.8 Linux gd库安装

17.9 Linux Apache安装

17.10 Linux ncurses安装

17.11 Linux MySQL安装

17.12 Linux PHP安装

17.13 Linux memcache安装和配置

memcache客户端安装

memcache服务器端安装

17.14 linux phpmyadmin安装及配置

复制 phpMyAdmin 脚本文件

修改 phpMyAdmin 的验证方式

17.15 LNMP安装的前期准备

17.16 LNMP一键安装

解压缩一键安装包

执行安装脚本安装 LNMP 一键安装包

LNMP一键安装包安装的软件及具体位置

17.17 LNMP安装php扩展模块

安装eAccelerator

安装xCache

安装memcached

安装imageMagick

安装ionCube


LAMP 环境搭建指的是在 Linux 操作系统中分别安装 Apache 网页服务器、MySQL 数据库服务器和 PHP 开发服务器,以及一些对应的扩展软件。

LAMP 环境是当前极为流行的搭建动态网站的开源软件系统,拥有良好的稳定性及兼容性。而且随着开源软件的蓬勃发展,越来越多的企业和个人选择在 LAMP 开发平台上搭建自己的网站。

www.netcraft.com 网站的统计数据表明,采用 LAMP 环境搭建的网站数量占全球网站总数的 52.19%(2013 年 7 月数据),而其余的网站平台(如 Microsoft IIS 开发平台、Linux Nginx 开发平台、Google 开发平台等)占用了剩余的份额。

LNMP 环境搭建指的是在 Linux 操作系统中分别安装 Nginx 网页服务器、MySQL 数据库服务器和 PHP 开发服务器,以及一些对应的扩展软件。

在 LNMP 环境中,使用 Nginx 网页服务器取代了 Apache 网页服务器。Nginx 是一款高性能的 HTTP 网页服务器和反向代理服务器,它的执行效率极高,配置相比 Apache 也较为简单,所以在短时间内被国内外很多大型公司所采用,大有取代 Apache 的势头(目前还是以 Apache 为主流的)。

17.1 Linux LAMP环境搭建的前期准备

我们知道,如果我们安装的是应用服务软件,这个软件是给外网用户访问和使用的,那么应该使用源码包安装,因为源码包安装的软件经过了本机编译,性能更好。所以我们的 LAMP 环境搭建,在生产服务器上一般采用源码包进行安装,而不会使用 RPM 包进行安装,接下来我们要讲的也是采用源码包方式搭建 LAMP 环境。

LAMP 环境搭建是较为复杂的 Linux 实验,在进行真正的环境安装之前,需要做一些细致的准备工作,以避免在安装过程中出现不必要的错误。我们需要进行的准备工作有以下几步。

获取源码包

我们已经知道 RPM 包是在 CentOS 的安装光盘中保存的,但是源码包需要去互联网下载。我们此次完成 LAMP 环境搭建需要 19 个软件包,这是目前较为完善和常用的 LAMP 环境搭建方式。这些软件包的下载地址如表 1 所示。这些下载地址只是参考,如果有失效的,则请自行搜索。

表 1 LAMP 环境搭建所需的软件包下载地址
软件包 说 明 下载地址
httpd-2.4.7.tar.gz Apache 包 http://www.apache.org/
mysql-5.5.23.tar.gz MySQL数据库 http://dev.mysql.com/downloads/
php-5.4.25.tar.gz PHP语言 http://www.php.net/downloads.php
phpMyAdmin-4.1.4-all-languages.iar.gz Web方式的MySQL管理工具 http://www.phpmyadmin.com/
libxml2_2.9.1.tar.gz 用来解析XML文档的函数库 http://www.linuxfromscratch.org/blfs/view/svn/general/libxml2.html
libmerypt-2.5.8.tar.gz 加密算法扩展库 http://prdownloads.sourceforge.net/mcrypt/libmcrypt-2.5.8.tar.gz?use_mirror=peterhost
mhash-0.9.9.9.tar.gz 加密算法扩展库 http://sourceforge.net/projects/mhash/files/mhash/0.9.9.9/
mcrypt-2-6.8-tar.gz 加密算法扩展库 http://sourceforge.net/projects/mcrypt/files/MCrypt/2.6.8/
zlib-1.2.3.tar.gz 数据压缩函数库 http://www.zlib.net/
gd-2.0.35.tar.gz PHP处理用形的扩展库 https://bitbucket.org/libgd/gd-libgd/downloads
freetype-2.3.5-tar-gz 字体引擎库 http://download.savannah.gnu.org/releases/freetype/
libpng-1.2.31.tar.gz 用于解码.png格式的图片 ftp://ftp.simplesystems.org/pub/libpng/png/src/
jpegsrc.v6b.tar.gz 用于解码.jpg和.jpeg格式的图片 http://www.ijg.org/files/jpegsrc.v6b.tar.gz
apr-1.4.6.tar.gz Apache支持镆块 http://archive.apache.org/dist/apr/
apr-util-1.4.1.tar.gz Apache支持模块 http://archive.apache.org/dist/apr/
pcre-8.34.tar.gz Apache支持模块,使Apache支持pcre正则表达式规则 http://sourceforge.net/projects/pcre/files/pcre/8.34/pcre-8.34.tar.gz/stats/map
ncurses-5.9.tar.gz 使应用程序直接控制终端屏幕显示的函数库 http://ftp.gnu.org/pub/gnu/ncurses/
memcache-3.0.8.tgz memcache函数库(客户端) http://pecl.php.net/package/memcache
memcached-1.4.17.tar.gz memcached服务器端 http://memcached.org/

大家可能已经发现,我们下载的软件包不全是最新的版本,这主要是为了和 php-5.4.25.tar.gz 这个软件包进行匹配。当然,php-5.4.25.tar.gz 也已经不是最新版本的 PHP 了,不过在计算机领域永远不是最新版本的软件就是最好的,新软件虽然有了更多的功能,但是这个软件并没有经过实际工作的检验,它不一定稳定,也有可能会有 Bug;反而版本较低的、但是经过足够的实践检验的软件会更受开发者的欢迎。

Linux 就是这样的,CentOS 6.x 自 2011 年发布以来,经过多年的补充和完善,目前才逐渐得到个人使用者和企业使用者的认可。PHP 同样如此,目前 php-5.4.25.tar.gz 依然是使用最多的 PHP 版本,所以我们依然使用 php-5.4.25.tar.gz 来介绍 LAMP 环境的搭建。

把软件包传送到Linux服务器上

我们可以直接把软件包下载到 Linux 服务器上,也可以先下载到本地 Windows 中,再上传到 Linux 服务器中。如果是先下载到本地 Windows 中,再上传到 Linux 服务器中,那么需要利用网络文件服务器来进行数据的传输。但是我们现在还没有学习 Linux 中的文件服务器(如 FTP、Samba 或 NFS),所以我们在这里介绍一款名为 WinSCP 的软件。

WinSCP 是在 Windows 中安装,使用 SFTP 协议向 Linux 服务器传递文件的工具。它的特点是使用简单、图形化操作,而且数据传递过程是加密的,较为安全,是 Windows 和 Linux 之间进行数据传递的常用软件。WinSCP 第一次启动的界面如图 2 所示。


图 2 WinSCP启动界面

在启动界面的“主机名”文本框中输入 Linux 服务器的 IP 地址,如 192.168.0.210,在“用户名”文本框中输入 Linux 的用户名,在“密码”文本框中输入正确的密码,单击“登录”按钮,就会见到如图 3 所示的界面。


图 3 WinSCP传输界面

在这个工具中,左半部分是 Windows 系统中的文件,右半部分是 Linux 服务器上的文件。如果需要从 Windows 向 Linux 传递什么文件,则只需找到这个文件或目录,从左半部分拖拽到右半部分即可;反过来就是从 Linux 传递文件到 Windows 中,非常简单。

那么,我们应该把软件放置在 Linux 服务器的什么位置呢?Linux 中的 /usr/local/src/ 目录是系统默认的放置下载软件源代码的位置,所以我们就把搭建 LAMP 环境所需的所有软件包都传递到这个位置,传递完成后查看一下,如下:

[root@localhost ~]# ls /usr/local/src/
apr-1.4.6.tar.gz jpegsrc.v6b.tar.gz memcache-3.0.8.tgz
pcre-8.34.tar.gz
apr-util-1.4.1.tar.gz libmcrypt-2.5.8.tar.gz memcached-1.4.17.tar.gz
php-5.4.25.tar.gz
freetype-2.3.5.tar.gz libpng-1.2.31.tar.gz mhash-0.9.9.9.tar.gz
phpMyAdmin-4.1.4-all-languages.tar.gz
gd-2.0.35.tar.gz libxml2-2.9.1.tar.gz mysql-5.5.23.tar.gz
zlib-1.2.3.tar.gz
httpd-2.4.7.tar.gz mcrypt-2.6.8.tar.gz ncurses-5.9.tar.gz
[root@localhost ~]# ls /usr/local/src/ | wc -l
19

我们发现,19 个软件包全部传递到 Linux 服务器中。

安装编译工具

源码包都是用 C 或 C++ 语言编写的,而且需要在本机编译之后才能正确安装。在 Linux 中,C 语言的编译器是 gcc,C++ 语言的编译器是 gcc-c++。

在安装源码包之前,需要确认这两个编译器是否存在。命令如下:

[root@localhost ~]# rpm -qa | grep gcc
libgcc-4.4.6-4.el6.i686
gcc-4.4.6-4.el6.i686

可以看到,我们已经安装了 gcc 编译器,但是还没有安装 gcc-c++ 编译器。使用 yum 安装 gcc-c++ 编译器,命令如下:

[root@localhost ~]# yum -y install gcc-c++

如果 Linux 服务器可以正常连接互联网,那么这条 yum 命令是可以直接使用的,不用进行任何配置与修改。只是 yum 会去连接 CentOS 的官方服务器,这台服务器在国外,速度可能较慢。如果 Linux 服务器不能正常连接互联网,则也可以使用本地光盘作为 yum 源。

安装完成后再查询一下,如下:

[root@localhost ~]# rpm -qa | grep gcc
gcc-4.4.7-3.el6.i686
libgcc-4.4.7-3.el6.i686
gcc-c++-4.4.7-3.el6.i686

gcc 和 gcc-c++ 编译器都已经安装了。大家可能发现这次查询的 gcc 是 4.4.7 版本,而上次查询的 gcc 是 4.4.6 版本,那是因为笔者使用网络 yum 源去 CentOS 的官方服务器上安装 gcc-c++,但是在安装 gcc-c++ 的时候,是需要 gcc 已经安装完成的。在 CentOS 的官方服务器上,gcc 和 gcc-c++ 的版本更高,所以在安装 gcc-c++ 的时候,自动更新了 gcc 的版本。不管怎么说,编译工具已经安装完成,我们可以进行下一步的准备工作了。

关闭RPM包安装的apache和mysql

我们在生产服务器上是不会既安装 RPM 包的 apache,又安装源码包的 apache 的。但是为了教学需要,有时需要安装这两种包的 apache。我们现在需要停用 RPM包安装的 apache 和 mysql,命令如下:

[root@localhost ~]# service httpd stop
[root@localhost ~]# service mysqld stop
#停止apache和mysql服务
[root@localhost ~]# chkconfig httpd off
[root@localhost ~]# chkconfig mysqld off
#关闭apache和mysql的自启动

关闭防火墙和SELinux

在生产服务器上,防火墙是不能直接关闭的,而是需要设置防火墙允许 80 端口(apache)、3306 端口(mysql)和 11211(memcache)端口访问的。但是目前我们还没有学习防火墙,所以只能暂时关闭它了。关闭命令如下:

[root@localhost ~]# setup

在图 4 所示的界面中选择“防火墙配置”,进入防火墙配置界面。


图 4 setup界面

在图 5 所示的界面中,把“启用”前面的“*”去掉,选择“确定”保存,默认防火墙规则就会被关闭。


图 5 关闭防火墙

再查询一下防火墙规则:

[root@localhost ~]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
#默认filter表中的三条链中的规则都是空。防火墙已经被关闭了

除关闭防火墙之外,我们还需要关闭 SELinux 安全子系统。因为这个子系统会对我们的安装过程产生影响,所以先关闭它。关闭命令如下:

[root@localhost ~]# vi /etc/selinux/config
#把 SELINUX=enforcing改为 SELINUX=disabled
[root@localhost ~]# shutdown -r now
#重启Linux系统

关闭 SELinux 之后,必须重启 Linux 系统,修改才会生效。

关闭不必要的服务

接下来需要关闭我们不需要的服务,这既是服务器的必须优化步骤,也会使我们在 LAMP 环境搭建过程中的报错可能性大大降低,所以建议大家进行这一步服务优化。具体方法就是使用 ntsysv 命令把不需要的服务前面的“*”去掉,然后重启 Linux 服务器。具体哪些服务是必须启动的,哪些服务是不必要的,大家可以参考《Linux常见服务类别及功能》。

批量解压源码包

我们需要安装 17 个源码包,如果一个一个地解压缩实在太麻烦了,那么我们写一个小的 Shell 脚本,批量进行解压缩。命令如下:

[root@localhost ~]# vi tar.sh
#建立解压缩脚本
#! /bin/bash
#标称是 Shell脚本
cd /usr/local/src/
#进入保存源妈包的目录
ls *.tar.gz > /usr/local/src/ls.log
#把所有以.tar .gz结尾的文件名覆盖写入ls.log文件
ls *.tgz >> /usr/local/src/ls.log
#把所有以.tgz结尾的文件名追加写入ls.log文件
file=$(cat /usr/local/src/ls.log)
#读取 Is.log 文件中的内容,赋子变量file
for i in $file
#for循环,每次德环把变量file中的一个文件名
    do
       tar -zxf $i
       #解压缩毎个压缩文件
    done
rm -rf /usr/local/src/ls.log
#删除临时文件ls.log
#以上是脚本的内容
[rootBlocalhost ~]# chmod 755 tar.sh
#赋予tar.sh文件执行权限
[root@localhost ~]
./tar.sh
#执行这个脚本

这样,所有的压缩包就已经完成了解压缩过程。

检查硬盘的剩余空间

LAMP 环境搭建大概需要 3GB 的空闲空间,所以确认一下硬盘的剩余空间,命令如下:

[root@localhost src]# df -h
文件系统 容量 已用 可用 已用%% 挂载点
/dev/sda3 20G 2.5G 16G 14% /
tmpfs 306M 0 306M 0% /dev/shm
/dev/sda1 194M 26M 158M 15% /boot
“/”分区还有16GB的可用空间,足够使用了。

17.2 Linux libxml2安装

libxml2是一个用来解析XML文档的函数库。它用 C 语言写成,并且能被多种语言所调用,如 C、C++、XSH、C#、Python、Kylix、Delphi、Ruby、PHP 等。它最初是为 GNOME 开发的项目,但是现在可以用在各种各样的项目中。

libxml2 的代码可移植性非常好,因为它基于标准的 ANSI C 库,并采用了 MIT 许可证。安装步骤如下。

1) 安装python-devel

这个软件包是 libxml2 的依赖包,如果不安装,libxml2 安装就会报错。这个软件包只是一个底层依赖包,所以安装 RPM 包即可。命令如下:

yum -y install python-devel

2) 进入解压缩之后的源码目录

这一步不能省略,因为 "./configure"、"make" 和 "make install" 操作的都是当前所在目录,所以一定要进入解压缩之后的源码目录。命令如下:

[root@localhost ~]# cd /usr/local/src/libxml2-2.9.1

3) 编译前的准备和配置

这一步主要检查安装需要的系统环境、配置软件需要的功能选项,并生成配置安装文件 Makefile,以后的编译与编译安装过程需要依赖 Makefile 文件。命令如下:

[root@localhost libxml2-2.9.1]#./configure --prefix=/usr/local/libxml2/
#“--prefix=/usr/local/libxml2/”用于指定安装位置

有些人可能会有疑问:这个软件的安装位置和安装目录名称是可以随意指定的吗?我们一般会将源码包安装到 /usr/local/ 目录中,这个目录是 Linux 的默认源码包安装目录,并不推荐大家随意更改。至于安装目录名称,如果只是单独安装这个软件,则目录名称可以随意指定,不一定非要叫“libxml2”。但是我们在搭建 LAMP 环境时,这个软件会被后面的软件所调用,如果修改了安装目录名称,那么后面一系列的安装命令都要进行修改,非常容易报错,所以不建议大家随意修改。

4) 编译

也就是依靠 gcc 把源码包翻译为二进制的机器语言包。命令如下:

[root@localhost libxml2-2.9.1]# make

以上的编译前配置和编译都不会在 /usr/local/ 目录中写入任何数据,只会在源码目录中生成 Makefile 等临时文件。所以,如果报错了,则只需执行“make clean”命令清除缓存和临时文件,再进行安装即可。

5) 编译安装

这一步才会真正向 /usr/local/ 目录中写入数据。命令如下:

[root@localhost libxml2-2.9.1]# make install

这条命令执行之后,就会建立 /usr/local/libxml2/ 目录,并在目录下生成相应的文件。

17.3 Linux libmcrypt安装

libmcrypt 是加密算法扩展库,支持 DES、3DES、RIJNDAEL、Twofish、IDEA、GOST、CAST-256、ARCFOUR、SERPENT、SAFER+ 等算法。安装步骤如下。

1) 进入解压缩目录

命令如下:

[root@localhost libxml2-2.9.1]# cd /usr/local/src/libmcrypt-2.5.8

2) 编译前配置,并指定安装位置

命令如下:

[root@localhost libmcrypt-2.5.8]#./configure --prefix=/usr/local/libmcrypt

3) 编译

命令如下:

[root@localhost libmcrypt-2.5.8]# make

4) 编译安装

命令如下:

[root@localhost libmcrypt-2.5.8]# make install

5) 安装 libltdl 库

在安装完 libmcrypt 之后,有些 Linux 还需要安装 libltdl 库,这个库是 libmcrypt 的子软件,就在 libmcrypt 的源码包之中,所以要进入 /usr/local/libmcrypt 目录才能看到。命令如下:

[root@localhost root]# cd /usr/local/src/libmcrypt-2.5.8/libltdl
#进入软件源码目录
[root@localhost libltdl]#./configure ——enable-ltdl-install
#配置libltdl库的安装
[root@localhost libltdl]# make
#编译
[root@localhost libltdl]# make install
#编译安装

安装完成之后,记得确认安装目录是否生成。

17.4 Linux mhash和mcrypt安装

本节讲解LAMP环境搭建过程中 mhash和mcrypt源码包的安装过程。

mhash源码包安装

mhash 是基于离散数学原理的不可逆向的 PHP 加密方式扩展库。mhash 可以用于创建校验数值,消息摘要,消息认证码,以及无须原文的关键信息保存(如密码)等。

安装步骤如下:

[root@localhost ~]# cd /usr/local/src/mhash-0.9.9.9.tar.gz
[root@localhost ~]# cd /usr/local/src/mhash-0.9.9.9.tar.gz
#进入解压缩目录
[root@localhost mhash-0.9.9.9]#./configure
#没有指定安装位置。因为在mcrypt包安装时,会在默认位置查找mhash包,如果指定了安装位置,
#那么mcrypt包在安装时会报错
[root@localhost mhash-0.9.9.9]# make
#编译
[root@localhost mhash-0.9.9.9]# make install >> /root/mhash_install.log
#编译安装。把安装过程保存在mhash_install.log文件中,便于删除

mcrypt源码包安装

mcrypt 是 PHP 里面重要的加密支持扩展库。mcrypt 库支持 20 多种加密算法和 8 种加密模式。mcrypt 要比 libmcrypt 更加先进,在很多项目中必须使用 mcrypt 加密方式。请大家注意,在安装 mcrypt 之前,必须先正确安装 libmcrypt 和 mhash。

安装步骤如下:

[root@localhost mhash-0.9.9.9]# cd /usr/local/src/mcrypt-2.6.8
#进入源码目录
[root@localhost mcrypt-2.6.8]#
LD_LIBRARY_PATH=/usr/local/libmcrypt/lib:/usr/ local/lib./configure --with-libmcrypt-prefix=/usr/local/libmcrypt
#LD_LIBRARY_PATH用于指定libmcrypt和mhash库的位置
#./configure为编译前准备命令,——with-libmcrypt-prefix用于指定libmcrypt软件位置
[root@localhost mcrypt-2.6.8]# make
#编译
[root@localhost mcrypt-2.6.8]# make install
#编译安装

请大家注意,在这里 mcrypt 并没有安装完成。因为 mcrypt 是 PHP 的模块,所以需要等到 PHP 安装完成之后,再继续安装。

有关PHP模块的安装过程,可以参照《Linux安装PHP过程详解》一文进行安装。

PHP 模块安装成功后,才能按照以下步骤继续安装 mcrypt。

1)编译安装

命令如下:

[root@localhost memcache-3.0.8]# cd /lamp/php-5.4.25/ext/mcrypt/
#进入PDO模块的解压缩目录
[root@localhost mcrypt]# /usr/local/php/bin/phpize
#使用phpize加载PDO模块
[root@localhost mcrypt]# ./configure \ #编译前配置
--with-php-config=/usr/local/php/bin/php-config \#指定php-config文件的位置
--with-mcrypt=/usr/local/libmcrypt/ #调用libmcrypt
[root@localhost mcrypt]# make
#编译
[root@localhost mcrypt]# make install
#编译安装

2) 修改PHP配置文件

要让 PHP 可以识别和使用 memcache 和 mcrypt 模块,还需要修改一下 PHP 的配置文件,命令如下:

[root@localhost mcrypt]# vi /usr/local/php/etc/php.ini
#修改PHP配置文件
extension_dir = "./"
#在这个文件中找到这句话,把它改为以下这句话
extension_dir="/usr/local/php//lib/php/extensions/no-debug-non-zts-20060613/"
#新加入以下两句话
extension="memcache.so";
extension="mcrypt.so";

安装完成之后,重启 apache,就可以在 phpinfo 页面中看到这两个模块了。

17.5 Linux zlib和libpng安装

本节讲解 Linux 在搭建 LAMP 环境过程中对 zlib 和 libpng 源码包的安装。

安装zlib源码包

zlib 是提供数据压缩用的函数库,使用 DEFLATE 算法,最初是为 libpng 函数库所写的,后来普遍被许多软件所使用。此函数库为自由软件,使用 zlib 授权。

安装步骤如下:

[root@localhost ~]# cd /usr/local/src/zlib-1.2.3
#进入zlib解压缩目录
[root@localhost zlib-1.2.3]#./configure
#编译前配置,没有指定安装位置,zlib会安装到系统的默认位置。这是为了让libpng可以在默认位置中找到zlib。如果指定了zlib的安装位置,那么libpng在安装时可能会报错
[root@localhost zlib-1.2.3]# make
#编译
[root@localhost zlib-1.2.3]# make install >> /root/zlib_install.log
#编译安装。把编译安装过程保存到zlib_install.log文件中,以方便删除

安装libpng源码包

libpng 软件中包含 libpng 函数库,这些库是用来解码 .png 格式的图片的。安装步骤如下:

[root@localhost zlib-1.2.3]# cd /usr/local/src/libpng-1.2.31
#进入libpng解压缩目录
[root@localhost libpng-1.2.31]#./configure ——prefix=/usr/local/libpng
#编译前配置,指定安装位置
[root@localhost libpng-1.2.31]# make
#编译
[root@localhost libpng-1.2.31]# makeinstall
#编译安装

17.6 Linux jpeg6安装

jpeg6 软件是用来解码 .jpg 和 .jpeg 格式的图片的。安装步骤如下。

1) 手工建立必需的目录

[root@localhost root]# mkdir /usr/local/jpeg6
#建立jpeg6软件安装目录
[root@localhost root]# mkdir /usr/local/jpeg6/bin
#建立存放命令的目录
[root@localhost root]# mkdir /usr/local/jpeg6/lib
#创建jpeg6函数库文件所在目录
[root@localhost root]# mkdir /usr/local/jpeg6/include
#建立存放头文件的目录
[root@localhost root]# mkdir -p /usr/local/jpeg6/man/man1
#建立存放帮助手册的目录

请大家注意,这些目录必须手工建立,否则安装过程会报错

2) 编译与安装

[root@localhost libpng-1.2.31]# cd /usr/local/src/jpeg-6b/
#进入jpeg6解压缩目录
[root@localhost jpeg-6b]# ./configure \
——prefix=/usr/local/jpeg6/ \#指定安装位置
——enable-shared \ #建立共享库使用的GNU的libtool
——enable-static #建立静态库使用的GNU的libtool
#编译前配置。“\”代表一条命令没有写完,换行继续输入
[root@localhost jpeg-6b]# make
#编译
[root@localhost jpeg-6b]# make install
#编译安装

17.7 Linux freetype安装

FreeType 库是一个完全免费(开源)的、高质量的、可移植的字体引擎,它提供统一的接口来访问多种字体格式文件,包括 TrueType、OpenType、Type1、CID、CFF、Windows FON/FNT、X11 PCF 等,支持单色位图、反走样位图的渲染。

FreeType 库是高度模块化的程序库,虽然它是使用 ANSI C 开发的,但是采用面向对象的思想,因此,FreeType 的用户可以灵活地对它进行裁剪。

FreeType 安装步骤如下:

[root@localhost jpeg-6b]# cd /usr/local/src/freetype-2.3.5
#进入freetype解压缩目录
[root@localhost freetype-2.3.5]#./configure --prefix=/usr/local/freetype
#编译前配置,指定安装位置
[root@localhost freetype-2.3.5]# make
#编译
[root@localhost freetype-2.3.5]# make install
#编译安装

17.8 Linux gd库安装

gd 库是 PHP 处理图形的扩展库,它提供了一系列用来处理图片的 API(应用程序编程接口),使用 gd 库可以处理图片或者生成图片。在网站上,gd 库通常用来生成缩略图,或者对图片加水印,或者生成汉字验证码,或者对网站数据生成报表等。

gd库安装步骤如下。

1) 建立 gd 库安装目录,进入 gd 库解压缩目录

[root@localhost autoconf-2.61]# cd /usr/local/src/gd-2.0.35

2) 修改gd_png.c文件

[root@localhost gd-2.0.35]# vi gd_png.c
#把文件中 include "png.h"改为 include "/usr/local/libpng/include/png.h"

如果不修改 gd_png.c 文件,则默认会在当前目录下搜索 png.h 文件。我们已知 libpng 安装在 /usr/local/libpng/ 目录中,所以当然不能找到,就会报错。把 png.h 的正确路径“/usr/local/libpng/include/png.h”写入,报错就能解决。

3) 编译安装

[root@localhost gd-2.0.35]# ./configure \
--prefix=/usr/local/gd2/ \ #指定安装位置
--with-jpeg=/usr/local/jpeg6/ \ #指定jpeg6的位置
--with-freetype=/usr/local/freetype/ \ #指定freetype的位置
--with-png=/usr/local/libpng/ #指定libpng的位置
#编译前配置
#因为gd库需要调用前面安装的zlib、jpeg、freetype和libpng,所以需要指定它们的安装位置,才能正确调用这些软件。不过因为前面安装zlib时没有指定安装位置,所以不用指定——with-zlib=/usr/local/zlib/选项,gd会自动到默认安装位置中寻找zlib
[root@localhost gd-2.0.35]# make
#编译
[root@localhost gd-2.0.35]# make install
#编译安装

17.9 Linux Apache安装

Apache 其实是一个软件基金会组织的名字,早期他们开发的 Web Server 软件非常流行,当时的名称就叫做 Apache,不过后来改名字叫做 httpd 了,所以,现在大家常说的 Apache ,通常指的就是 httpd。

另外,Apache 就是 LAMP 环境中的“A”。前面做了这么多准备工作,就是为了正确安装 Apache+MySQL+PHP,现在可以安装 Apache 了。安装步骤如下。

1) 复制 apr 和 apr-util 库

这里是 Apache 2.4 自己的 Bug,我们必须手工复制 apr、apr-util 和 pcre 这三个库,才可以正确安装 Apache 2.4。

cp -r /usr/local/src/apr-1.4.6 /usr/local/src/httpd-2.4.7/srclib/apr
cp -r /usr/local/src/apr-util-1.4.1 /usr/local/src/httpd-2.4.7/srclib/apr-util
#这两个包先要解压缩,然后改名复制到指定位置

2) 安装 pcre 源码包

pcre 是一个用 C 语言编写的正则表达式函数库,Apache 和 PHP 默认使用的就是 pcre 正则表达式规则。

[root@localhost gd-2.0.35]# cd /usr/local/src/pcre-8.34
#进入解压缩目录
[root@localhost pcre-8.34]#./configure
#编译前配置
[root@localhost pcre-8.34]# make
#编译
[root@localhost pcre-8.34]# make install
#编译安装

3) 进入 Apache 解压缩目录

[root@localhost pcre-8.34]# cd /usr/local/src/ httpd-2.4.7

4) 编译前配置

[root@localhost httpd-2.4.7]# ./configure \ #编译前配置
--prefix=/usr/local/apache2/ \ #指定Apache安装目录
--sysconfdir=/usr/local/apache2/etc/ \ #指定Apache配置文件保存目录
--with-included-apr \ #使用捆绑APR/APR-Util 的副本
--enable-so \ #以动态共享对象(DSO)方式编译
--enable-deflate=shared \ #启用编小传输编玛支持的模块
--enable-expires=shared \ #根据用户的特别设定来生成失效和隐藏控制的HTTP头信息
--enable-rewrite-shared #启动重写功能的模块

这里的 Apache 是使用动态方式编译的,那么是否有静态方式编译呢?当然有,静态方式编译就是直接将 Apache 的模块放入 Apache 中,如果 Apache 需要调用这个模块,则直接调用即可。这种方法安装的 Apache 性能更好、速度更快,但是如果需要加载新的模块,则是需要重新编译和安装 Apache 的。

如果采用动态的方式编译,则并没有直接把模块放入 Apache,而是把模块的所在位置放入了 Apache。如果 Apache 需要调用模块,则需要到指定位置自己查找,性能比静态方式稍差。但是如果需要加载新的模块,则不用重新安装 Apache,可以动态地加载新模块。更常用的编译方式是动态方式编译,所以在安装过程中我们采用动态方式编译。

5) 编译和编译安装

[root@localhost httpd-2.4.7]# make
[root@localhost httpd-2.4.7]# make install

6) 启动Apache,并进行测试

[root@localhost httpd-2.4.7]# /usr/local/apache2/bin/apachectl start
#启动Apache
[root@localhost httpd-2.4.7]# netstat -tlun | grep 80
tcp 0 0::80 ::* LISTEN
#80端口已经启动,说明Apache已经启动了

接下来我们需要使用浏览器测试一下 Apache 服务器是否可以访问,只需在 URL(统一资源定位,就是地址栏)中输入“http://IP”即可,如图 1 所示。


图 1 Apache测试页

如果看到了“It works!”,则说明 Apache 服务器正常工作了。

7) 设置 Apache 开机自启动

我们需要保证 Apache 每次开机都能正常启动,所以还要设置自启动,命令如下:

[root@localhost httpd-2.4.7]# vi /etc/rc.local

/usr/local/apache2/bin/apachectl start
#在rc.local文件中加入Apache启动命令

17.10 Linux ncurses安装

ncurses 提供字符终端处理库,包括面板和菜单。它提供了一套控制光标、建立窗口、改变前景/背景颜色及处理鼠标操作的函数,使用户在字符终端编写应用程序时绕过了那些恼人的底层机制。简而言之,它是一个可以使应用程序直接控制终端屏幕显示的函数库。

这个软件既可以采用 RPM 包方式安装,也可以采用源码包方式安装。但是不用两种包都安装,只要安装一种即可。

1) 方法一:安装RPM的ncurses包

这里既可以使用手工 RPM 包命令安装,也可以使用 yum 命令安装,我们使用 RPM 包命令安装。安装命令如下:

[root@localhost ~]# rpm -ivh /mnt/cdrom/Packages/ncurses-5.7-3.20090208.el6.i686.rpm
[root@localhost ~]# rpm -ivh /mnt/cdrom/Packages/ncurses-devel-5.7-3.20090208.el6.i686.rpm
[root@localhost ~]# rpm -ivh /mnt/cdrom/Packages/ncurses-libs-5.7-3.20090208.el6.i686.rpm
[root@localhost ~]# rpm -ivh /mnt/cdrom/Packages/ncurses-base-5.7-3.20090208.el6.i686.rpm
[root@localhost ~]# rpm -ivh /mnt/cdrom/Packages/ncurses-term-5.7-3.20090208.el6.i686.rpm
[root@localhost ~]#rpm-ivh/mnt/cdrom/Packages/ncurses-static-5.7-3.20090208.el6.i686.rpm

不过这里大家需要注意的是,“ncurses-static”是在第二张 CentOS 光盘中的。安装完成就可以继续安装下一个软件 MySQL 了。

2) 方法二:安装ncurses的源码包

安装步骤如下:

[root@localhost ~]# cd /usr/locai/src/ncurses-5.9
#进入ncurses解压缩目录
[root@localhost ncurses-5.9] # ./configure \ #编译前配置
--with-shared \ #生成共享库
--without-debug \ #不生成 debug 库
--without-ada \ #不编译为ada绑定,因为进入chroot环境不能便用ada
--enable-overwrite #参数为定义把头文件安装到/tools/include目录下,而不是/tools/include/ncurses 目录下
[root@localhost ncurses-5.9]# make #编译
[root@localhost ncurses-5.9)# make install #编译安装

17.11 Linux MySQL安装

本节,我们学习安装 MySQL 数据库,其安装步骤稍微复杂,我们逐步来进行解析。

1) 添加 mysql 用户和 mysql 用户组

命令如下:

[root@localhost ~]# groupadd mysql
#添加mysql用户组
[root@localhost ~]# useradd -g mysql mysql
#添加mysql用户,同时指定mysql用户的初始组是mysql组

这里添加的 mysql 用户和用户组是稍后用来给 MySQL 安装目录分配权限用的,所以并不需要设定密码,因为这个用户是不能直接登录 Linux 系统的。

2) 进入 MySQL 解压缩目录

[root@localhost ~]# cd /usr/local/src/mysql-5.5.23

3) 编译前配置

[root@localhost mysql-5.5.23]# cmake \ #命令
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ #指定安装位置
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \ #指定socket(套接字)文件位置
-DEXTRA_CHARSETS=all \ #支持所有的扩展字符集
-DDEFAULT_CHARSET=utf8 \ #指定默认字符集
-DDEFAULT_COLLATION=utf8_general_ci \ #指定默认字符校对
-DWITH_MYISAM_STORAGE_ENGINE=1 \ #安装myisam存储引擎
-DWITH_INNOBASE_STORAGE_ENGINE=1 \ #安装innodb存储引擎
-DWITH_MEMORY_STORAGE_ENGINE=1 \ #安装memory存储引擎
-DWITH_READLINE=1 \ #支持readline库
-DENABLED_LOCAL_INFILE=1 \ #启用加载本地数据
-DMYSQL_USER=mysql \ #指定MySQL运行用户
-DMYSQL_TCP_PORT=3306 #指定MySQL端口

4) 编译

[root@localhost mysql-5.5.23]# make

使用 cmake 进行编译。如果编译过程中出现了报错,则不再使用“make clean”命令清除缓存及临时文件,而是直接删除“rm-rf CMakeCache.txt”文件。

5) 编译安装

[root@localhost mysql-5.5.23]# make install

6) 生成MySQL的配置文件,并修改配置文件

这个配置文件不用手工建立,在 MySQL 安装目录中给我们准备了模板文件,只需把模板文件复制到指定位置并改名即可。命令如下:

[root@localhost mysql-5.5.23]#cp/usr/local/mysql/share/mysql/my-medium.cnf/etc/my.cnf

7) 修改 MySQL 安装目录的权限

[root@localhost mysql-5.5.23]# cd /usr/local/mysql/
#进入MySQL安装目录
[root@localhost mysql]# chown -R mysql.
#把当前目录下所有文件的所有者改为root用户
[root@localhost mysql]# chgrp -R mysql.
#把当前目录下所有文件的所属组改为mysql组

8) 初始化数据库

源码包安装的 MySQL 中所有的数据库默认都保存在 /usr/local/mysql/data/ 目录中,MySQL 的初始数据库 mysql 库和 test 库也会保存在这个目录中。

但是,如果我们仔细查看 /usr/local/mysql/data/ 目录,就会发现这个目录中只有两个空目录,并没有任何数据。也就是说,MySQL 中的所有数据库是不存在的,那么这个 MySQL 是不能使用的,因为 MySQL 的所有用户是要保存在 user 表中的,而 user 表保存在 mysql 库中,而 mysql 库是保存在 /usr/local/mysql/data/ 目录中的。

那么,我们现在需要在 data 目录中建立 MySQL 的初始数据库。命令如下:

[root@localhost mysql]# /usr/local/mysql/bin/mysql_install_db --user=mysql
#初始化数据库

这条命令的 --user 选项表示使用 mysql 用户来初始化数据库,这个用户要和我们在步骤一中建立的用户一致。命令执行完成之后,/usr/local/mysal/data/ 目录中应该会出现很多相应的数据,证明数据库初始化成功。

9) 继续修改MySQL安装目录的权限

[root@localhost mysql]# chown -R root.
#把当前目录下所有文件的所有者改为root用户
#注意:修改的目录依然是/usr/local/mysql/目录下的文件
[root@localhost mysql]# chown -R mysql data
#把data目录的所有者改为mysql用户

10) 启动 MySQL 服务器,并保证 mysql 服务开机自启动

MySQL 服务器的安装已经完成,我们可以尝试启动 MySQL 服务器,命令如下:

[root@localhost mysql]# /usr/local/mysql/bin/mysqld_safe ——user=mysql &
#使用mysql用户启动MySQL服务器,并在后台持续运行
[root@localhost mysql]# netstat -tlun | grep 3306
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
#3306端口已经开启了

当然,我们还要保证 mysql 服务开机自启动,命令如下:

[root@localhost mysql]# vi /etc/rc.local
#修改自启动配置文件,加入如下的mysql服务标准启动命令
/usr/local/mysql/bin/mysqld_safe ——user=mysql &

11) 设定 MySQL 中 root 用户的密码,并登录

MySQL 的管理员也是 root,不过这只是数据库的管理员,不要和 Linux 的 root 用户混淆了。我们需要给 MySQL 的本地用户设定一个密码。设定密码的方式有很多种,我们使用 Linux 的命令 mysqladmin 设定 MySQL 的 root 用户的密码。命令如下:

[root@localhost mysql]# /usr/local/mysql/bin/mysqladmin -u root password 123
#给MySQL的root用户设定密码为123
[root@localhost mysql]# /usr/local/mysql/bin/mysql -u root -p
#使用root用户登录mysql
Enter password: #输入正确的密码
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version:5.1.59-community-log Source distribution
Copyright (c) 2000, 2011, Oracle and/or its affiliates.All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates.Other names may be trademarks of their respective owners.
Type 'help;' or '\h' for help.Type '\c' to clear the current input statement.
mysql>
#看到了MySQL的交互界面
mysql> \s #查询服务器状态信息
…省略部分输出…
Server characterset: utf8
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8
#编码格式已经修改为UTF-8
…省略部分输出…
mysql> exit
#退出MySQL

17.12 Linux PHP安装

关于 PHP 的版本,目前大多数企业都会使用 5.4 及更高版本,甚至越来越多的企业使用 PHP 7 版本,要知道,这两个版本还是有很大差异的,PHP 7 有很大的性能提升。

虽然“新事物取代旧事物”是必然趋势,但就目前来说,PHP 7 版本还是太新了,很多企业的网站不一定兼容。因此,本节安装的 PHP 版本为 5.4。接下来,就一起来学习如何在 Linux 系统中安装 PHP 源码包,具体步骤如下。

1) 安装libtool和libtool-ltdl

[root@localhost mysql]# yum -y install "libtool*"
[root@localhost mysql]# yum -y install "libtool-ltdl*"

2) 手工修改gd库文件

PHP 5.4 也有一些 Bug,在检测 gd 库时会报错,需要我们手工修改。命令如下:

[root@localhost mysql]# vi /usr/local/gd2/include/gd_io.h
#修改gd_io.h头文件
typedef struct gdIOCtx
{
    …
    void (*data);
    #在此程序段中加入此句
}

3) 编译安装 PHP 源码包

命令如下:

[root@localhost mysql]# cd /usr/local/src/ php-5.4.25
[root@localhost php-5.4.25]# ./configure \ #编译前配置
--prefix=/usr/local/php/ \ #指定安装位置
--with-config-file-path=/usr/local/php/etc/ \ #指定PHP配置文件位置
--with-apxs2=/usr/local/apache2/bin/apxs \ #调用apache2
--with-mysql=/usr/local/mysql/ \ #调用mysql
--with-libxml-dir=/usr/local/libxml2/ \ #调用libxml2库
--with-jpeg-dir=/usr/local/jpeg6/ \ #调用jpeg库
--with-png-dir=/usr/local/libpng/ \ #调用libpng库
--with-freetype-dir=/usr/local/freetype/ \ #调用freetype库
--with-gd=/usr/local/gd2/ \ #调用gd库
--with-mcrypt=/usr/local/libmcrypt/ \ #调用libmcrypt库
--with-mysqli=/usr/local/mysql/bin/mysql_config \#增加MysqlLi功能
--enable-soap \ #支持SOAP和Web Services
--enable-mbstring=all \ #支持多字节字符串
--enable-sockets #支持socket(套接字)通信
--with-pdo-mysql=/usr/local/mysql #启用mysql的pdo模块支持
[root@localhost php-5.4.25]# make
#编译
[root@localhost php-5.4.25]# make install
#编译安装

4) 建立PHP配置文件

和 MySQL 一样,这个配置文件不用手工建立,也是有模板文件的,我们只需复制即可。命令如下:

[root@localhost php-5.4.25]# cp /usr/local/src/ php-5.4.25/php.ini-production
/usr/local/php/etc/php.ini

5) 让apache可以识别“.php”扩展名

在安装 PHP 时,在 ./configure 命令中使用 --with-apxs2=/usr/local/apache2/bin/apxs 选项,已经把 PHP 作为模块被 apache 识别了。不过,apache 并不知道哪些扩展名的文件要调用 PHP 模块来解析(如果是 apache 不认识的扩展名,那么客户端在访问时,apache 不会尝试解析,而是提示客户端下载),所以我们需要修改 apache 的配置文件,让 apache 可以认识 PHP 脚本的扩展名。

比如,我们想让 apache 在遇到“.php”和“.phps”扩展名时,调用 PHP 模块来解析这些文件的内容,那么我们只需要执行如下命令:

[root@localhost php-5.4.25]# vi /usr/local/apache2/etc/httpd.conf
#修改apache配置文件,加入如下内容
AddType application/x-httpd-php.php.phps
#这句话的意思是:如果遇到.php和.phps扩展名,则调用PHP模块来解析这个文件的内容

这句话加载在 apache 配置文件中的任何位置都是可以的,不过系统中有类似的语句 AddType application/x-gzip.gz.tgz,那么我们一般将其加载到这句话后面。命令如下:

[root@localhost php-5.4.25]# vi /usr/local/apache2/etc/httpd.conf
…省略部分输出…
# If the AddEncoding directives above are commented-out, then you probably should define those extensions to indicate media types:
#
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddType application/x-httpd-php .php .phps #加载到此位置
…省略部分输出…

至于 PHP 文件的扩展名,可以自由定义。

6) 重启Apache服务器

我们修改了 apache 的配置文件,如果想让这个修改生效,那么必须重启 Apache 服务器。重启命令如下:

[root@localhost php-5.4.25]# /usr/local/apache2/bin/apachectl stop
[root@localhost php-5.4.25]# /usr/local/apache2/bin/apachectl start

这里最好不要使用 restart 参数,因为对于源码包的 apache 启动命令,restart 参数有时会不起作用。

7) 测试PHP环境是否正常

对源码包安装的 apache 来讲,网页的默认保存位置是 /usr/local/apache2/htdocs/ 目录。为了测试 PHP 环境是否正常,我们需要在这个目录中建立一个 PHP 文件,看看这个文件是否可以正常显示。命令如下:

[root@localhost php-5.4.25]# vi /usr/local/apache2/htdocs/index.php
<?php
phpinfo();
?>

这里我们使用了 phpinfo() 函数,这个函数的主要作用是显示 PHP 的相关信息,这些信息包括 PHP 的编译信息、PHP 的版本、服务器信息和环境、PHP 的环境、操作系统信息、路径、主要的配置选项、HTTP 头信息和 PHP 的许可等。我们一般使用这个函数来测试 PHP 是否安装成功,接下来在浏览器中输入“http://服务器IP/index.php”来执行该文件,如图1 所示。


图 1 phpinfo测试页

如果能看到图 1,那么恭喜你,PHP 安装成功。

17.13 Linux memcache安装和配置

memcache 是一个高性能的分布式的内存对象缓存系统,通过在内存中维护一张统一的、巨大的 Hash 表,它能够用来存储各种格式的数据,包括图像、视频、文件及数据库检索的结果等。简单地说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。

大家需要注意,memcache 有两个软件:

  1. memcache-3.0.8 是 memcache 模块,也就是客户端;
  2. memcached-1.4.17 是 memcache 服务器端。

memcache客户端安装

[root@localhost src]# yum -y install zlib-devel
#安装底层依赖包zlib-devel
[root@localhost src]# cd /usr/local/src/memcache-3.0.8
#进入memcache-3.0.8解压缩目录
[root@localhost memcache-3.0.8]# /usr/local/php/bin/phpize
#用phpize加载memcache模块。这条命令一定要进入memcache目录才能正确执行
[root@localhost memcache-3.0.8]# ./configure --with-php-config=/usr/local/php/bin/php-config
#编译前配置。指定php-config文件的位置
[root@localhost memcache-3.0.8]# make
#编译
[root@localhost memcache-3.0.8]# make install
#编译安装

memcache服务器端安装

接下来该安装 memcached-1.4.17 这个服务器端程序了,命令如下:

[root@localhost memcached-1.4.17]# yum -y install libevent-devel
#安装memcache,需要先安装libevent-devel包,yum安装它
#注意libevent-devel包在CentOS 6.x的第二张光盘中
[root@localhost memcached-1.4.17]# ./configure --prefix=/usr/local/memcache
#编译前配置
[root@localhost memcached-1.4.17]# make
#编译
[root@localhost memcached-1.4.17]# make install
#编译安装
[root@localhost memcached-1.4.17]# useradd memcache
#添加memcache用户,这个用户只是用来启动服务的,不用设置密码
[root@localhost memcached-1.4.17]#/usr/local/memcache/bin/memcached-u memcache &
#在后台启动memcache服务器
[root@localhost memcached-1.4.17]# netstat -tlun | grep 11211
tcp 0 0 0.0.0.0:11211 0.0.0.0:* LISTEN
tcp 0 0::11211 ::* LISTEN
udp 0 0 0.0.0.0:11211 0.0.0.0:*
udp 0 0::11211 ::*
#memcache的端口是11211,已经启动了

还要保证 memcache 开机自启动,命令如下:

[root@localhost memcached-1.4.17]# vi /etc/rc.local
#修改自启动文件
touch /var/lock/subsys/local
/usr/local/apache2/bin/apachectl start
/usr/local/mysql/bin/mysqld_safe --user=mysql &
/usr/local/memcache/bin/memcached -u memcache &
#加入memcache启动命令

最终,LAMP 环境需要自启动的服务是 apache、mysql 和 memcache。

17.14 linux phpmyadmin安装及配置

本节学习如何安装 phpMyAdmin,它是用 PHP 脚本写的 MySQL 数据库的管理软件,是使用 Web 图形模式直接管理 MySQL 数据库的工具。phpMyAdmin 可以用来创建、修改、删除数据库和数据表;可以用来创建、修改、删除数据记录;可以用来导入和导出整个数据库;还可以完成许多其他的 MySQL 系统管理任务。

对于不熟悉使用命令来进行数据库管理的管理者来说,phpMyAdmin 更加简单和方便。其实大家可以把 phpMyAdmin 当作使用 PHP 脚本写的一个项目,我们安装 phpMyAdmin 的方法可以套用到绝大多数 PHP 开源项目的安装上(其他 PHP 的开源项目在安装到 LAMP 环境中时,可能需要手工建立后台数据库结构和数据库表结构)。安装步骤如下。

复制 phpMyAdmin 脚本文件

[root@localhost ~]# cp -r /usr/local/src/ phpMyAdmin-4.1.4-all-languages/usr/local/apache2/htdocs/phpmyadmin
#改名复制phpMyAdmin到apache的默认网页目录中
[root@localhost ~]# cd /usr/local/apache2/htdocs/phpmyadmin/
#进入phpmyadmin目录
[root@localhost phpmyadmin]# cp config.sample.inc.php config.inc.php
#复制配置模板文件为真正的配置文件

phpMyAdmin 和前面章节中介绍安装的源码包都不太一样,不再是使用 C 语言编写的源码包程序,而是一个使用 PHP 脚本编写的、通过浏览器解释执行的网站项目。所以在安装时,只需把 phpMyAdmin 复制到 apache 的默认网页目录中,并通过浏览器来解释执行这个脚本即可。

修改 phpMyAdmin 的验证方式

phpMyAdmin 默认识别 3 种验证方式:

  1. HTTP 身份验证:调用apache的加密目录模块,在用户登录时,弹出登录窗口,需要输入正确的用户名和密码才能正常登录;
  2. cookie 身份验证:是HTTP身份验证模式的补充,不能使用HTTP身份验证模式的场合都可以使用它,它要求用户必须允许来自phpMyAdmin的cookie进入自己的计算机,即用户需要在浏览器中开启客户端的cookie功能;
  3. config 身份验证:客户端在登录时不再需要输入用户名和密码,就可以直接登录,因为用户名和密码是用明文方式写入config.inc.php配置文件的,所以这种验证方式并不安全,不推荐使用;

1) HTTP身份验证配置

要想使用 HTTP 身份验证,只需要修改 PHP 的配置文件 config.inc.php,把验证方式改为“http”即可。命令如下:

[root@localhost phpmyadmin]# vi config.inc.php
把 $cfg['Servers'][$i]['auth_type'] = 'cookie';
改为 $cfg['Servers'][$i]['auth_type'] = 'http';

保存退出后,就可以在浏览器中输入“http://192.168.0.210/phpmyadmin/index.php”进行访问了,如图 1 所示。


图 1 phpMyAdmin 的 HTTP 身份验证

在登录对话框中输入 MySQL 的管理员“root”和我们刚刚安装 MySQL 时设定的密码“123”就能登录 phpMyAdmin了。

2) cookie身份验证

如果想让 phpMyAdmin 使用 cookie 身份验证模式,除必须修改 config.inc.php 文件里的 auth_type 语句外,还必须向 blowfish_secret 参数提供一个字符串。这个字符串可以是任意的,目的是在把登录时使用的用户名和密码存储在客户端的 cookie 中之前,系统将使用这个字符串对它们进行加密。

在 config.inc.php 中修改的内容如下:

[root@localhost phpmyadmin]# vi config.inc.php
$cfg['blowfish_secret'] = 'c.baincheng.net'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH!*/
#这里可以写任意字符串
#在PHP中,/* */代表注释一段话
$cfg['Servers'][$i]['auth_type'] = 'cookie';
#把验证方式改为cookie

保存退出后,就可以使用浏览器访问了,访问方式和 HTTP 身份验证是一样的,如图 2 所示。同样,在登录对话框中输入 MySQL 的用户名和密码即可登录。


图 2 phpMyAdmin的cookie身份验证

17.15 LNMP安装的前期准备

如果我们手工安装 LNMP 环境,那么同样需要安装大概 14 个源码包(根据版本和功能不同而不同)。不过,现在网上非常流行的 LNMP 环境的搭建过程是采用 LNMP 一键安装包直接安装。这个一键安装包实际上就是一个事先写好的安装脚本,按照这个安装脚本,只要指定一些基本的选项,就可以完全自动安装,所以安装过程会大大简化。

下面,我们就使用一键安装包来搭建 LNMP 环境。不过在安装之前还是要做一些准备工作的。

1.是否可以和LAMP环境共存

在 Linux 中其实是可以搭建 LNMPA 环境的,也就是在 Linux 中安装 Nginx、MySQL、PHP 和 Apache 这样的网站服务器架构,这是结合了 LAMP 环境和 LNMP 环境各自的优点而产生的新的网站服务器架构。

不过,我们今天只是搭建 LNMP 架构,那么笔者建议,不要在 LAMP 环境中覆盖安装 LNMP 环境,而应该使用一个完全干净的环境重新搭建 LNMP 环境,避免出现不必要的麻烦。我的服务器因为使用的是虚拟机,所以我直接恢复了初始安装的快照,一切从头来过。

下载 LNMP 一键安装包

既然是一键安装包,所以我们就不用去下载单个的源码包了,只要在 http://soft.vpser.net/lnmp/lnmp1.0-full.tar.gz 这个地址中下载 LNMP 一键安装包即可。

其他准备工作

我们还需要做以下一些准备工作:

  • 保证 yum 源可以使用。
  • 上传 LNMP 一键安装包到 Linux 服务器。
  • 安装 gcc 编译工具。如果没有安装 gcc 编译工具,那么 LNMP 一键安装包会尝试自动 yum 安装,但是要保证 yum 源是可用的。
  • 停用 RPM 包安装的 apache 和 MySQL。
  • 禁用防火墙和 SELinux。
  • 关闭 Linux 中不必要的服务。

这些准备工作基本和 LAMP 环境一致,在此不再一一列举。

17.16 LNMP一键安装

本节介绍如何利用下载好的 LNMP 一键安装包在Linux系统上安装 LNMP 环境。

解压缩一键安装包

我们把 LNMP 一键安装包保存在 /usr/local/src/ 目录下,第一步仍然是解压缩一键安装包。命令如下:

[root@localhost ~]# cd /usr/local/src/
[root@localhost src]# tar -zxvf lnmp1.0-full.tar.gz

执行安装脚本安装 LNMP 一键安装包

既然是脚本安装包,那就不需要我们一个一个手工安装了,只要执行安装脚本 centos.sh 即可自动安装(Debian 中执行脚本为 debian.sh,Ubuntu 中执行脚本为 ubuntu.sh)。命令如下:

[root@localhost src]# cd lnmp1.0-full
[root@localhost lnmp1.0-full]#./centos.sh

回车之后安装就会继续,会看到如下界面:

==========================================================
LUMP V1.0 for CentOS/RadHat Linux VPS Written by Licess
==========================================================
A tool to auto-compile & install Nginx+MySQL+PHP on Linux
For more information please visit http://www.lnmp.org/
==========================================================
Please input the root password of mysql:
(Default password: root) : 123  #设定MySQL 的密码,这里设为 123
==========================================================
Do you want to install the InnoDB Storage Engine?
(Default no,if you want please input: y , if not please press the enter button):y
#是否需要安装MySQL InnoDB,如果需要安装则输入y

Install PHP 5.3.17,Please input y
Install PHP 5.2.17,Please input n or press Enter
(Please input y or n) :y
#选择安装PHP的版本,输入y安装的是5.3.17
Install MySQL 5.5.27,Please input y
Install MySQL 5.1.60,Please input n or press Enter
(Please input y or n) :y
#选择安装MySQL的版本,输入y安装的是5.5.27
Press any key to start. . .or Press Ctrl+c to cancel #按任意鍵开始安装

如果在安装过程中输入错误,则可以按“Ctrl+Backspace”组合键来进行删除。这个安装过程完全是依赖 centos.sh 脚本自动执行的,所以比 LAMP 的手工安装过程简单得多,我们只要指定一些基本的选项,就可以完成安装了。

具体的安装时间要视 Linux 服务器的性能而定,可能会等待几十分钟。如果大家有兴趣,则可以查看一下 centos.sh 这个安装脚本,看看它是如何实现自动安装的。如果看到以下界面,则证明安装成功。

=========================================================
Manager for LNMP VI.0 , Written by Licess
=========================================================
LNMP is a tool to auto-compile & install Nginx+MySQL+PHP on Linux
This script is a tool to Manage status of lnmp
For more information please visit http://www.lnmp.org
Usage: /root/lnmp {start|stop|reload|restart|kill|status}
=========================================================
Nginx is runing!
php-fpm is runing!
MySQL running (12489)   [确定]
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address   Foreign Address State
tcp 0 0 0.0.0.0:53575   0.0.0.0:*   LISTEN
tcp 0 0 0.0.0.0:3306    0.0.0.0:*   LISTEN
tcp 0 0 0.0.0.0:111 0.0.0.0:*   LISTEN
tcp 0 0 0.0.0.0:80  0.0.0.0:*   LISTEN
tcp 0 0 0.0.0.0:22  0.0.0.0:*   LISTEN
tcp 0 0 127.0.0.1:631   0.0.0.0:*   LISTEN
tcp 0 0 127.0.0.1:25    0.0.0.0:*   LISTEN
tcp 0 0 :::57454    :::*    LISTEN
tcp 0 0 :::111  :::*    LISTEN
tcp 0 0 :::22   :::*    LISTEN
tcp 0 0 ::1:631 :::*    LISTEN
tcp 0 0 ::1:25  :::*    LISTEN

LNMP一键安装包安装的软件及具体位置

既然是一键安装,那么默认安装的软件和软件的安装位置都是事先设定好的,在安装过程中不能更改。具体安装了哪些软件及其位置如表 1 所示。

表 1 LNMP一键安装包安装的软件及其位置
默认安装软件 软件安装位置 软件相关配置文件名 配置文件安装位置
Nginx /usr/local/nginx/ Nginx 配置文件 /usr/local/nginx/conf/nginx.conf
默认网站目录 /home/wwwroot/delault
曰志文件 /home/wwwlogs/
MySQL /usr/local/mysql/ MySQL 配置文件 /etc/my.cnf
数据所在位置 /usr/local/mysql/var/
PHP /usr/local/php/ PHP 配置文件 /usr/local/php/etc/php.ini
php-fpm配置文件 /usr/local/php/clc/php-rpm.conf
phpMyAdmin /homc/wwwroot/dcfault/phpmyadmin/
Zend Optimizer /usr/local/zend/

也就是说,LNMP 一键安装只安装了基本的 Nginx、MySQL、PHP、phpMyAdmin 和 Zend Optimizer。

17.17 LNMP安装php扩展模块

我们已经知道 LNMP 一键安装包默认只安装了最基本的 Nginx+MySQL+PHP 环境,并没有安装扩展功能模块,如果需要安装扩展模块该怎么办?

不用担心,也有相应的安装脚本,我们一个一个来看。需要注意的是,以下 5 个模块并不是必须安装的,而是用到哪个模块才安装哪个模块。

安装eAccelerator

eAccelerator 是一个开放源码的 PHP 加速器,提高了 PHP 脚本的缓存性能,使得 PHP 脚本在编译状态下对服务器的开销几乎完全消除。它还对脚本起到了优化作用,以加快其执行效率。安装过程如下:

[root@localhost ~]# cd /usr/local/src/lnmp1.0-full
#进入lnmp解压缩目录
[root@localhost lnmp1.0-full]# ./eaccelerator.sh
#执行ccelerator.sh 安装脚本
========================================================
Install eAcesselerator for LNMP VI.0 , Written by Licess
========================================================
LNMP is a tool to auto-compile S install Nginx+MySQL+PHP on Linux This script is a tool to install eAccelerator for lnmp

For more information please visit http://www.lnmp.org
========================================================
Which version do you want to install:
Install eaccelerator 0.9.5.3 please type: old
#0.9.5.3版本支持PHP 5.2,如需此版本请输入old
Install eaccelerator 0.9.6.1 please type: new
#0.9.6.1版本支持PHP 5.2和5.3,如需此版本请输入new
Install eaccelerator 1.0-dev please type: dev
#1.0版本支持PHP 5.2, 5.3和5.4,如需此版本请输入dev
Type old, new or dev (Default version old):dev
#输入 dev
Press any key to start. . .or Press Ctrl+c to
#按任意键开始安装

这里按回车键,eAccelerator 就会自动安装,也很方便。

安装xCache

xCache 是一个又快又稳定的 PHP opcode 缓存器,经过良好的测试并可在大流量/高负载的生产机器上稳定运行,经过(在 Linux 上)测试并支持所有现行 PHP 分支的最新发布版本。安装过程如下:

[root@localhost ~]# cd /usr/local/src/lnmp1.0-full
#进入lnmp解压缩目录
[root@localhost lnmp1.0-full]# ./xcache.sh
#执行xcache.sh安装脚本
=======================================================================
Install XCache for LNMP V1.0 , Written by Licess
=======================================================================
LNMP is a tool to auto-compile & install Nginx+MySQL+PHP on Linux
This script is a tool to install XCache for lnmp
more information please visit http://www.lnmp.org
=======================================================================
Which version do you want to install:
Install XCache 2.0.0 please type:old
Install XCache 3.0.1 please type:new
Type old or new (Default install XCache 3.0.1):new
#安装较新的版本

同样,回车之后会让你确认,再次回车就可以安装了。

安装memcached

memcached 的安装过程如下:

[root@localhost ~]# cd /usr/local/src/lnmp1.0-full
#进入lnmp解压缩目录
[root@localhost lnmp1.0-full]#./memcached.sh
#执行memcached.sh安装脚本

这个软件的安装不再有安装选项需要选择,回车就会自动安装 memcache php 扩展和 memcached。

安装imageMagick

imageMagick 是一个用于查看、编辑位图文件以及进行图像格式转换的开放源码软件套装,它可以读取、编辑超过 100 种图像格式,可用来代替 gd 库。安装过程如下:

[root@localhost ~]# cd /usr/local/src/lnmp1.0-full
#进入lnmp解压缩目录
[root@localhost lnmp1.0-full]#./imageMagick.sh
#执行imageMagick.sh安装脚本

这个软件也没有安装选项需要选择,回车就会自动安装 imageMagick。

安装ionCube

ionCube loader 是用来解密 ionCube 加密的 PHP 脚本的,如 whmcs 就采用 ionCube 加密。安装过程如下:

[root@localhost ~]# cd /usr/local/src/lnmp1.0-full
#进入lnmp解压缩目录
[root@localhost lnmp1.0-full]#./ionCube.sh
#执行ionCube.sh安装脚本

回车就会自动安装。

17. LAMP环境搭建和LNMP环境搭建相关推荐

  1. 阿里云 MVP技术直播——缪政辉教你如何搭建万能LNMP环境

    摘要: 阿里云 MVP 缪政辉开直播咯!快把这个好消息告诉你身边热爱技术,喜欢云计算的同学! 缪政辉是谁? 网名妙正灰,真名和网名读法一致.阿里云第三季新晋MVP,电商在读大学生.云计算领域罕见的文科 ...

  2. lamp 独立mysql_lamp or lnmp 环境搭建之独立安装mysql数据库

    lamp or lnmp 环境搭建,如果mysql 是独立安装的则需要授权: 单独一台服务器独立安装mysql 安装后,优化服务器. 授权 实例如下: 创建用户 CREATE USER demo ID ...

  3. cacti mysql-bin_Cacti环境搭建(LNMP环境)

    一.准备软件包: LNMP环境: 1.首先安装mysql数据库: mysql-5.1.62.tar.gz moxiu_liwei ~ # useradd -s /sbin/nologin mysql ...

  4. LAMP坏境和LNMP环境安装Nagios4.1.1和基本配置

    ----------------------------------------以下内容为笔者生产环境的监控,安装都是经过一步步测试的-------------------------------- ...

  5. lnmp环境搭建 php7,lnmp环境搭建(centos6.9+mysql5.7+php7.1+nginx1.10)

    安装前准备:CentOS 6.9 64位 最小化安装 yum install -y make gcc gcc-c++ perl zlib-devel libaio libpng libpng-deve ...

  6. Ubuntu15.04下搭建LNMP环境 - 无需整理

    为什么80%的码农都做不了架构师?>>>    親測 PHP查詢數據庫正常  LNMP是Linux+Nginx+MySQL+PHP的简称,是一套完整的PHP网站服务器架构环境. 所用 ...

  7. WIN10 vagrant和virtualbox虚拟机和一键搭建lnmp环境配置thinkphp虚拟主机

    版本:win10系统 virtualbox:5.1.26 vagrant :1.9.7 centos 7.0 xshell/git 首先下载好对应版本的软件 配置vagrant和virtualbox ...

  8. CentOS 6.4用源代码安装LNMP环境

    2019独角兽企业重金招聘Python工程师标准>>> CentOS 6.4用源代码安装LNMP环境 对于在Linux系统中安装web服务其实都是差不多的,只是软件的选择不一样,不过 ...

  9. 1.2 lamp/lnmp 环境搭建

    我认为,无论是学习安全还是从事安全的人,多多少少都会有些许的情怀和使命感!!! 1.2 lamp/lnmp 环境搭建 在不同的操作系统下,漏洞的测试结果也可能会不一样. 简单举例:像文件包含截断,在W ...

最新文章

  1. 如何快速优化机器学习的模型参数
  2. ogg oracle to mysql_ogg oracle to mysql
  3. 为什么不走INDEX FAST FULL SCAN呢
  4. Kotlin程序用于打印JVM版本的Kotlin(打印Java属性)
  5. 用Java实现HTTP文件队列下载
  6. go golang 判断base64数据 获取随机字符串 截取字符串
  7. ubuntu 创建容器 并ssh 连接容器
  8. linux虚拟化技术这么玩,Linux上实现虚拟化技术的优势
  9. java 如何去掉http debug日志_谈谈日志的最佳实践
  10. Makefile.am:1: error: Libtool library used but 'LIBTOOL' is undefined
  11. 挑战程序设计竞赛(第一章)
  12. RGB三色灯珠WS2812B/WS2815B
  13. Excel如何根据身份证号码提取出性别
  14. 项目范围频繁变更怎么办?
  15. 搭建博客mysql 结构_LANP环境构架搭建
  16. 明源售楼系统技术解析(一)搭建MVC3框架
  17. Exploratory Social Network Analysis with Pajek(第三版)11
  18. 关于苏宁易购的好坏与网购的心酸苦逼史,有同感的请继续顶起
  19. Python+PyQt5实现灭霸响指
  20. Video Caption

热门文章

  1. 进制间的相互转换方法详解(配案例)
  2. Deep Poincare Map for Robost Medical Image Segmentation 论文阅读
  3. DuiVision开发教程(15)-DUI文本控制基础类
  4. html vue.js readonly,使用js设置input标签只读 readonly 属性
  5. .NET Core SDK下载安装
  6. 常用外贸企业邮箱账号格式,安全邮箱外贸邮箱格式怎么选?
  7. 初学c语言数据类型——变量
  8. 数字化转型“军舰”启航:详解华为云容器全新解决方案
  9. python实现http get请求
  10. php指针取数组元素,php实现数组指针操作详解