linux架构学习第二十七天 编译安装LAMP(php-fpm)

内容:

第一部分:编译安装LAMP(php以模块的方式工作)

第二部分:编译安装LAMP(php以fpm的方式工作)

第一部分:

前面介绍我们知道,

apache + php结合的方式大概几种:

第一种:把php编译时直接编译成apache的模块、module模块化的方式进行工作

第二种:CGI、通用网关接口、apache基于CGI跟hph通信

第三种:fastcgi方式,他也是一种协议,在这种模块下他们两个是这样结合的:

本来php是做为一个模块或都是php解析器运行的,不是监听在某个套接字上接收别人的请求的,而是让别人调用为一个进程使用的,可能是做为别人的子进程在运行,但是工作在fastcgi这种模块下的hph自行启用为一个服务进程

他监听在某个套接字上,随时可以接受来自客户端的请求的,他也是有一个主进程的,为了可以响应多个用户的请求,他会启用多个子进程,这些子进程我们也可以称为工作进程,

他也是有空闲进程的,一但有客户请求他马上使用空闲的进程响应客户端的请求,将结果返回给前端的调用者,在php5.3.3版本之前他是没有这个能力了,只能工作在模块和CGI的方式下,而在5.3.3之后这个模块直接被收进php模块中,这种模块就叫php-fpm。

所以在以后编译php时,要想跟apache结合,就要编译成php-fpm,这是基于fastcgi工作的模式,并启动这服务进程,也就意味着他是通过套接字跟前端的调用者通信,既然基于套按字通信了,那么前端的web服务器和后面的php服务器完全可以工作在不同的主机上,实现了所谓的分层机制。

apache不会跟数据库打交道,他是个静态web服务器,跟数据库打交道的是应用程序,作为应用程序的源驱动能够基于某个API跟服务器之间建立会话,而后他会通过我们的mysql语句发送给数据库,数据库再将结果返回给应用程序,不是php进程,而是php进程中所执行的代码。

编译安装LAMP

1、准备干净的操作系统,并且编译环境准备

2、相关的编译源码包准备

3、选择编译安装的版本(centos6.8+httpd2.4.10+mariadb5.5.46+php5.6.4)

4、编译安装以及测试LAMP

1、编译安装的环境准备:

# yum groupinstall "Development Tools" "Server Platform Development" -y

2、准备相关的源码包

下载地址:

apache编译相关

apr="http://mirrors.aliyun.com/apache/apr/apr-1.5.2.tar.bz2"

aprutil="http://mirrors.aliyun.com/apache/apr/apr-util-1.5.4.tar.bz2"

HTTPD="http://mirrors.aliyun.com/apache/httpd/httpd-2.4.23.tar.gz"

PHP编译相关:

PHP="http://mirrors.sohu.com/php/php-5.4.28.tar.gz"

libmytRPM="http://mirrors.aliyun.com/epel/6/x86_64/libmcrypt-2.5.8-9.el6.x86_64.rpm"

libdelRPM="http://mirrors.aliyun.com/epel/6/x86_64/libmcrypt-devel-2.5.8-9.el6.x86_64.rpm"

mariadb编译相关:

MYSQL="http://cdn.mysql.com//archives/mysql-5.5/mysql-5.5.41-linux2.6-x86_64.tar.gz"

这里操作的编译安装顺序:apache--mariadb--PHP

一、编译安装apache

1、解决依赖关系

httpd-2.4.10需要较新版本的apr和apr-util,因此需要事先对其进行升级。apr可以理解是中间的转换器,是的apache能运行在windows、linux、MAC等多平台上,升级方式有两种,一种是通过源代码编译安装,一种是直接升级rpm包。

(1) 编译安装apr

# tar xf apr-1.5.2.tar.bz2
# cd apr-1.5.2
# ./configure --prefix=/usr/local/apr
# make && make install

(2) 编译安装apr-util

# tar xf apr-util-1.5.4.tar.bz2
# cd apr-util-1.5.4
# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
# make && make install

(3) httpd-2.4.10编译过程也要依赖于pcre-devel软件包,需要事先安装。此软件包系统光盘自带,因此,找到并安装即可。

# yum install pcre-devel -y

2、编译安装httpd-2.4.10

# tar xf httpd-2.4.10.tar.bz2
# cd httpd-2.4.10
# ./configure --prefix=/usr/local/apache2 --sysconfdir=/etc/httpd --enable-so --enable-ssl --enable-cgi --enable-rewrite --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork --with-pcre --with-zlib --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/
# make && make install

3、启动httpd:

[[email protected] php-5.6.4]# echo "export PATH=/usr/local/apache2/bin:$PATH" > /etc/profile.d/httpd.sh 
[[email protected] php-5.6.4]# source /etc/profile.d/httpd.sh

二、安装mariadb-5.5.46

1、mysql的安装有三种方式:

rpm包安装

二进制的通用包安装

源码的编译安装

这里演示的是二进制的通用包安装,注意:二进制的通用包和源码包命名是有区别的,千万不要混淆,二进制包一般带有linux字样,如mariadb-5.5.46-linux-x86_64.tar.gz是二进制包,而mariadb-5.5.46.tar.gz则是源码包!

这里演示把数据库文件存放在一个目录中

这里假设挂载目录为/mydata,而后需要创建/mydata/data目录做为mysql数据的存放目录。

2、新建用户以安全方式运行进程:

# groupadd -r mysql
# useradd -g mysql -r -s /sbin/nologin
# mkdir -pv /mydata/data
# chown -R mysql:mysql /mydata/data

3、安装并初始化mysql-5.5.46

# tar xf mariadb-5.5.46-linux-x86_64.tar.gz -C /usr/local
# cd /usr/local/
# ln -sv mariadb-5.5.46-linux-x86_64  mysql
# cd mysql
# chown -R mysql:mysql  .
# scripts/mysql_install_db --user=mysql --datadir=/mydata/data

4、为mysql提供主配置文件:

# cd /usr/local/mysql
# cp support-files/my-large.cnf  /etc/my.cnf

修改配置:

thread_concurrency = 2 #并修改此文件中thread_concurrency的值为你的CPU个数乘以2
datadir = /mydata/data #需要添加如下行指定mysql数据文件的存放位置

5、为mysql提供sysv服务脚本

# cd /usr/local/mysql
# cp support-files/mysql.server  /etc/rc.d/init.d/mysqld
# chmod +x /etc/rc.d/init.d/mysqld

添加至服务列表:

# chkconfig --add mysqld
# chkconfig mysqld on

而后就可以启动服务测试使用了。

为了使用mysql的安装符合系统使用规范,并将其开发组件导出给系统使用,这里还需要进行如下步骤:

6、输出mysql的man手册至man命令的查找路径:

编辑/etc/man.config,添加如下行即可:

MANPATH  /usr/local/mysql/man

7、输出mysql的头文件至系统头文件路径/usr/include:

这可以通过简单的创建链接实现:

# ln -sv /usr/local/mysql/include  /usr/include/mysql

8、输出mysql的库文件给系统库查找路径:

# echo ‘/usr/local/mysql/lib‘ > /etc/ld.so.conf.d/mysql.conf

而后让系统重新载入系统库:

# ldconfig

9、修改PATH环境变量,让系统可以直接使用mysql的相关命令。

#vim /etc/profile.d/mysql.sh 
export PATH=/usr/local/mysql/bin:$PATH
source /etc/profile.d/mysql.sh

三、编译安装php-5.6.4

1、解决依赖关系:

如果想让编译的php支持mcrypt扩展,需要安装两个rpm包:

# rpm -ivh libmcrypt-2.5.8-9.el6.x86_64.rpm
# rpm -ivh libmcrypt-devel-2.5.8-9.el6.x86_64.rpm

2、编译安装php-5.6.4

# yum install -y libxml2-devel
# tar xf php-5.6.4.tar.xz
# cd php-5.6.4
#./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml  --enable-sockets --with-apxs2=/usr/local/apache2/bin/apxs --with-mcrypt  --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d   --enable-maintainer-zts
# make
# make intall

注意:如果httpd使用线程模型MPM,需要额外的--enable-maintainer-zts选项;

注意:如果要以fpm方式运行php,需要编译时移除--with-apxs选项,额外添加--enable-fpm选项;

为php提供配置文件(位于解压的源码包目录):

# cp php.ini-production /etc/php.ini

3、 编辑apache配置文件httpd.conf,以apache支持php

 # vim /etc/httpd/httpd.conf

添加如下二行

   AddType application/x-httpd-php  .php
   AddType application/x-httpd-php-source  .phps

定位至DirectoryIndex index.html

修改为:

    DirectoryIndex  index.php  index.html

而后重新启动httpd,或让其重新载入配置文件即可测试php是否已经可以正常使用。

4、这里安装phpMyAdmin进行测试验证:

1、解压phpMyAdmin-4.4.14.1-all-languages.zip

2、讲phpMyAdmin-4.4.14.1-all-languages移至web站点的根目录,并命名为pma目录:/usr/local/apache2/htdocs/pma

3、进入pma目录,启用默认到配置文件

cp libraries/config.default.php config.inc.php

4、编辑该配置文件,设置相应的数据库帐号和密码

5、测试打开该目录的web站点,只要能登录上数据库,说明,A+M+P已经结合工作成功。

测试正常,至此,LAMP已经编译成功,并能工作。

第二部分、编译安装LAMP(php以fpm的方式工作)

一、编译安装LAMP

1、编译安装:

和前面的步骤一样,只不过在编译安装PHP时,移除--with-apxs选项,额外添加--enable-fpm选项;

#./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml  --enable-sockets  --with-mcrypt  --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d   --enable-maintainer-zts --enable-fpm

2、为php提供配置文件:

# cp php.ini-production /etc/php.ini

3、配置php-fpm 

为php-fpm提供Sysv init脚本,并将其添加至服务列表:

# cp sapi/fpm/init.d.php-fpm  /etc/rc.d/init.d/php-fpm
# chmod +x /etc/rc.d/init.d/php-fpm
# chkconfig --add php-fpm
# chkconfig php-fpm on

4、为php-fpm提供配置文件:

# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf

5、编辑php-fpm的配置文件

# vim /usr/local/php/etc/php-fpm.conf

配置fpm的相关选项为你所需要的值,并启用pid文件(如下最后一行):

pid = /usr/local/php/var/run/php-fpm.pid

6、接下来就可以启动php-fpm了:

# service php-fpm start

使用如下命令来验正(如果此命令输出有中几个php-fpm进程就说明启动成功了):

[[email protected] fpm]# ss -tanl
State       Recv-Q Send-Q                            Local Address:Port                              Peer Address:Port 
LISTEN      0      50                                            *:3306                                         *:*     
LISTEN      0      32                                            *:21                                           *:*     
LISTEN      0      128                                          :::22                                          :::*     
LISTEN      0      128                                           *:22                                           *:*     
LISTEN      0      100                                         ::1:25                                          :::*     
LISTEN      0      100                                   127.0.0.1:25                                           *:*     
[[email protected] fpm]# service php-fpm start
Starting php-fpm  done
[[email protected] fpm]# ss -tanl
State       Recv-Q Send-Q                            Local Address:Port                              Peer Address:Port 
LISTEN      0      128                                   127.0.0.1:9000                                         *:*     
LISTEN      0      50                                            *:3306                                         *:*     
LISTEN      0      32                                            *:21                                           *:*     
LISTEN      0      128                                          :::22                                          :::*     
LISTEN      0      128                                           *:22                                           *:*     
LISTEN      0      100                                         ::1:25                                          :::*     
LISTEN      0      100                                   127.0.0.1:25                                           *:*     
[[email protected] fpm]#

默认情况下,fpm监听在127.0.0.1的9000端口,也可以使用如下命令验正其是否已经监听在相应的套接字。

二、配置httpd

1、启用httpd的相关模块

在Apache httpd 2.4以后已经专门有一个模块针对FastCGI的实现,此模块为mod_proxy_fcgi.so,它其实是作为mod_proxy.so模块的扩充,因此,这两个模块都要加载

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

同时把libphp5.so的模块注释

#LoadModule php5_module        modules/libphp5.so

2、配置中心主机支持使用fcgi(也可以配置虚拟主机,配置差不多,这里就不演示了)

在相应的虚拟主机中添加类似如下两行。

ProxyRequests Off  #关闭正向代理
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/usr/local/apache2/htdocs/$1  #把以.php结尾的文件请求发送到php-fpm进程,php-fpm至少需要知道运行的目录和URI,所以这里直接在fcgi://127.0.0.1:9000后指明了这两个参数,其它的参数的传递已经被mod_proxy_fcgi.so进行了封装,不需要手动指定。

3、编辑apache配置文件httpd.conf,让apache能识别php格式的页面,并支持php格式的主页

 
 # vim /etc/httpd/httpd.conf
   AddType application/x-httpd-php  .php
   AddType application/x-httpd-php-source  .phps

定位至DirectoryIndex index.html

修改为:

    DirectoryIndex  index.php  index.html

测试成功,已经能访问php页面

三、测试phpMyAdmin:

这里再次安装phpMyAdmin进行测试验证:

1、解压phpMyAdmin-4.4.14.1-all-languages.zip

2、将phpMyAdmin-4.4.14.1-all-languages移至web站点的根目录,并命名为pma目录:/usr/local/apache2/htdocs/pma

3、进入pma目录,启用默认到配置文件

cp libraries/config.default.php config.inc.php

4、编辑该配置文件,设置相应的数据库帐号和密码

$cfg[‘Servers‘][$i][‘user‘] = ‘nihao‘;
$cfg[‘Servers‘][$i][‘password‘] = ‘123456‘;

5、测试打开该目录的web站点,只要能登录上数据库,说明,A+M+P已经结合工作成功。

测试正常,至此,LAMP已经编译成功,并能工作。

时间: 2024-10-09 15:21:01

linux架构学习第二十七天 编译安装LAMP(php-fpm)的相关文章

linux架构学习第二十四天-DNS详解及bind搭建各种DNS测试

内容: 一.DNS 1.域名系统概述 2.域名的结构 3.域名服务器 4.域名解析过程 5.域名服务器的资源记录(resource record RR) 二.bind搭建DNS服务器 1.bind的安装 2.搭建DNS服务器 3.搭建主从DNS服务器 4.实现DNS子域 5.实现DNS视图view(智能DNS) 一.DNS 1.域名系统概述 域名系统DNS(Domain Name System)是因特网使用的命名系统,用来把便于人们使用的机器名字转换成为IP地址.域名系统其实就是名字系统.为什么

linux架构学习第二十六天之web服务搭建(apache)以及https的实现

内容: 1.httpd版本以及安装 2.httpd的配置文件详解 3.httpd的用户身份验证实现 4.httpd的虚拟主机的实现 5.https的通信过程以及实现演示 1.httpd版本以及安装 centos默认的httpd版本是2.2,而centos默认的httpd版本是2.4,这里演示的是centos6的httpd-2.2版本 安装的方式有两种,一个是rpm包安装,一个是编译安装,编译安装相关的配置文件需要手动设置,这里演示的是rpm包安装 httpd2.2和2.4的区别: 2.2的MPM

linux架构学习第二十六天之LAMP架构原理及搭建详解

内容: 1.何为LAMP 2.LAMP的架构以及通信过程 3.LAMP的搭建过程(rpm包) 4.基于LAMP搭建wordpress博客 一.何为LAMP LAMP(Linux-Apache-MySQL-PHP)网站架构是目前国际流行的Web框架,该框架包括:Linux操作系统,Apache网络服务器,MySQL数据库,Perl.PHP或者Python编程语言,所有组成产品均是开源软件,是国际上成熟的架构框架,很多流行的商业应用都是采取这个架构,LAMP具有通用.跨平台.高性能.低价格的优势,因

linux架构学习第二十九天之samba文件共享服务

内容: 1.samba的作用以及由来 2.samba的特性 3.samba的工作过程 4.samba的安装以及配置 5.samba的搭建测试 一.samba的作用以及由来 SAMBA历史溯源(摘自百度百科): 在早期网络世界当中,档案数据在不同主机之间的传输大多是使用 FTP 这个好用的服务器软件来进行传送.不过,使用FTP 传输档案却有个小小的问题,那就您无法直接修改主机上面的档案数据!也就是说您想要更改Linux 主机上的某个档案时,必需要由 Server 端将该档案下载到 Client端后

linux架构学习第二十五天HTTP协议详解

内容: 1.http协议概述 2.http协议特点 3.http的工作模式(过程) 4.http请求报文.响应报文格式.常见状态码解析 5.web资源概述(静态资源.动态资源) 1.http协议概述 http协议工作在TCP/IP模型的应用层,其定义web服务间通信的约定通信方式,HTTP基于tcp传送数据,默认是80端口(服务器端) 几个名词: http:hyper text transfer protocol,超文本传输协议,超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(

linux架构学习第二十八天之FTP协议以及vsftpd的使用

内容: 1.ftp协议 2.vsftpd的搭建及配置 一.FTP协议     1.FTP协议: FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为"文传协议".工作在第七层,而且是基于TCP协议传输数据. FTP工作原理与其它的应用协议有些不同.它是用两个端口进行通信的.一个端口用于命令交互.这个端口在用户连接之后一直保持:而另一个端口只是在数据传时打开(比如:上传文件,下载文件,获取服务端文件列表),在数据传输时有两种不同的模式,一是用户开

linux架构学习第二十八天之Mysql/MariaDB数据库入门

内容: 1.数据库简介以及mysql/mariadb背景介绍 2.数据库的一些名词 3.mysql的服务结构 4.mysql客户端的使用 5.数据类型 6.SQL语句介绍 7.mysql的事务机制 一.数据库简介以及mysql/mariadb背景介绍 数据可以存放在多种位置,如普通文件.专门的数据库中,而两者有什么区别,而为什么选择数据库存储?我们知道,假如数据存在普通文件中,当我们要查找其中的一个数据时,要把整个文件加载到内存中,再进行检索,这样速度慢不说,一旦文件较大,直接把内存撑爆了,而数

linux编译安装LAMP

Linux安装Apache+MySQL+PHP 安装部分依赖 安装apr(可选) # tar -xf apr-1.5.0.tar.bz2 # cd apr-1.5.0 #./configure --prefix=/usr/local/apr //指定其安装位置 # make && make install 安装apr-util # tar -xf apr-util-1.5.3.tar.bz2 # cd apr-util-1.5.3 # ./configure --prefix=/usr/l

linux下nginx,mysql,php(lnmp)编译安装

关闭SELINUX vi /etc/selinux/config #SELINUX=enforcing #注释掉 #SELINUXTYPE=targeted #注释掉 SELINUX=disabled #增加 :wq!  #保存退出 setenforce 0 #使配置立即生效 mysql 5.5.28安装 安装路径:/usr/local/mysql数据库路径:/usr/local/mysql/data/ mysql从5.5版本开始,不再使用./configure编译,而是使用cmake编译器,具