PHP编译安装

同志们,记得首先要安装Mysql啊,由于Mysql的安装步骤在之前的LAMP中已经讲过了,大家不会安装的一定要去看之前的文章哦

Mysql编译安装教程

1. 下载PHP源码包

cd /usr/local/src

wget http://au1.php.net/distributions/php-5.4.44.tar.bz2

2. 解压压缩包,创建php-fpm账号

tar jxvf php-5.4.44.tar.bz2

useradd -s /sbin/nologin php-fpm


这里我有个疑问,为什么之前LAMP安装的时候不用单独创建个用户?这个php-fpm用户时用来干嘛的呢?这个php和之前的有什么区别呢?

在看区别之前,大家还是先来了解一下什么是CGI,FCGI,FPM

CGI,FCGI,FPM的简介

在LNMP中,Nginx本身对脚本不做任何的处理,而是去调用一个PHP-FPM的进程,二者是相互独立的。所以咱们的账户是用来跑php-fpm服务的,php-fpm是一个常驻进程。

在LAMP中,PHP是Apache的一个模块,具有相同的生命周期,当Apache需要PHP解析的时候才会调用这个模块,解释后返回给服务器。


3. 拷贝php配置文件php.ini

cp /usr/local/src/php-5.4.44/php.ini-production /usr/local/php/etc/php.ini

4. 修改php-fpm的配置文件

初始状态下并没有自动生成php-fpm.conf这个文件,我去/usr/local/php/etc/目录下看了下,有个php-fpm.conf.default这个文件,其实都一样,我们拷贝一份或者改名成php-fpm.conf都可以

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

然后我们来修改配置文件

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

在[global]下加入如下配置(大概22行的位置)

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

error_log = /usr/local/php/var/log/php-fpm.log

在[www]下面加入如下配置(大概133行的位置)

listen = /tmp/php-fcgi.sock

user = php-fpm

group = php-fpm

pm = dynamic

pm.max_children = 50

pm.start_servers = 20

pm.min_spare_servers = 5

pm.max_spare_servers = 35

pm.max_requests = 500

rlimit_files = 1024


配置解释:

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

#pid设置,默认在安装目录中的var/run/php-fpm.pid,建议开启

error_log= /usr/local/php/var/log/php-fpm.log

#错误日志,默认在安装目录中的var/log/php-fpm.log

listen = /tmp/php-fcgi.sock

#这里牵涉到ngix和php-fpm的通信方式,之后会生成一个socket文件

在linux中,nginx服务器和php-fpm可以通过tcp socket和unix socket两种方式实现。

unix socket是一种终端,可以使同一台操作系统上的两个或多个进程进行数据通信。这种方式需要再nginx配置文件中填写php-fpm的pid文件位置,效率要比tcp socket高。Unix domain sockets 使用系统文件的地址来作为自己的身份。它可以被系统进程引用。所以两个进程可以同时打开一个Unix domain sockets来进行通信。不过这种通信方式是发生在系统内核里而不会在网络里传播。”

tcp socket的优点是可以跨服务器,当nginx和php-fpm不在同一台机器上时,只能使用这种方式。

user = php-fpm

group = php-fpm

配置运行php-fpm的用户和用户组,是我们之前创建的用户和用户组

pm = dynamic

#如何控制子进程,选项有static和dynamic。如果选择static,则由pm.max_children指定固定的子进程数。如果选择dynamic,则由下开参数决定:

pm.max_children #子进程最大数

pm.start_servers #启动时的进程数

pm.min_spare_servers #保证空闲进程数最小值,如果空闲进程小于此值,则创建新的子进程

pm.max_spare_servers #保证空闲进程数最大值,如果空闲进程大于此值,此进行清理

rlimit_files = 1024

#设置文件打开描述符的rlimit限制. 默认值: 系统定义值默认可打开句柄是1024,可使用 ulimit-n查看,ulimit -n 2048修改。《这个我也不知道是什么东东》

5. 拷贝php-fpm的启动脚本

cp /usr/local/src/php-5.4.44/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

更改权限755

chmod 755 /etc/init.d/php-fpm

6. 启动php-fpm

service php-fpm start

7. 测试php-fpm是否启动

ps aux | grep php-fpm

8. 配置php-fpm服务开机启动

chkconfig php-fpm on

查看是否配置开机启动成功

chkconfig php-fpm --list


问题集锦:
在./configure过程中可能会出现以下错误


错误1:

error: xml2-config not found. Please check your libxml2 installation.

解决:

yum install libxml2 -y

yum install libxml2-devel -y

问题2:

error: Cannot find OpenSSL's

解决:

yum install openssl openssl-devel -y

问题3:

error: Please reinstall the BZip2 distribution

解决:

yum install bzip2 bzip2-devel -y

问题4:

error: jpeglib.h not found

解决:

yum -y install libjpeg libjpeg-devel

问题5:

error: png.h not found

解决:

yum -y install libpng libpng-devel

问题6:

error: freetype-config not found.

解决:

yum install -y freetype-devel

问题7:

error: mcrypt.h not found. Please reinstall libmcrypt.

解决:

yum  install epel-release

yum install libmcrypt libmcrypt-devel

问题7:

Cannot retrieve metalink for repository: epel. Please verify its path and try again

原因:

yum-epel升级到0.5.2版本,更换了https链接,所以原来的镜像列表就过时了

解决:

yum –disablerepo=epel -y update ca-certificates

yum install libmcrypt libmcrypt-devel

问题8:

Error: File /var/cache/yum/i386/6/epel/metalink.xml does not exist

原因:

这个epel-7是不能用于centos6.x的,卸载了,再安装就行了:

如果是CentOS6.x执行下面就行了:

解决:

yum remove epel-release --disablerepo=epel

yum install epel-release

问题9

WARNING: unrecognized options: --enable-zend-multibyte

解决:

不用理会,版本问题

问题10

error: Please reinstall the libcurl distribution -easy.h should be in <curl-dir>/include/curl

解决:

yum install -y libcurl-devel


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

推荐阅读更多精彩内容