Centos7源碼編譯安裝PHP7.2(生產環境)

  1. 安裝PHP依賴包,不然在編譯的過程當中可能會出現各類報錯php

    # Centos 安裝epel-release源並將系統包更新到最新版本
    $ yum install epel-release-y
    $ yum update
    
    # 安裝PHP依賴組件(包括Nginx依賴)
    $ yum -y install wget vim pcre pcre-devel openssl openssl-devel libicu-devel gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel ncurses ncurses-devel curl curl-devel krb5-devel libidn libidn-devel openldap openldap-devel nss_ldap jemalloc-devel cmake boost-devel bison automake libevent libevent-devel gd gd-devel libtool* libmcrypt libmcrypt-devel mcrypt mhash libxslt libxslt-devel readline readline-devel gmp gmp-devel libcurl libcurl-devel openjpeg-devel
  2. 建立用戶和組,下載PHP安裝包並解壓html

    $ cd /tmp
    $ groupadd www
    $ useradd -g www www
    $ wget http://am1.php.net/distributions/php-7.2.1.tar.gz
    $ tar xvf php-7.2.1.tar.gz
    $ cd php-7.2.1
  3. 設置變量並開始源碼編譯mysql

    $ cp -frp /usr/lib64/libldap* /usr/lib/
    $ ./configure --prefix=/usr/local/php \
    --with-config-file-path=/usr/local/php/etc \
    --enable-fpm \
    --with-fpm-user=www \
    --with-fpm-group=www \
    --enable-mysqlnd \
    --with-mysqli=mysqlnd \
    --with-pdo-mysql=mysqlnd \
    --enable-mysqlnd-compression-support \
    --with-iconv-dir \
    --with-freetype-dir \
    --with-jpeg-dir \
    --with-png-dir \
    --with-zlib \
    --with-libxml-dir \
    --enable-xml \
    --disable-rpath \
    --enable-bcmath \
    --enable-shmop \
    --enable-sysvsem \
    --enable-inline-optimization \
    --with-curl \
    --enable-mbregex \
    --enable-mbstring \
    --enable-intl \
    --with-mcrypt \
    --with-libmbfl \
    --enable-ftp \
    --with-gd \
    --enable-gd-native-ttf \
    --with-openssl \
    --with-mhash \
    --enable-pcntl \
    --enable-sockets \
    --with-xmlrpc \
    --enable-zip \
    --enable-soap \
    --with-gettext \
    --disable-fileinfo \
    --enable-opcache \
    --with-pear \
    --enable-maintainer-zts \
    --with-ldap=shared \
    --without-gdbm \

    注:若是報錯請根據報錯狀況安裝依賴包c++

  4. 編譯安裝sql

    # make 加上 j 參數 指定並行的job數量 提升編譯速度
    $ make -j 4 && make install
  5. 完成安裝後配置php.ini文件:shell

    $ cp php.ini-development /usr/local/php/etc/php.ini
    $ cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
    $ cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
  6. 修改參數vim

    1. 修改php.ini緩存

      1. $ vim /usr/local/php/etc/php.ini
        
        expose_php = Off
        short_open_tag = ON
        max_execution_time = 300
        max_input_time = 300
        memory_limit = 128M
        post_max_size = 32M
        date.timezone = Asia/Shanghai
        mbstring.func_overload=2
        extension = "/usr/local/php/lib/php/extensions/no-debug-zts-20160303/ldap.so"

        注:ldap是一個輕量級目錄訪問協議,詳情見:https://ldap.com/php7

      2. 設置OPcache緩存(在php.ini添加下面內容)curl

        [opcache]
        zend_extension=/usr/local/php/lib/php/extensions/no-debug-zts-20160303/opcache.so
        opcache.memory_consumption=128
        opcache.interned_strings_buffer=8
        opcache.max_accelerated_files=4000
        opcache.revalidate_freq=60
        opcache.fast_shutdown=1
        opcache.enable_cli=1
      3. 添加禁用函數列表

        disable_functions = passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,escapeshellcmd,dll,popen,disk_free_space,checkdnsrr,checkdnsrr,getservbyname,getservbyport,disk_total_space,posix_ctermid,posix_get_last_error,posix_getcwd, posix_getegid,posix_geteuid,posix_getgid, posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid, posix_getppid,posix_getpwnam,posix_getpwuid, posix_getrlimit, posix_getsid,posix_getuid,posix_isatty, posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid, posix_setpgid,posix_setsid,posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname
    2. 配置www.conf

      1. 取消如下注釋並修改

        listen = /var/run/www/php-cgi.sock
        listen.owner = www
        listen.group = www
        listen.mode = 0660
        listen.allowed_clients = 127.0.0.1
        pm = dynamic
        listen.backlog = -1
        pm.max_children = 180
        pm.start_servers = 50
        pm.min_spare_servers = 50
        pm.max_spare_servers = 180
        request_terminate_timeout = 120
        request_slowlog_timeout = 50
        slowlog = var/log/slow.log
      2. 建立php-cgi.sock存放目錄

        $ mkdir /var/run/www/
        $ chown -R www:www /var/run/www
      3. 配置php-fpm.conf

        pid = /usr/local/php/var/run/php-fpm.pid
  7. 建立system系統單元文件php-fpm啓動腳本:

    $ vim /usr/lib/systemd/system/php-fpm.service
    
    # 添加 以下變量內容
    [Unit]
    Description=The PHP FastCGI Process Manager
    After=syslog.target network.target
    
    [Service]
    Type=simple
    PIDFile=/usr/local/php/var/run/php-fpm.pid
    ExecStart=/usr/local/php/sbin/php-fpm --nodaemonize --fpm-config /usr/local/php/etc/php-fpm.conf
    ExecReload=/bin/kill -USR2 $MAINPID
    
    [Install]
    WantedBy=multi-user.target

    注:關於systemctl命令能夠參考:Systemd 入門教程

  8. 啓動php-fpm服務並加入開機自啓動:

    $ systemctl enable php-fpm.service
    $ systemctl restart php-fpm.service
  9. 以後就能夠使用下面命令開啓關閉php-fpm服務了

    service php-fpm start/restart/stop

注:本文轉自詳解Centos7源碼編譯安裝 php7.2之生產篇,如需轉載請註明出處http://www.javashuo.com/article/p-zbxnrtbk-kk.html

相關文章
相關標籤/搜索