编译安装php

编译安装 php

tar -jxvf php-5.2.9.tar.bz2 -C /usr/local/src

cp php-5.2.8-fpm-0.5.10.diff.gz /usr/local/src

cd /usr/local/src

gzip -cd php-5.2.8-fpm-0.5.10.diff.gz | patch -d php-5.2.9/ -p1 打补丁,-d目录 -p第几层

./configure --prefix=/usr/local/php (--with-mysql=/usr/local/mysql/) --enable-fastcgi --enable-fpm

'./configure' '--prefix=/usr/local/php' '--with-mysql=/usr/local/mysql' '--with-zlib-dir' '--with-freetype-dir=/usr' '--with-jpeg-dir=/usr' '--with-png-dir=/usr' '--enable-gd-native-ttf' '--with-gd' '--enable-ftp' '--with-iconv' '--with-gettext' '--with-curl' '--enable-fastcgi' '--with-openssl'

make

make install

cp php.ini-dist /usr/local/php/php.ini

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

Unix user of processes

<value name="user">nobody</value>

Unix group of processes

<value name="group">nobody</value>

取消注释.标签user和group用于设置运行FastCGI进程的用户和用户组。需要注意的是,这里指定的用户和用户组要和Nginx配置文件中指定的用户和用户组一致。

其他选项的解释

标签listen_address是配置fastcgi进程监听的IP地址以及端口,默认是127.0.0.1:9000。

<value name="listen_address">127.0.0.1:9000</value>

标签display_errors用来设置是否显示PHP错误信息,默认是0,不显示错误信息,设置为1可以显示PHP错误信息。

<value name="display_errors">0</value>

标签max_children用于设置FastCGI的进程数。根据官方建议,小于2GB内存的服务器,可以只开启64个进程,4GB以上内存的服务器可以开启200个进程。

<value name="max_children">5</value>

标签request_terminate_timeout用于设置FastCGI执行脚本的时间。默认是0s,也就是无限执行下去,可以根据情况对其进行修改。

<value name="request_terminate_timeout">0s</value>

标签rlimit_files用于设置PHP-FPM对打开文件描述符的限制,默认值为1024。这个标签的值必须和Linux内核打开文件数关联起来,例如要将此值设置为65535,就必须在Linux命令行执行'ulimit -HSn 65536'。

<value name="rlimit_files">1024</value>

标签max_requests指明了每个children最多处理多少个请求后便会被关闭,默认的设置是500。

<value name="max_requests">500</value>

标签allowed_clients用于设置允许访问FastCGI进程解析器的IP地址。如果不在这里指定IP地址,Nginx转发过来的PHP解析请求将无法被接受。

<value name="allowed_clients">127.0.0.1</value>

管理FastCGI进程

在配置完php-fpm后,就可以启动FastCGI进程了。启动fastcgi进程有两种方式:

/usr/local/php/bin/php-cgi --fpm

或者

/usr/local/php/sbin/php-fpm start

建议采用第二种方式启动FastCGI进程。

/usr/local/php/sbin/php-fpm还有其他参数,具体为start|stop|quit|restart|reload|logrotate。

每个启动参数的含义如下:

? start,启动PHP的FastCGI进程。

? stop,强制终止PHP的FastCGI进程。

? quit,平滑终止PHP的FastCGI进程。

? restart, 重启PHP的FastCGI进程。

? reload, 重新加载PHP的php.ini。

? logrotate, 重新启用log文件。

reload是个很重要的参数,它可以在PHP的FastCGI进程不中断的情况下重新加载改动过的php.ini,因此通过php-fpm可以平滑变更FastCGI模式下的PHP设置。

在FastCGI进程启动后,其监听的IP地址和端口也随即启动,可以通过ps和netstat查看相关信息。

配置Nginx来支持PHP

Nginx的安装特别简单,前面已经对此进行了详细介绍,这里不再进行讲述。下面重点介绍Nginx如何通过php-fpm的FastCGI进程对PHP进行解析处理。

由于Nginx本身不会对PHP进行解析,因此要实现Nginx对PHP的支持,其实是将对PHP页面的请求交给fastCGI进程监听的IP地址及端口。如果把php-fpm当做动态应用服务器,那么Nginx其实就是一个反向代理服务器。Nginx通过反向代理功能实现对PHP的解析,这就是Nginx实现PHP动态解析的原理。

取消掉下端注释

location ~ .php$ {

root html;

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;

include fastcgi_params;

}

fastcgi_param指令指定放置PHP动态程序的主目录,也就是$fastcgi_script_name前面指定的路径

fastcgi_params文件是FastCGI进程的一个参数配置文件,在安装Nginx后,会默认生成一个这样的文件,这里通过include指令将FastCGI参数配置文件包含了进来。

接下来,启动nginx服务。

/usr/local/nginx/sbin/nginx

到此为止,Nginx+PHP已经配置完成。

测试php

mkdir /scripts

touch /scripts/wdostest.php

vim /scripts/wdostest.php

<? phpinfo(); ?>

firefox 127.0.0.1/wdostest.php

测试php连接mysql

touch /scripts/testmysql.php

vim /scripts/testmysql.php

<?

$link=mysql_connect('localhost','root');

if(!$link)

echo "sorry,faild";

else

echo "oh yes!!!!!";

mysql_close();

?>

firefox 127.0.0.1/testmysql.php

错误:(php和mysql分开)

Fatal error: Call to undefined function mysql_connect() in /scripts/testmysql.php on line 2

location ~ .*.(gif|jpg|jpeg|png|bmp|swf|js|css)$

{

root /scripts;

if (-f $request_filename) {

expires 1d;

break;

}

}

========================================

1.检查当前安装的PHP包

[plain] view plain copy

  1. yum list installed | grep php

如果有安装的PHP包,先删除他们

[html] view plain copy

  1. yum remove php.x86_64 php-cli.x86_64 php-common.x86_64 php-gd.x86_64 php-ldap.x86_64 php-mbstring.x86_64 php-mcrypt.x86_64 php-mysql.x86_64 php-pdo.x86_64

配置yum源

追加CentOS 6.5的epel及remi源。

?

<colgroup><col style="width: 70px;"><col style="width: 745px;"></colgroup>
|

1

2

|

rpm -Uvh http://ftp.iij.ad.jp/pub/linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm

rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

|

以下是CentOS 7.0的源。

?

<colgroup><col style="width: 70px;"><col style="width: 657px;"></colgroup>
|

1

2

|

yum install epel-release

rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

|

使用yum list命令查看可安装的包(Packege)。

?

<colgroup><col style="width: 70px;"><col style="width: 657px;"></colgroup>
|

1

|

yum list --enablerepo=remi --enablerepo=remi-php56 | grep php

|

安装PHP5.6.x

yum源配置好了,下一步就安装PHP5.6。

?

<colgroup><col style="width: 70px;"><col style="width: 1377px;"></colgroup>
|

1

|

yum install --enablerepo=remi --enablerepo=remi-php56 php php-opcache php-devel php-mbstring php-mcrypt php-mysqlnd php-phpunit-PHPUnit php-pecl-xdebug php-pecl-xhprof

|

PHP命令查看版本。

?

<colgroup><col style="width: 70px;"><col style="width: 657px;"></colgroup>
|

1

2

3

4

5

6

|

php --version

PHP 5.6.0 (cli) (built: Sep 3 2014 19:51:31)

Copyright (c) 1997-2014 The PHP Group

Zend Engine v2.6.0, Copyright (c) 1998-2014 Zend Technologies

with Zend OPcache v7.0.4-dev, Copyright (c) 1999-2014, by Zend Technologies

with Xdebug v2.2.5, Copyright (c) 2002-2014, by Derick Rethans

|

安装PHP-fpm

[html] view plain copy

  1. yum install --enablerepo=remi --enablerepo=remi-php56 php-fpm

在这里安装的版本是PHP5.6.13。

从PHP5.5开始PHP代码缓存从APC变成了Zend OPcache了。

其他源:

2.Centos 5.X

rpm -Uvh http://mirror.webtatic.com/yum/el5/latest.rpm

CentOs 6.x

rpm -Uvh http://mirror.webtatic.com/yum/el6/latest.rpm

CentOs 7.X

rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm

rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

如果想删除上面安装的包,重新安装

rpm -qa | grep webstatic

rpm -e 上面搜索到的包即可

3.运行yum install

yum install php55w.x86_64 php55w-cli.x86_64 php55w-common.x86_64 php55w-gd.x86_64 php55w-ldap.x86_64 php55w-mbstring.x86_64 php55w-mcrypt.x86_64 php55w-mysql.x86_64 php55w-pdo.x86_64

yum install php56w.x86_64 php56w-cli.x86_64 php56w-common.x86_64 php56w-gd.x86_64 php56w-ldap.x86_64 php56w-mbstring.x86_64 php56w-mcrypt.x86_64 php56w-mysql.x86_64 php56w-pdo.x86_64

注:如果想升级到5.6把上面的55w换成56w就可以了。

4.安装PHP FPM

yum install php55w-fpm

注:如果想升级到5.6把上面的55w换成56w就可以了。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,117评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,328评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,839评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,007评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,384评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,629评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,880评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,593评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,313评论 1 243
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,575评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,066评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,392评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,052评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,082评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,844评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,662评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,575评论 2 270

推荐阅读更多精彩内容