• 002.php安装(lnmp)


    搭建lnmp环境时,需要先安装mysql,再安装php,而nginx安装顺序无所谓,nginx与php之间的联系需要手动配置

    一.php下载和配置“安装环境“

    [root@huh ~]# cd /usr/local/src/
    [root@huh src]# wget http://cn2.php.net/distributions/php-5.4.37.tar.bz2
    [root@huh src]# tar jxvf php-5.4.37.tar.bz2
    [root@huh src]# cd php-5.4.37
    [root@huh php-5.4.37]# ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-fpm --with-fpm-user=php-fpm --with-fpm-group=php-fpm --with-mysql=/usr/local/mysql --with-mysql-sock=/tmp/mysql.sock --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-ftp --enable-mbstring --enable-exif --enable-zend-multibyte --disable-ipv6 --with-pear --with-curl --with-openssl
    --enable-sockets

    注:1.--prefix 指定安装路径

      2.--with-config-file-path 设置php.ini的搜索路径

      3.--with-fpm-user fpm运行的用户,默认为nobody

      4.--with-fpm-group fpm运行的组,默认为nobody

      5.--with-mysql 指定mysql的安装路径

      6.--with-mysql-sock 指定mysql监听的mysql.sock程序在哪

      7.--with-libxml-dir 用于指定安装libxml2库文件的位置。

    期间,会有报错情况:

    #错误1:
    configure: error: jpeglib.h not found.
    #解决办法:
    [root@huh php-5.4.37]# yum install libjpeg-turbo-devel

    #错误2:
    configure: error: mcrypt.h not found. Please reinstall libmcrypt.
    需要我们先安装epel的源,然后去安装

    下载安装epel:
    [root@huh php-5.4.37]# wget www.lishiming.net/data/attachment/forum/epel-release-6-8_32.noarch.rpm
    [root@huh php-5.4.37]# rpm -ivh epel-release-6-8_32.noarch.rpm

    安装libmcrypt:
    [root@huh php-5.4.37]# yum install -y  libmcrypt-devel

    若还有其它错误,原因也是某些包没有安装,可以百度解决。

    二.创建用户php-fpm

    [root@huh php-5.4.37]# useradd -s /sbin/nologin php-fpm

    三.php编译和安装

    [root@huh php-5.4.37]# make
    [root@huh php-5.4.37]# echo $?
    0
    [root@huh php-5.4.37]# make install
    [root@huh php-5.4.37]# echo $?
    0

    四. 拷贝配置文件,启动脚本,php-fpm.conf配置文件

    拷贝配置文件:

    [root@huh php-5.4.37]# cp php.ini-production /usr/local/php/etc/php.ini

    拷贝启动脚本:

    [root@huh php-5.4.37]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
    [root@huh php-5.4.37]# chmod 755 /etc/init.d/php-fpm

     拷贝php-fpm.conf配置文件

    [root@huh php-5.4.37]# cd /usr/local/php/etc/
    [root@huh etc]# mv php-fpm.conf.default php-fpm.conf

    五.将php服务添加到系统服务,并设为开机自启,启动程序

    [root@huh etc]# chkconfig --add php-fpm
    [root@huh etc]# chkconfig php-fpm on
    [root@huh etc]# /usr/local/php/sbin/php-fpm -t
    [29-Jan-2016 04:30:26] NOTICE: configuration file /usr/local/php/etc/php-fpm.conf test is successful

    [root@huh etc]# /etc/init.d/php-fpm start
    Starting php-fpm  done
    [root@huh etc]# /etc/init.d/php-fpm reload
    Reload service php-fpm  done

    注:/usr/local/php/sbin/php-fpm -t 可以检查php配置有没有错误

    查看php-fpm进程好和监听端口号:

    [root@huh etc]# ps aux |grep php-fpm
    root     16343  0.0  0.2  29748  2976 ?        Ss   04:33   0:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)                                                                    
    php-fpm  16344  0.0  0.2  29748  2648 ?        S    04:33   0:00 php-fpm: pool www                                                                                                            
    php-fpm  16345  0.0  0.2  29748  2648 ?        S    04:33   0:00 php-fpm: pool www                                                                                                            
    root     16349  0.0  0.0   6048   780 pts/0    S+   04:34   0:00 grep --color php-fpm
    [root@huh etc]# 
    [root@huh etc]# netstat -lnp |grep 'php-fpm'
    tcp        0      0 127.0.0.1:9000              0.0.0.0:*                   LISTEN      16343/php-fpm

    六.php-fpm.conf配置文件

    /usr/local/php/etc/php-fpm.conf配置文件和/usr/local/php/etc/php.ini不太一样:

      1./usr/local/php/etc/php-fpm.conf是管理php-fpm服务的相关配置

      2./usr/local/php/etc/php.ini是php的全局配置文件

    我们更改php-fpm.conf,更改后的php-fpm.conf配置文件:

    [global]
    #pid设置,默认在安装目录中的var/run/php-fpm.pid,建议开启
    pid = /usr/local/php/var/run/php-fpm.pid
    
    #错误日志,默认在安装目录中的var/log/php-fpm.log
    error_log = /usr/local/php/var/log/php-fpm.log
    
    #www是一个pool的一个名字
    [www]
    #fpm监听端口,即nginx中php处理的地址,一般默认值即可。可用格式为: 'ip:port', 'port', '/path/to/unix/socket'. 每个进程池都需要设置.
    listen = /tmp/www.sock
    
    #启动进程的用户和组
    user = php-fpm
    group = php-fpm
    
    #设置让nobody也能访问www.sock
    listen.owner = nobody
    listen.group = nobody
    
    pm = dynamic
    #子进程最大数
    pm.max_children = 50
    #启动时的进程数
    pm.start_servers = 20
    #保证空闲进程数最小值,如果空闲进程小于此值,则创建新的子进程
    pm.min_spare_servers = 5
    #保证空闲进程数最大值,如果空闲进程大于此值,此进行清理
    pm.max_spare_servers = 35
    #设置每个子进程重生之前服务的请求数. 对于可能存在内存泄漏的第三方模块来说是非常有用的. 如果设置为 '0' 则一直接受请求. 等同于 PHP_FCGI_MAX_REQUESTS 环境变量. 默认值: 0.
    pm.max_requests = 500
    #设置文件打开描述符的rlimit限制. 默认值: 系统定义值默认可打开句柄是1024,可使用 ulimit -n查看,ulimit -n 2048修改。
    rlimit_files = 1024

    ;

  • 相关阅读:
    从Github上将laravel项目拉到新开发环境
    Nginx-Primary script unknown的报错的解决方法
    CentOS 7 安装PHP7+Nginx+Mysql5.7开发环境
    程序员面试经常会被问到的12个问题
    IOC(控制反转)的理解
    用冒泡排序的方法将数组从小到大排列
    常用设计模式详解
    PHP常见面试题总结
    能够遍历一个文件夹下的所有文件和子文件夹的函数
    线特征---LineMatching原理(四)
  • 原文地址:https://www.cnblogs.com/ruo-yu/p/5166638.html
Copyright © 2020-2023  润新知