源码编译安装 LAMP

本章内容

  • 掌握以源码编译的方法构建 LAMP 环境
  • 学会 phpMyAdmin 的使用

没安装apache服务的,看我之前的文章安装apache基本服务服务
2.4 MySQL 的编译安装
MySQL 是一个真正的多线程、多用户的 SQL 数据库服务,凭借其高性能、高
可靠和易于使用的特性,成为服务器领域中最受欢迎的开源数据库系统。本节将介
绍 MySQL 的编译安装过程、服务控制方法。
为 了 确 保 MySQL 数 据 库 功 能 的 完 整 性 、 可 定 制 性 , 本 小 节 将 以
mysql-5.6.36.tar.gz 为例使用源代码编译的方式安装 MySQL 数据库系统。
1 .准备工作
为了避免发生端口冲突、程序冲突等现象,建议先查询 MySQL 软件的安装情况,
确认没有使用以 RPM 方式安装的 mysql-server 、 mysql 、 MariaDB 软件包;否则建议
将其卸载。

[root@ppp ~]# rpm -q mysql-server mysql
未安装软件包 mysql-server 
未安装软件包 mysql 
[root@ppp ~]# yum install -y ncurses-devel

由于 MySQL 5.5 需要 cmake 编译安装,所以先安装 cmake 包。

[root@ppp ~]# tar zxf cmake-2.8.6.tar.gz 
[root@ppp ~]# cd cmake-2.8.6/
[root@ppp cmake-2.8.6]# ./configure
[root@ppp cmake-2.8.6]# gmake && gmake install

2 .源码编译及安装
( 1 )创建运行用户
为了加强数据库服务的权限控制,建议使用专门的运行用户,如 mysql 。此用户不
需要直接登录到系统,可以不创建宿主文件夹。

[root@ppp ~]# groupadd mysql
[root@ppp ~]# useradd -M -s /sbin/nologin mysql -g mysql
[root@ppp ~]# 

( 2 )解包
将下载的 MySQL 源码包解压,释放到 /usr/src 目录下,并切换到展开后的源码目
录。

[root@ppp ~]# tar zxf mysql-5.6.36.tar.gz -C /usr/src
[root@ppp ~]# cd /usr/src/mysql-5.6.36/
[root@ppp mysql-5.6.36]# 

( 3 )配置
在内容丰富、结构庞大的企业网站平台中,可能会用到多种字符集的网页,相应地
数据库系统也应该支持不同的字符集编码。在配置过程中,可以将默认使用的字符集设
置为 utf8 ,并添加其他字符集的支持。

[root@ppp mysql-5.6.36]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DSYSCONFDIR=/etc -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all

上述配置命令中,各选项的含义如下。
 -DCMAKE_INSTALL_PREFIX :指定将 MySQL 数据库程序安装到某目录下,如目
录 /usr/local/mysql 。
 -DSYSCONFDIR :指定初始化参数文件目录。
 -DDEFAULT_CHARSET :指定默认使用的字符集编码,如 utf8 。
 -DDEFAULT_COLLATION :指定默认使用的字符集校对规则, utf8_general_ci 是
适用于 UTF-8 字符集的通用规则。
 -DWITH_EXTRA_CHARSETS :指定额外支持的其他字符集编码。
( 4 )编译并安装

[root@ppp mysql-5.6.36]# make&&make install

3 .安装后的其他调整
( 1 )对数据库目录进行权限设置

[root@ppp mysql-5.6.36]# chown -R mysql:mysql /usr/local/mysql

( 2 )建立配置文件

[root@ppp mysql-5.6.36]# rm -rf /etc/my.cnf
[root@ppp mysql-5.6.36]# 
[root@ppp mysql-5.6.36]# cp support-files/my-default.cnf /etc/my.cnf
[root@ppp mysql-5.6.36]# 

( 3 )初始化数据库
为了能够正常使用 MySQL 数据库系统,应以运行用户 mysql 的身份执行初始化脚
本 mysql_install_db ,指定数据存放目录等 。

[root@ppp mysql-5.6.36]# 
/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/

为了方便在任何目录下使用 mysql 命令,需要在 /etc/profile 设置环境变量。

[root@ppp mysql-5.6.36]# echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
[root@ppp mysql-5.6.36]# . /etc/profile

4 启动并访问 MySQL 服务
MySQL 源码包中提供的服务控制脚本,使用该脚本即可控制 MySQL 服务。找到
support-files 文件夹下的 mysql.server 脚本文件,将其复制到 /etc/rc.d/init.d 目录下,并
改名为 mysqld ,然后再设置执行权限。

[root@ppp mysql-5.6.36]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
[root@ppp mysql-5.6.36]# chmod +x /usr/local/mysql/bin/mysqld.sh
[root@ppp ~]# vim /usr/lib/systemd/system/mysqld.service

[Unit]
Description=MySQL Server
After=network.target

[Service]
User=mysql
Group=mysql


Type=forking
PIDFile=/usr/local/mysql/data/pp.pid
ExecStart=/usr/local/mysql/bin/mysqld.sh start
ExecStop=/usr/local/mysql/bin/mysqld.sh stop

[Install]
WantedBy=multi-user.target
[root@ppp ~]# systemctl start mysqld
[root@ppp ~]# systemctl enable mysqld

MySQL 服务器默认通过 TCP 3306 端口提供服务。通过编辑 /etc/my.cnf 配置文件
中 [mysqld] 配置段的 "port = 3306" 行,可以更改监听端口。
经过安装后的初始化过程, MySQL 数据库的默认管理员用户名为 "root" ,密码为给定的
随机密码。以 root 用户登录本机的 MySQL 数据库,可以执行以下操作。

[root@ppp ~]# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.6.36 Source distribution

Copyright (c) 2000, 2017, 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> 

2.5 构建 PHP 运行环境
PHP 即 "Hypertext Preprocessor" (超级文本预处理语言)的缩写,是一种服务器
端的 HTML 嵌入式脚本语言。 PHP 的语法混合了 C 、 Java 、 Perl 及部分自创的新语法,
拥有更好的网页执行速度,更重要的是 PHP 支持绝大多数流行的数据库,在数据库层
面的操作功能十分强大,而且能够支持 UNIX 、 Windows 、 Linux 等多种操作系统。
本节将介绍如何构建 PHP 运行环境,以实现 LAMP 协同架构。其前提条件是服务
器中已经编译安装好 Apache HTTP Server 和 MySQL 数据库。
2.5.1 安装 PHP 软件包
PHP 项目最初由 Rasums Lerdorf 在 1994 年创建,
1995 年发布第一个版本 PHP1.0 。
本小节将以稳定版源码包 php-5.5.38.tar.gz 为例。该版本可以从 PHP 官方站点
http://www.php.net 下载。
下面介绍编译安装 PHP 相关软件包的基本过程。
1 .准备工作
为了避免发生程序冲突等现象,建议先将 RPM 方式安装的 PHP 及相关依赖包(如
果已存在)卸载。例如,根据实际安装情况可卸载 php 、 php-cli 、 php-ldap 、 php-common 、
php-mysql 等。另外,需要从光盘中安装 zlib-devel 、 libxml2-devel 等依赖包。

[root@ppp ~]# rpm -e php php-cll php-idap php-common php-mysql --nodeps
[root@ppp ~]# rpm -ivh /mnt/Packages/zlib-devel-1.2.7-18.el7.x86_64.rpm
[root@ppp ~]# rpm -ivh /mnt/Packages/xz-devel-5.2.2-1.el7.x86_64.rpm 
[root@ppp ~]# rpm -ivh /mnt/Packages/libxml2-devel-2.9.1-6.el7_2.3.x86_64.rpm 

2 .安装扩展工具库
在实际企业应用中,一部分基于 PHP 开发的 Web 应用系统会需要额外的扩展工具,
如数据加密工具 libmcrypt 、 mhash 、 mcrypt 等(可以从站点 http : //sourceforge.net
下载)。安装 php 软件包之前,应先安装好这些扩展工具程序。
( 1 )安装 libmcrypt

[root@ppp ~]# tar zxf libmcrypt-2.5.8.tar.gz -C /usr/src/
[root@ppp ~]# cd /usr/src/libmcrypt-2.5.8/
[root@ppp libmcrypt-2.5.8]# ./configure
[root@ppp libmcrypt-2.5.8]#  make && make install
[root@ppp libmcrypt-2.5.8]# ln -s /usr/local/lib/libmcrypt.* /usr/lib/

( 2 )安装 mhash

[root@ppp ~]# tar zxf mhash-0.9.9.9.tar.gz -C /usr/src/
[root@ppp ~]# cd /usr/src/mhash-0.9.9.9/
[root@ppp mhash-0.9.9.9]# ./configure
[root@ppp mhash-0.9.9.9]# make && make install
[root@ppp mhash-0.9.9.9]# ln -s /usr/local/lib/libmhash* /usr/lib/

( 3 )安装 mcrypt

[root@ppp ~]# tar zxf mcrypt-2.6.8.tar.gz -C /usr/src/
[root@ppp ~]# cd /usr/src/mcrypt-2.6.8/
[root@ppp mcrypt-2.6.8]# ./configure
[root@ppp mcrypt-2.6.8]# export LD_LIBRARY_PATH=/usr/local/lib
[root@ppp mcrypt-2.6.8]# ./configure
[root@ppp mhash-0.9.9.9]# make && make install

3 .编译安装 PHP
( 1 )解包
将下载获得的 PHP 源码包解压并释放到 /usr/src 目录下,切换到展开后的源码目录。

[root@ppp ~]# tar zxf php-5.5.38.tar.gz -C /usr/src
[root@ppp ~]# cd /usr/src/php-5.5.38/
[root@ppp php-5.5.38]# 

( 2 )配置
在定制 PHP 的配置选项时,最关键的是要指定 httpd 、 mysqld 的安装路径,以便
添加相关支持设置,使 LAMP 各组件协同工作。除此之外,还可以指定安装路径,启用
多字节支持、加密扩展支持等。

[root@ppp php-5.5.38]# ./configure --prefix=/usr/loacl/php5 --with-mcrypt --with-apxs2=/usr/local/httpd/bin/apxs --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-config-file-path=/usr/local/php5 --enable-mbstring

上述配置命令中,各选项的含义如下。
--prefix :指定将 PHP 程序安装到哪个目录下,如 /usr/local/php5 。
--with-mcrypt :加载数据加密等扩展工具支持。
--with-apxs2 :设置 Apache HTTP Server 提供的 apxs 模块支持程序的文件位置。
--with-mysql :设置 MySQL 数据库服务程序的安装位置。
--with-mysqli 添加 MySQL 扩展支持。
--with-config-file-path :设置 PHP 的配置文件 php.ini 将要存放的位置。
--enable-mbstring :启用多字节字符串功能,以便支持中文等代码。

[root@ppp php-5.5.38]# make && make install

编译的过程可能会需要较长时间,需耐心等待。若期间未出现错误,那么 PHP 程
序的安装过程就基本完成了。接下来需要对 LAMP 组件环境进行适当的配置,并验证是
否能够协同工作。
2.5.2 设置 LAMP 组件环境
设置 LAMP 组件环境,主要包括对 PHP 的配置文件 php.ini 、 Apache 的配置文件
httpd.conf 的调整。前者用来确定 PHP 的运行参数,后者用来加载 libphp5.so 模块,
以便支持 PHP 网页。
1 php.ini 配置调整
( 1 ) php.ini 的建立及基本设置
安装好 PHP 软件包以后,服务器并不会自动创建 php.ini 配置文件,但在源码目录
下提供了两个样例配置文件,分别对应于开发环境、生产环境。

/usr/src/php-5.5.38/php.ini-development //开发版样例文件,用于学习、测试
/usr/src/php-5.5.38/php.ini-production //生产版样例文件,用于实际运营

选择其中一个样例文件,并复制到 PHP 的配置文件目录 /usr/local/php5 下,并改
名为 php.ini 。在 php.ini 配置文件中,以分号开头的内容表示注释信息。

[root@ppp ~]# cp /usr/src/php-5.5.38/php.ini-development /usr/local/php5/php.ini
[root@ppp ~]# grep -v "^;" /usr/local/php5/php.ini | grep -v "^$"
[PHP]
engine = On
short_open_tag = Off
asp_tags = Off

通过修改 php.ini 文件中的配置内容,可以控制 PHP 网页的执行特性,如是否允许
用户上传文件、设置上传文件的大小限制、设置默认使用的字符集、加载额外的扩展模
块等。如果没有特别要求,可以直接沿用默认配置,不做任何修改。

[root@pp ~]vim /usr/local/php5/php.ini ...... //省略部分内容
default_charset = "utf-8" //设置默认字符集为 utf-8
file_uploads = On //允许通过 PHP 网页上传文件
upload_max_filesize = 2M //允许上传的文件大小限制
max_file_uploads = 20 //每个 HTTP 最多允许请求上传的文件数
post_max_size = 8M //每次通过表单 post 提交的数据量限制
short_open_tag = On //允许识别 PHP 短语法标记,即<?...?>
extension=php_mysqli.dll //添加 MySQL 支持

( 2 )添加 ZendGuardLoader 优化模块
为了进一步提高 PHP 程序的执行效率,优化页面加载速度,可以为 PHP 添加 Zend
公司开发的 ZendGuardLoader 优化模块。若需要加密 PHP 代码以限制未经授权的分发,
还可以购买该公司的 ZendGuard 软件。添加 ZendGuardLoader 模块支持的过程如下所
述。
首先将下载的 ZendGuardLoader 包释放,并将其中 php-5.3.x 目录下的模块文件

[root@ppp ~]# cd /usr/src/zend-loader-php5.5-linux-x86_64/
[root@ppp zend-loader-php5.5-linux-x86_64]# 
[root@ppp zend-loader-php5.5-linux-x86_64]# cp /usr/src/php-5.5.38/php.ini-development /usr/loacl/php5/lib/php
[root@ppp zend-loader-php5.5-linux-x86_64]# 

然后,修改 php.ini 配置文件,添加及启用 ZendGuardLoader.so 模块的配置语句。

[root@ppp ~]# vim /usr/loacl/php5/php.ini
zend_extension=/usr/local/php5/lib/php/ZendGuardLoader.so
zend_loader.enable=1

2 httpd.conf 配置调整
要使 httpd 服务器支持 PHP 页面解析功能,需通过 LoadModule 配置项加载 PHP
程序的模块文件,并通过 AddType 配置项添加对 ".php" 类型网页文件的支持。除此以外,
还应修改 DirectoryIndex 配置行,添加 index.php 配置项,以识别常见的 PHP 首页文
件。

[root@ppp ~]# vim /usr/local/httpd/conf/httpd.conf
<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>
AddType application/x-httpd-php .php
LoadModule php5_module modules/libphp5.so
[root@ppp ~]# systemctl restart httpd

在上述配置内容中, LoadModule 行应该会在安装 PHP 的过程中自动添加,其中
的 "php5_module" 表示模块名称;
"modules/libphp5.so" 表示模块文件位置。而 AddType
行需要手动添加, DirectoryIndex 行在原有基础上对其进行修改即可。
2.5.3 测试 LAMP 协同工作
完成 PHP 相关软件的安装、调整配置以后,应对其进行必要的功能测试,以验证
LAMP 平台各组件是否能够协同运作。在网站根目录下创建相应的 PHP 测试网页,然
后通过浏览器进行访问,根据显示结果即可判断 LAMP 平台是否构建成功。
下面分别从 PHP 网页的解析、通过 PHP 页面访问 MySQL 数据库两个方面进行测
试。
要想测试 PHP 环境是否能够正常工作,需要建立一个使用 PHP 语言编写的网页文
件,并通过 httpd 服务器发布,在浏览器中对其进行访问。由于 PHP 语言并非本章学
习的重点,这里不做过多的讲解。用于测试时,只需要建立一个简短的 PHP 测试文件
即可。
1 .测试 PHP 网页能否正确显示
编写一个 ".php" 格式的网页测试文件,使用 PHP 内建的 "phpinfo()" 函数显示服务器
的 PHP 环境信息, PHP 代码应包括在 "<?php ...?>" 标记之间。将测试网页文件放置到
网站根目录下,如 /usr/local/httpd/htdocs/test1.php 。

[root@ppp ~]# vim /usr/local/httpd/htdocs/test1.php
<?php
phpinfo( );
?>

通过浏览器访问测试网页,如 http://ip/test1.php 。若能够看到 PHP 程
序的版本号、配置命令、运行变量等相关信息,如图 2.1 所示,则表示此 Web 服务器
已经能正常显示 PHP 网页;若还能看到 Zend 引擎相关信息,则表示 ZendGuardLoader
模块也已成功启用。
2 .测试 PHP 网页能否访问 MySQL 数据库
编写一个网页测试文件 test2.php ,添加简单的数据库操作命令,用于验证与 MySQL
服务器的连接、查询等操作。其中,
"mysqli_connect()" 函数用于连接 MySQL 数据库,需
要指定目标主机地址,以及授权访问的用户名、密码。

[root@ppp ~]# vim /usr/local/httpd/htdocs/test2.php
<?php
$link=mysqli_connect('localhost','root','123456');
if($link)echo "hmd";
mysqli_close($link);
?>

通过浏览器访问测试网页,如 http://ip/test2.php 。若能看到成功连接的
提示信息,则表示能够通过 PHP 网页访问 MySQL 数据库。当使用了错误的用户名、
密码,或者因 "mysqld-connect()" 函数未运行而导致连接失败时,执行时将会报错。

2.6 LAMP 架构应用实例
在企业 Web 应用系统中,动态网站已经逐步成为主流,而基于 LAMP 架构的 Web
动 态 网 站 更 是 其 中 的 佼 佼 者 。 本 节 将 介 绍 一 个 LAMP 架 构 协 同 应 用 的 实 例
--phpMyAdmin 管理套件的部署及使用。
2.6.1 部署 phpMyAdmin 系统
phpMyAdmin 是一个使用 PHP 语言编写,用来管理 MySQL 数据库的 Web 应用系
统。通过该套件提供的网页界面,即便是对 SQL 语句不太熟悉的人,也能够非常容易
地对 MySQL 数据库进行管理和维护。
phpMyAdmin 的源码包可以从其官方站点 http://www.phpmyadmin.net 下载。下面
以多国语言版源码包 phpMyAdmin-4.7.2-all-languages.tar.gz 为例,介绍 phpMyAdmin
套件的部署过程。
1 .解包并复制到网站目录
对于大部分 PHP 应用系统,只需要解包后复制到网站目录下即可完成部署,之后
再根据需要调整配置,或者访问安装页面以完成进一步的安装。例如,若要将
phpMyAdmin 套 件 部 署 到 网 站 根 目 录 下 , 以 便 通 过 站 点
http://ip/phpMyAdmin/ 访问。

[root@ppp ~]# tar zxf phpMyAdmin-4.7.2-all-languages.tar.gz 
[root@ppp ~]# mv phpMyAdmin-4.7.2-all-languages /usr/local/httpd/htdocs/phpMyadmin
[root@ppp ~]# 

2 .建立配置文件 config.inc.php
将 phpMyAdmin 套件复制到网站目录以后,还需要创建配置文件方可正常使用。
默 认 提 供 的 样 例 配 置 文 件 为 config.sample.inc.php , 需 参 照 该 文 件 内 容 建 立
configi.inc.php 配置文件。查找配置文件中的 "blowfish_secret" 行,默认已经设置了一个
短语密钥(此密钥用于网页 cookie 认证,不需要用户记忆),可以根据需要自行修改。

[root@ppp ~]# cd /usr/local/httpd/htdocs/phpMyadmin/
[root@ppp phpMyadmin]# cp config.sample.inc.php config.inc.php
[root@ppp phpMyadmin]# 

3 .访问 phpMyAdmin Web 管理界面
在浏览器中访问 http://ip/phpMyAdmin/ ,如果能够看到 phpMyAdmin
系统的登录界面,如图 2.3 所示,则表示部署成功。使用 MySQL 数据库的用户(不
能是密码为空的用户)登录后,即可在授权范围内对数据库进行管理。

2.6.2 使用 phpMyAdmin 系统
需要使用 phpMyAdmin 系统时,应先通过 MySQL 服务器中授权的数据库用户(如
root 用户)进行登录,认证成功后可以看到管理界面,如图 2.4 所示。通过 phpMyAdmin
套件,用户可以在授权的范围内执行各种数据库管理操作,使界面更加直观、友好,大
大降低了远程维护 MySQL 数据库服务器的难度。

管理页面的初始界面是一个典型的分栏结构,左侧部分包括一排导航按钮(主
页、退出、查询、帮助、 SQL 文档)、库列表;右侧部分是主体窗口,其中显示了若干
标签、操作面板、界面控制等组件,以及 MySQL 、网站服务器、 phpMyAdmin 的版本
信息。
下面仅简单介绍 phpMyAdmin 系统中几个常见的数据库操作,更多的操作方法需
要大家自行去探索和实践。
1 .创建新的库、新的表
若要创建新的库,可以选择右侧的 " 数据库 " 标签,然后在下方的 " 新建数据库 " 区域
进行操作,如图 2.5 所示。例如,指定新建的库名称为 "kgc" ,使用的校对规则选择
utf8_general_ci ,然后单击 " 创建 " 按钮即可新建 kgc 库。

返回管理界面主页,选择左侧列表中新建的 kgc 库,在右侧的 " 结构 " 标签页下方,
可以输入新的表名、字段数,单击 " 执行 " 按钮;然后根据页面内容设置各字段的名称、
类型(对于要包含中文数据的字段,类型应选用 " 文本 " 栏下的 CHAR 、 VCHAR 等)、长
度等要素后,单击 " 保存 " 按钮即可新建指定的表。
2 .表及数据记录的管理
选中指定库中的表,可以分别进行浏览数据、修改表结构、搜索数据、插入数据等
操作。
值得注意的是,如果数据库、表中需要记录包含中文的数据,应确保 LAMP 平台各
组件使用相同的字符集(如 UTF-8) ,否则可能会出现乱码的情况。在编码一致的前提
下,新建数据库、表,以及插入、浏览记录时,都可以正常使用中文。
3 .直接执行 MySQL 查询语句
单击右侧的 "SQL" 标签 ,可以打开 SQL 查询窗口。在该窗口中,可以直接输入
MySQL 操作语句,并通过单击右下方的 " 执行 " 按钮来完成相应的管理任务

相关推荐
冷曦_sole12 分钟前
linux-21 目录管理(一)mkdir命令,创建空目录
linux·运维·服务器
最后一个bug14 分钟前
STM32MP1linux根文件系统目录作用
linux·c语言·arm开发·单片机·嵌入式硬件
卫生纸不够用33 分钟前
子Shell及Shell嵌套模式
linux·bash
柒烨带你飞42 分钟前
路由器的原理
网络·智能路由器·php
world=hello1 小时前
关于科研中使用linux服务器的集锦
linux·服务器
soragui1 小时前
【ChatGPT】OpenAI 如何使用流模式进行回答
linux·运维·游戏
KELLENSHAW2 小时前
MySQL45讲 第三十七讲 什么时候会使用内部临时表?——阅读总结
数据库·mysql
四七伵2 小时前
MySQL外键类型与应用场景总结:优缺点一目了然
mysql
白云coy2 小时前
Redis 安装部署[主从、哨兵、集群](linux版)
linux·redis