PHP编译安装

作者: 石乐志的LK | 来源:发表于2017-08-22 16:35 被阅读0次

    同志们,记得首先要安装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


    相关文章

      网友评论

        本文标题:PHP编译安装

        本文链接:https://www.haomeiwen.com/subject/bwhldxtx.html