一、apache环境下php的安装步骤如下:注意:编译安装php前,应先安装好apache,因为编译php时要用到apache的路径

1. 在http://www.php.net/downloads.php下载php源代码,并存至/usr/local/src下

2. 切换至/usr/local/src下,解压php源码,并切换至解压后的php目录下

3.  ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/httpd/bin/apxs --enable-mysqlnd

【配置时,可能会报错configure: error: xml2-config not found. Please check your libxml2 installation.--------解决方法: 需安装libxml2作为依赖(centos和ubuntu上安装libxml2的方式不太一样)】

4. make

5. make install

6. 配置http.conf,主要是整合php作为apache的模块出现(有时会自动帮我们配置好),在http.conf里加一句 AddType application/x-httpd-php .php

7. 复制php源码包中的 php.ini-development到指定目录(此处为:/usr/local/php/lib/)下的php.ini

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

8. 在/usr/local/httpd/htdocs下新建test.php文件,并输入 <?php phpinfo(); ?>

9. 重启apache,访问test.php文件,显示正常

至此,apache环境下的php已成功安装!

------------------------ 单独编译php的扩展----------------------

注意:考虑到要连接数据库,通过phpinfo查看mysqli扩展,发现mysqli没有打开,于是需单独编译下mysqli;步骤如下:独立编译php的扩展的通用办法

a. 解压php的源码安装包,切换至已解压目录,然后进入 ext/mysqli/ 目录

b. 执行: /usr/local/php/bin/phpize       //会在该目录下生成configure等文件 [如果提示没有autoconf、m4错误,用 apt-get install 就行了]

c. 然后执行: ./configure --with-php-config=/usr/local/php/bin/php-config --with-mysqli

d. 最后执行: make && make install

此时会在扩展目录中生成mysqli.so,

如图所示:

使用ls查看该目录可以看到会有一个.so结尾的文件mysqli.so,相当于windows下的.dll文件,如图:

还有一点很重要不要忘记了,就是把生成的mysqli.so文件加入到php.ini的配置中。 
使用vi /usr/local/lib/php.ini编辑php.ini, 
 
在最后面加入:extension = /usr/local/lib/php/extensions/no-debug-non-zts-20100525/mysqli.so如图: 

最后重启下apache服务就OK了!

在程序中使用phpinfo();就能看到有mysqli这项扩展的内容了:

编译安装pdo.so、pdo_mysql.so等都一样(但是为了防止其他扩展编译出错所影响,最好重新解压php源码安装包,在新的安装包里在编译所需的扩展,我就遇见了此问题),进入ext/下对应的目录,执行上面操作,只需要换成对应的 --with-pdo、--with-pdo-mysql就好

-----------------------------------------------------------------------------------------------------

知识总结:

php5.3版本开始,使用的mysql扩展是集成在php源码中发布。

1.版权考虑:原来与mysql进行通信的库(mysql Client Library),是由mysqlAB公司(现在是甲骨文)所写,那么就是在该公司的协议下发布(版权)。那么有些功能就会被禁用掉。

mysqlnd这个驱动,是由zend 公司开发的MySQL数据库驱动,采用PHP开源协议(即 PHP license)避免了任何可能存在的版权问题。而旧的libmysql是有Mysql AB公司(现在的Oracle Corporation)开发,依照mysql license。

还记得我们在编译php的时候,如果需要php链接mysql数据库,那么必须编译的时候指定一个项:

--with-mysql=/usr/local/mysql 这里是指定mysql客户端库的位置。

后面就是mysql的安装目录。因为与mysql进行通信,需要按照mysql的协议来进行通信,而mysql官方是发布了客户端((libmysqlclient库),所以这里就是指定去mysql的安装目录下搜索客户端库的位置。

这样的确麻烦。

现在写入php源码一部分,会解决过去的版本发布的问题。相当于安装了php源码,就安装了与mysql进行通信的库。

是这样编译了

 ./configure --with-mysql=mysqlnd \ --with-mysqli=mysqlnd \ --with-pdo-mysql=mysqlnd \

 上面的结果是,mysql、mysqli、pdo这三个操作mysql的扩展,都配置使用mysqlnd库来操作mysql

--with-mysql项指定使用mysqlnd客户端库了,根本不需要依赖于mysql的安装路径了。因为是使用php源码中自己的的库。

这个库是一个c语言编写的,以扩展形式加入php引擎。

这个库就在php的源码包中,自己编译安装,就生成在自己在php中,根本不需要依赖于神马mysql提供的客户端了

所以顾名思义,叫做Native driver,本地驱动(操作mysql的驱动)。

2.内存使用效率提高。以前是复制数据两份,现在只需一份。

新版本由于扩展集成在php源码中,是php一部分。mysql_fetch_assoc()是复制一份数据到php中了。以前就是复制一份到扩展中,同时复制一份到php中。所以是两份。

 总结一句话就是:操作mysql有三个可供选择的扩展,mysql、mysqli、pdo。而mysqli and PDO MYSQL作为推荐的扩展。而不是mysql原来的扩展

-----------------------------------------------------------------------------------------------------------------------------------

二、nginx环境下的php的安装步骤如下:

1、查看当前系统版本

# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)

2、yum安装依赖的程序包

yum install zlib libxml libjpeg freetype libpng gd curl libiconv zlib-devel libxml2-devel libjpeg-devel freetype-devel libpng-devel gd-devel curl-devel openssl openssl-devel libxslt-devel

3、安装libiconv程序包

wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.15.tar.gz
tar zxf libiconv-1.15.tar.gz
cd libiconv-1.15
./configure --prefix=/usr/local/libiconv
make
make install

4、配置编译安装PHP-5.6.30.tar.gz

wget http://tw1.php.NET/get/php-5.6.30.tar.gz/from/this/mirror

mv mirror php-5.6.30.tar.gz

tar xzvf php-5.6.30.tar.gz

./configure \
 --prefix=/usr/local/php \
 --enable-fpm \
 --with-mysql=mysqlnd \

 --with-pdo-mysql=mysqlnd \

 --with-mysqli=mysqlnd \

--with-openssl \
 --with-zlib \
 --with-gd \
 --with-jpeg-dir \
 --with-png-dir \
 --with-iconv=/usr/local/libiconv \
 --enable-short-tags \
 --enable-sockets \
 --enable-zend-multibyte \
 --enable-soap \
 --enable-mbstring \
 --enable-static \
 --with-curl \
 --enable-ftp \
 --with-libxml-dir

make
make install

注意: 以上若php版本是5.3以下的话,mysql需使用 --with-mysql=/usr/local/mysql 和--with-pdo-mysql=/usr/local/mysql 

5.配置相关

php.ini配置

首先我们需要配置的是php.ini这个文件

安装目录有2个文件:php.ini-development和php.ini-production

php.ini-production 线上版本使用

php.ini-development 开发版本使用

我们选择development进行配置

# cp php.ini-development /usr/local/php/lib/php.ini

php-fpm配置

拷贝php-fpm配置文件

#cp -R ./sapi/fpm/php-fpm.conf /usr/local/php/etc/php-fpm.conf

将php给我们准备好的init.d.php-fpm。

#cp ./sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

将php-fpm服务添加到chkconfig列表

#chkconfig --add php-fpm

设置开机自启动

#chkconfig php-fpm on

以后重启和停止php的方式为

#service php-fpm start
#service php-fpm stop
#service php-fpm restart
#service php-fpm reload

配置Nginx支持PHP

进入nginx主目录,/usr/local/nginx;

#cd /usr/local/nginx

进入配置目录

#cd conf

Nginx支持PHP需要修改nginx.conf

#vim nginx.conf

代开下面代码,让Nginx支持PHP,在server代码段里

修改完,这段代码变为,红色部分为我们主机目录为/usr/www,需要修改fastcgi_param SCRIPT_FILENAME指向对应目录即可:

然后在server代码段里设置主目录设置为/usr/www。

注释掉root那行,新增一行:root /usr/www;

保存退出。

重启Nginx服务

# /usr/local/nginx/sbin/nginx -s reload

重启成功!下面我们在/usr/www目录下添加一个新文件。

#vim /usr/www/phpinfo.php

插入以下内容

<?php
phpinfo();
?>

在浏览器中打开http://远程ip/phpinfo.php

到此步,nginx与php配置完成,接下来测试数据库是否连接成功:

在/usr/www目录下添加一个新文件db_test.php,然后输入下面代码:

可能会出现

php-mysql

mysql_connet等系列函数用不了,这种warning信息,证明mysql驱动是装上了的。因为他毕竟不是报的undefined function mysql_connet…,这种情况是因为php找不到mysql.sock的连接。启动mariadb(mysql)进入,输入status,记住unix socket的路径

mysql.sock

然后把他配置到php.ini里面:

vim /usr/local/lib/php.ini找到mysql.default_socket,加上刚才的sock文件位置

mysql.default_socket

然后看看phpinfo页面,mysql扩展中mysql.default_socket就有值了。最一开始是没有的,配置了之后才有的,当然如果是yum安装的话,不用去配置,php也是找的到这个mysql.sock的。当然mysqli和pdo-mysql都要这样配一下

phpinfo mysql

然后,就能正常输出了

mysql连接成功

因为不是yum安装的,nginx还没有成为系统服务,在/etc/rd.d/init.d下新建一个nginxd的脚本,方便开机自启以及使用service nginxd start/stop/restart来管理nginx

service nginxd start

ok,终于完成了lnmp环境的搭建!nginx也支持php了。nginx和php都是源码方式安装的,mariadb是用yum源安装的。好好体会一下nginx的魅力以及最新版php带来的新功能,准备用这个服务器做个备份的,有想过主从服务器,分布式部署,负载均衡,可惜这两台云服务器不在一个内网。

--------------------------------------------------------------------------------------------------------------------------------------

注意: 

rpm -qa|grep 包名 (centos下)和 dpkg -l|grep 包名   (ubuntu下) 两者功能一样

参见:

CentOS 7源码编译安装最新版php5.6和nginx1.7.9及mysql(搭建lnmp环境)

http://blog.feehi.com/linux/222.html

Linux下编译、安装php的更多相关文章

  1. LINUX下编译安装PHP各种报错大集合

    本文为大家整理汇总了一些linux下编译安装php各种报错大集合 ,感兴趣的同学参考下. nginx1.6.2-mysql5.5.32二进制,php安装报错解决: 123456 [root@clien ...

  2. linux下编译安装vim7.4并安装clang_complete插件

    linux下编译安装vim7.4并安装clang_complete插件 因为debian里软件仓库中下载安装的vim是不支持python写的插件的(可以打开vim,在命令模式先输入:py测试一下),导 ...

  3. linux下编译安装curl

    linux下编译安装curl 1.下载curl git clone https://github.com/curl/curl.git 2.在curl目录下生成configure文件 ./buldcon ...

  4. linux下编译安装boost库

    linux下编译安装boost库 linux下编译安装boost库 1.下载并解压boost 1.58 源代码 下载 解压 2.运行bootstrap.sh 3.使用b2进行构建 构建成功的提示 4. ...

  5. Linux下编译安装Apache Http Server

    Linux下编译安装Apache Http Server [TOC] 1.下载httpd-2.4.12.tar.bz2 wget http://mirror.bit.edu.cn/apache/htt ...

  6. Linux下编译安装qemu和libvirt

    目录 [hide] 1 安装qemu 1.1 qemu介绍 1.2 下载源文件 1.3 编译安装 2 安装libvirt 2.1 libvirt介绍 2.2 下载libvirt 2.3 编译安装 3  ...

  7. linux下编译安装nginx

    1.首先下载稳定版nginx1.10.2 使用wget命令下载 wget http://nginx.org/download/nginx-1.10.2.tar.gz 2.然后解压 tar -zxvf  ...

  8. Linux下编译安装qemu和libvirt【转】

    转自:http://www.cnblogs.com/findumars/p/5679742.html 目录 [hide] 1 安装qemu 1.1 qemu介绍 1.2 下载源文件 1.3 编译安装 ...

  9. (转)Linux下编译安装log4cxx

    Linux下编译安装log4cxx 一个项目的服务器端在Linux平台下,用到了开源日志库log4cxx,这个库是apache项目的一个子库.功能很不错.下面记录下它的编译和安装过程. log4cxx ...

  10. linux安装软件的几种方法----linux下编译安装软件的一般步骤

    linux安装软件的几种方法: 一.rpm包安装方式步骤: 1.找到相应的软件包,比如soft.version.rpm,下载到本机某个目录: 2.打开一个终端,su -成root用户: 3.cd so ...

随机推荐

  1. python 函数返回多个值

    参考文献:http://blog.csdn.net/facevoid/article/details/5369146

  2. lx 与cd 的计算方法

    Candela to lux calculation with distance in meters The illuminance Ev in lux (lx) is equal to the lu ...

  3. LOJ6039. 「雅礼集训 2017 Day5」珠宝【决策单调性优化DP】【分治】【思维好题】

    LINK 懒得搬题面 简要题意:n个物品,每个物品有一个价格和一个吸引力,问你对于\(i \in [1,k]\),花费i的价格能得到的最大吸引力 其中价格的范围很小,在\([1,300]\)范围内 思 ...

  4. elixir grpc 试用

    备注:  elixir  grpc 封装测试   1.  安装 a. 安装 protoc 参考相关文档,比较简单 b. 安装elixir grpc 插件 protoc-gen-elixir 同时配置环 ...

  5. 使用vigil 监控微服务系统包含可视化界面

    1. 安装 a. rust cargo cargo install vigil-server b. docker docker pull valeriansaliou/vigil:v1.3.0 2. ...

  6. oracle 内存分配和调优 总结

    一直都想总结一下oracle内存调整方面的知识,最近正好优化一个数据库内存参数,查找一些资料并且google很多下.现在记录下来,做下备份.           一.概述:              ...

  7. hdu 1724 Ellipse——辛普森积分

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1724 #include<cstdio> #include<cstring> #in ...

  8. dwr的A request has been denied as a potential CSRF attack.错误

    虽然DWR是个很早就出现的Ajax框架,但一直都没去使用过,今天正好没事就看了一下并参照文档照做了个demo, 在其中碰到一个问题: 后台打印出错误信息:“严重: A request has been ...

  9. ubuntu15.10下code::blocks设置运行窗口为gnome命令行

    code::blocks编译运行C++程序(F9)默认出现的运行串口在有鼠标的情况下进行粘贴还是很方便的,只要按下鼠标滑轮,位与剪切板中的数据就能粘贴到运行串口中. 但是对于用笔记本而且没有鼠标地童鞋 ...

  10. java入门很简单之各种循环

    1.if结构的语法: <1> 简单的if :if (条件){ //代码块                                                           ...