1.前言
上一篇讲述了如何编译安装MySQL,虽然可以通过yum install 或者rpm来安装,但是yum install和rpm安装有一个特点,就是有些参数是别人根据大众需求定制的,如果需要进行自己的特定参数指定,这个是比较难做到的,因此有一定Linux基础的人都是编译安装或者根据公司的具体环境制作适合环境的安装包。上一篇的例子中讲述了如何编译安装和如何配置多实例,并在最后讲述了如何配置主从复制配置。
以前开源开发经常将LAMP,就是Linux+Apache+MySQL+PHP,对于一些起步型的公司来说LAMP可以满足他们的所有幻想:既可以响应一定规模的用户,对硬件的要求也很小。现在随着Nginx的兴起,LAMP变成了LNMP,即Linux+Nginx+MySQL+PHP,因此本篇将讲述如何编译安装PHP并且使用php-fpm来让Nginx支持PHP。
2.准备
2.1下载PHP5.6.30源码
考虑到很多开源PHP还在用PHP5版本,因此这里以PHP5.6.3版本的编译安装为例:
下载:

wget http://cn2.php.net/distributions/php-5.6.30.tar.gz

2.2WordPress中文版
WordPress是一个非常著名的个人博客系统,这里用它来验证我们的php-fpm配置正确与否。
下载:

wget https://cn.wordpress.org/wordpress-4.7.4-zh_CN.zip

2.3安装依赖库

  1.  
    yum install gcc automake autoconf libtool make –y
  2.  
    yum install gcc gcc-c++ glibc –y
  3.  
    yum install libmcrypt-devel mhash-devel libxslt-devel –y
  4.  
    yum install libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel –y
  5.  
    yum install zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel –y
  6.  
    yum install ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel -y
  7.  
    yum install krb5 krb5-devel libidn libidn-devel openssl openssl-devel -y

注:上面有些依赖库在上一篇中已经安装了,为省事我在这里又一股脑列上了,在实际安装过程中如果本地已经安装了就不会再次安装和下载了。
3.编译和设置
3.1编译文件
假定下载的php-5.6.30.tar.gz位于/root目录下,首先解压文件:

tar zxvf /root/php-5.6.30.tar.gz

然后执行configure:

  1.  
    cd /root/php-5.6.30
  2.  
    ./configure --prefix=/usr/local/php-5.6.30 --enable-fpm --with-mcrypt --enable-mbstring --disable-pdo --with-curl --disable-debug --disable-rpath --enable-inline-optimization --with-bz2 --with-zlib --enable-sockets --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex --with-mhash --enable-zip --with-pcre-regex --with-mysql --with-mysqli --with-gd --with-jpeg-dir -with-gettext --enable-xml --enable-freetype

如果依赖库都安装了就不会报错,如果提示缺少依赖库就用yum install 来安装。在上面的参数中:
--prefix=/usr/local/php-5.6.30:表示将来程序安装在/usr/local/php目录;
--enable-fpm:表示启用php-fpm模块,不启用这个nginx就没办法将php页面请求转发个nginx处理了。
接着执行:
make
make install
因为源代码有点多,编译需要一点时间,请耐性等待。成功之后在/usr/local下会新建php文件夹,其文件目录结构如下:

  1.  
    [root@localhost ~]# ls -l /usr/local/php-5.6.30
  2.  
    total 0
  3.  
    drwxr-xr-x 2 root root 147 Jun 7 23:38 bin
  4.  
    drwxr-xr-x 2 root root 71 Jun 12 22:13 etc
  5.  
    drwxr-xr-x 3 root root 17 Jun 7 23:12 include
  6.  
    drwxr-xr-x 3 root root 85 Jun 12 22:12 lib
  7.  
    drwxr-xr-x 4 root root 28 Jun 7 23:12 php
  8.  
    drwxr-xr-x 2 root root 21 Jun 7 23:12 sbin
  9.  
    drwxr-xr-x 4 root root 28 Jun 7 23:12 var

3.2配置
3.2.1php.ini配置
首先将刚才解压的文件夹中将php.ini-development拷贝到/usr/local/php/lib目录并命名为php.ini:

cp  /root/php-5.6.30/php.ini-development /usr/local/php-5.6.30/lib/php.ini

注意:在开发服务器将php.ini-development改为php.ini,如果是生产服务器建议将php.ini-production改为php.ini, php.ini-production与php.ini-development相比是关闭了一些调试输出,这在生产环境中可以减少日志文件的体积和提高性能,在开发环境中建议还是打开以便于调试。在接下来的讲解中是基于开发环境配置的。
对php.ini做如下更改:
error_reporting = E_ALL & ~E_NOTICE ;输出调试信息和通知
error_log = /usr/local/php-5.6.30/var/log/error-log.log ;错误日志存放位置
date.timezone = "Asia/Shanghai"; 这句原本是” ;date.timezone =”,需要去掉其注释并设置为中国时区
3.2.2php-fpm.conf配置
首先将/usr/local/php-5.6.30/etc/php-fpm.conf.default拷贝一份并命名为php-fpm.conf:

  1.  
    cd /usr/local/php-5.6.30
  2.  
    cp etc/php-fpm.conf.default etc/php-fpm.conf

接着对php-fpm.conf做如下更改:
;pid = run/php-fpm.pid这一句取消注释,并改为:pid = /usr/local/php-5.6.30/var/run/php-fpm.pid;
;error_log = log/php-fpm.log这一句取消注释,并改为:error_log = /usr/local/php-5.6.30/var/log/error-log.log
user = nobody改为:user = nginx
group = nobody改为:group = nginx
;catch_workers_output = yes这一句取消注释,改为:catch_workers_output = yes
php-fpm可执行文件在/usr/local/php-5.6.30/sbin目录下,可以通过/usr/local/php-5.6.30/sbin来执行监听,默认是监听9000端口。
4.安装WordPress

【转】编译安装PHP并配置PHP-FPM的更多相关文章

  1. 【转】linux 编译安装nginx,配置自启动脚本

    linux 编译安装nginx,配置自启动脚本 本文章来给各位同学介绍一篇关于linux 编译安装nginx,配置自启动脚本教程,希望有需要了解的朋友可一起来学习学习哦. 在公司的suse服务器装ng ...

  2. linux 编译安装nginx,配置自启动脚本

    本文章来给各位同学介绍一篇关于linux 编译安装nginx,配置自启动脚本教程,希望有需要了解的朋友可一起来学习学习哦. 在公司的suse服务器装nginx,记录下安装过程: 参照这篇文章:Linu ...

  3. php编译安装configure完全配置够日常所用功能

    php编译安装configure完全配置够日常所用功能 ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/p ...

  4. 年终福利,PHP7+Apache2.4+MySQL5.6 源码编译安装,环境配置,搭建你自己的LAMP环境

    PHP7 都出来了,你还在玩PHP5吗? MySQL5.6 早都出来了,你还在玩MySql5.2吗? Apache2.4 早都出来了,你还在玩Apache2.2吗? 笔者不才,愿意亲自搭建环境,供搭建 ...

  5. 编译安装LAMP之php(fpm模块)

    一,准备工作实验平台为CentOS6.6,先下载所需的安装包,我使用的是php-5.4.26.tar.gz,下载地址 http://mirrors.sohu.com/php/ 编译安装的目录:/usr ...

  6. LAMP(七)之编译安装php(模块化和fpm两种方式)

    安装前说明: 安装环境: CentOS6 安装应用程序:httpd2.4 + mariadb + php 安装次序: 先编译安装 httpd2.4和mariadb,最后安装php 编译安装 httpd ...

  7. CentOS7编译安装php7.1配置教程详解

    这篇文章主要介绍CentOS7编译安装php7.1的过程和配置详解,亲测 ,需要的朋友可以参考. 1.首先安装依赖包: yum install libxml2 libxml2-devel openss ...

  8. hadoop-2.2.0 的编译安装及HA配置

    一 准备工作 准备工作中要求有 1.centOs 6.4,添加hadoop用户,配置集群内的/etc/hosts文件. 2.安装hadoop用户的ssh,并打通集群内所有机器,(ha执行fencing ...

  9. CentOS编译安装emacs并配置

    Liunxs中CentOS系列一向以稳定为目标,然而也会存在版本太旧的问题,emacs就是其中的一个,目前emacs都发行到25.2了,而CentOS上的emacs版本却还是23.1.所以需要下载源代 ...

随机推荐

  1. centos系统服务管理

    系统服务管理工具: chkconfig(所有linux发行版都有),用法很简单,如下: usage:   chkconfig --list [name]          chkconfig --ad ...

  2. Jsonp方式和httpclient方式有什么区别?

    jsonp基于js,解决跨域问题,本质发起ajax情求但是Jsonp只支持get请求. 它不安全,它先解析js,然后发起ajax请求,然后获取到返回值,通过浏览器返回,最后解析. JQuery和Spr ...

  3. 多线程下,Python Sqlite3报[SQLite objects created in a thread can only be used...]问题

    明明加了锁保护,还是出了下面的问题 ProgrammingError: SQLite objects created in a thread can only be used in that same ...

  4. 转:Python安全 - 从SSRF到命令执行惨案

    转:https://www.leavesongs.com/PENETRATION/getshell-via-ssrf-and-redis.html Python安全 - 从SSRF到命令执行惨案 PH ...

  5. spring.net 在demo中的分析

    1.认识spring.net Spring.NET是一个应用程序框架,其目的是协助开发人员创建企业级的.NET应用程序.它提供了很多方面的功能,比如依赖注入.面向方面编程(AOP).数据访问抽象及AS ...

  6. python正则表达式中的分组 group

    维基百科:http://wiki.ubuntu.org.cn/Python%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E6%93%8D%E4%BD%9C ...

  7. PMP CMM

    CMM和PMP是两个不同的概念域,是用来解决不同问题的.我们所说的CMM,准确的说应该是叫做能力成熟度模型,北京猴子说的软件能力成熟度模型实际上应该称为SW-CMM,是CMM的一个子集.PMP可以看做 ...

  8. NOIP2018训练题集

    1. CZday3C 给定有m个数的集合,从其中任选一个子集满足全部&后不为零,问方案数. 考虑对二进制位容斥,问题转化为求包含某个二进制位集合的数的个数,通过类似FMT的DP求解. #inc ...

  9. 【分类讨论】【计算几何】【凸包】hihocoder 1582 ACM-ICPC国际大学生程序设计竞赛北京赛区(2017)网络赛 E. Territorial Dispute

    题意:平面上n个点,问你是否存在一种黑白染色方案,使得对于该方案,无法使用一条直线使得黑色点划分在直线一侧,白色点划分在另一侧.如果存在,输出一种方案. 如果n<=2,显然不存在. 如果所有点共 ...

  10. 【树链剖分】【dfs序】【LCA】【分类讨论】Codeforces Round #425 (Div. 2) D. Misha, Grisha and Underground

    一棵树,q次询问,每次给你三个点a b c,让你把它们选做s f t,问你把s到f +1后,询问f到t的和,然后可能的最大值是多少. 最无脑的想法是链剖线段树……但是会TLE. LCT一样无脑,但是少 ...