zoukankan      html  css  js  c++  java
  • ubuntu21.10:编译安装php8.1.1

    一,下载php8的安装包:

    1,创建目录:
    root@lhdpc:~# mkdir /usr/local/source
    root@lhdpc:~# mkdir /usr/local/soft
    root@lhdpc:~# chmod 777 /usr/local/source/
    root@lhdpc:~# chmod 777 /usr/local/soft
    说明:习惯上用source目录保存源码或安装包
    soft目录是安装后的可执行程序
     
    2,官网下载地址:
    https://www.php.net/downloads.php
    下载:
    root@lhdpc:~# cd /usr/local/source/
    root@lhdpc:/usr/local/source# mkdir php8
    root@lhdpc:/usr/local/source# cd php8
    root@lhdpc:/usr/local/source/php8# wget https://www.php.net/distributions/php-8.1.1.tar.gz
    3,解压:
    root@lhdpc:/usr/local/source/php8# tar -zxvf php-8.1.1.tar.gz
    root@lhdpc:/usr/local/source/php8# ls
    php-8.1.1  php-8.1.1.tar.gz

    说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest

             对应的源码可以访问这里获取: https://github.com/liuhongdi/
             或: https://gitee.com/liuhongdi

    说明:作者:刘宏缔 邮箱: 371125307@qq.com

     

    二,配置php安装:configure

    1,配置:
    root@lhdpc:/usr/local/source/php8# cd php-8.1.1/
    root@lhdpc:/usr/local/source/php8/php-8.1.1# ./configure --prefix=/usr/local/soft/php8 --with-config-file-path=/usr/local/soft/php8/etc 
    --with-curl --with-freetype --enable-gd --with-jpeg --with-gettext --with-kerberos --with-libdir=lib64 --with-libxml
    --with-mysqli --with-openssl --with-pdo-mysql --with-pdo-sqlite --with-pear --enable-sockets --with-mhash
    --with-ldap-sasl --with-xsl --with-zlib --with-zip -with-bz2 --with-iconv
    --enable-fpm --enable-pdo --enable-ftp --enable-bcmath --enable-mbregex --enable-mbstring
    --enable-opcache --enable-pcntl --enable-shmop --enable-soap --enable-sockets --enable-sysvsem
    --enable-xml --enable-sysvsem --enable-cli --enable-opcache --enable-intl
    --enable-calendar --enable-static --enable-mysqlnd
    2,
    配置成功时的提示信息:
    +--------------------------------------------------------------------+
    | License:                                                           |
    | This software is subject to the PHP License, available in this     |
    | distribution in the file LICENSE. By continuing this installation  |
    | process, you are bound by the terms of this license agreement.     |
    | If you do not agree with the terms of this license, you must abort |
    | the installation process at this point.                            |
    +--------------------------------------------------------------------+
     
    Thank you for using PHP.

    三,配置时的报错记录和解决:

    1,
    configure: error: in `/usr/local/source/php8/php-8.1.1':
    configure: error: no acceptable C compiler found in $PATH
    解决:
    root@lhdpc:/usr/local/source/php8/php-8.1.1# apt-get install gcc
    2,
    checking for libxml-2.0 >= 2.9.0... no
    configure: error: in `/usr/local/source/php8/php-8.1.1':
    configure: error: The pkg-config script could not be found or is too old.  Make sure it
    is in your PATH or set the PKG_CONFIG environment variable to the full
    path to pkg-config.
    解决:
    root@lhdpc:/usr/local/source/php8/php-8.1.1# apt-get install libxml2-dev
    root@lhdpc:/usr/local/source/php8/php-8.1.1# apt-get install pkg-config
    3,
    configure: error: Package requirements (krb5-gssapi krb5) were not met:
     
    No package 'krb5-gssapi' found
    No package 'krb5’ found
    解决:
    root@lhdpc:/usr/local/source/php8/php-8.1.1# apt-get install libkrb5-dev
    4,
    configure: error: Package requirements (openssl >= 1.0.2) were not met:
     
    No package 'openssl' found 
    解决:
    root@lhdpc:/usr/local/source/php8/php-8.1.1# apt-get install libssl-dev
    5,
    configure: error: Package requirements (sqlite3 >= 3.7.7) were not met:
     
    No package 'sqlite3’ found
    解决:
    root@lhdpc:/usr/local/source/php8/php-8.1.1# apt-get install libsqlite3-dev
    6,
    configure: error: Package requirements (zlib >= 1.2.0.4) were not met:
     
    No package 'zlib’ found 
    解决:
    root@lhdpc:/usr/local/source/php8/php-8.1.1# apt-get install zlib1g-dev
    7,
    checking for BZip2 in default path... not found
    configure: error: Please reinstall the BZip2 distribution
    解决:
    root@lhdpc:/usr/local/source/php8/php-8.1.1# apt-get install libbz2-dev
    8,
    checking for libcurl >= 7.29.0... no
    configure: error: Package requirements (libcurl >= 7.29.0) were not met:
     
    No package 'libcurl’ found
    解决:
    root@lhdpc:/usr/local/source/php8/php-8.1.1# apt-get install libcurl4-openssl-dev
    9,
    checking for libpng... no
    configure: error: Package requirements (libpng) were not met:
     
    No package 'libpng’ found
    解决:
    root@lhdpc:/usr/local/source/php8/php-8.1.1# apt-get install libpng-dev
    10,
    checking for libjpeg... no
    configure: error: Package requirements (libjpeg) were not met:
     
    No package 'libjpeg' found 
    解决:
    root@lhdpc:/usr/local/source/php8/php-8.1.1# apt-get install libjpeg-dev
    11,
    checking for freetype2... no
    configure: error: Package requirements (freetype2) were not met:
     
    No package 'freetype2’ found
    解决:
    root@lhdpc:/usr/local/source/php8/php-8.1.1# apt-get install libfreetype-dev
    12,
    checking whether the compiler supports GNU C++... no
    checking whether g++ accepts -g... no
    checking for g++ option to enable C++11 features... none needed
    checking how to run the C++ preprocessor... /lib/cpp
    configure: error: in `/usr/local/source/php8/php-8.1.1':
    configure: error: C++ preprocessor "/lib/cpp" fails sanity check 
    解决:
    root@lhdpc:/usr/local/source/php8/php-8.1.1# apt-get install g++
    13,
    checking for oniguruma... no
    configure: error: Package requirements (oniguruma) were not met:
     
    No package 'oniguruma' found
    解决:
    root@lhdpc:/usr/local/source/php8/php-8.1.1# apt install libonig-dev
    14,
    checking for libxslt >= 1.1.0... no
    configure: error: Package requirements (libxslt >= 1.1.0) were not met:
     
    No package 'libxslt’ found
    解决:
    root@lhdpc:/usr/local/source/php8/php-8.1.1# apt install libxslt-dev
    15,
    checking for libzip >= 0.11 libzip != 1.3.1 libzip != 1.7.0... no
    configure: error: Package requirements (libzip >= 0.11 libzip != 1.3.1 libzip != 1.7.0) were not met:
     
    No package 'libzip’ found
    解决:
    root@lhdpc:/usr/local/source/php8/php-8.1.1# apt install libzip-dev

    四,编译php8

     1,编译
    root@lhdpc:/usr/local/source/php8/php-8.1.1# make
    说明:事先应该安装有make命令:
    可以用下面的命令安装:
    root@lhdpc:/usr/local/source/php8/php-8.1.1# apt install make 
    2,看到如下内容时,表示编译完成:
    Build complete.
    Don't forget to run 'make test'.

     

    五,安装php8

    1,安装
    root@lhdpc:/usr/local/source/php8/php-8.1.1# make install
    2,测试效果:
    root@lhdpc:/usr/local/source/php8/php-8.1.1# /usr/local/soft/php8/bin/php --version
    PHP 8.1.1 (cli) (built: Dec 20 2021 16:12:16) (NTS)
    Copyright (c) The PHP Group
    Zend Engine v4.1.1, Copyright (c) Zend Technologies 
    能看到版本表示已安装成功
     

    六,生成配置文件:

    1,生成php.ini
    root@lhdpc:/usr/local/source/php8/php-8.1.1# cp php.ini-production /usr/local/soft/php8/etc/php.ini
    2,生成www.conf
    root@lhdpc:/usr/local/source/php8/php-8.1.1# cd /usr/local/soft/php8/etc/php-fpm.d/
    root@lhdpc:/usr/local/soft/php8/etc/php-fpm.d# ls
    www.conf.default
    root@lhdpc:/usr/local/soft/php8/etc/php-fpm.d# cp www.conf.default www.conf
    3,生成php-fpm.conf
    root@lhdpc:/usr/local/soft/php8/etc/php-fpm.d# cd /usr/local/soft/php8/etc
    root@lhdpc:/usr/local/soft/php8/etc# ls
    pear.conf  php-fpm.conf.default  php-fpm.d  php.ini
    root@lhdpc:/usr/local/soft/php8/etc# cp php-fpm.conf.default php-fpm.conf 
     

    七,测试php-fpm

    1,配置用户:
    root@lhdpc:/usr/local/source/php8/php-8.1.1/sapi/fpm# vim /usr/local/soft/php8/etc/php-fpm.d/www.conf
    说明:指定用户为 www-data
    如下:
    ;user = nobody
    ;group = nobody
    user = www-data
    group = www-data
    说明:如果不设置会因为找不到nobody这个group而报错:
    root@lhdpc:/usr/local/source/php8/php-8.1.1/sapi/fpm# systemctl status php-fpm
    × php-fpm.service - The PHP FastCGI Process Manager
         Loaded: loaded (/etc/systemd/system/php-fpm.service; disabled; vendor preset: enabled)
         Active: failed (Result: exit-code) since Mon 2021-12-20 16:48:53 CST; 4s ago
        Process: 253676 ExecStart=/usr/local/soft/php8/sbin/php-fpm --nodaemonize --fpm-config /usr/local/soft/php8/etc/php-fpm.conf (code=exited, status=78)
       Main PID: 253676 (code=exited, status=78)
            CPU: 304ms
     
    12月 20 16:48:53 lhdpc systemd[1]: Started The PHP FastCGI Process Manager.
    12月 20 16:48:53 lhdpc php-fpm[253676]: [20-Dec-2021 16:48:53] ERROR: [pool www] cannot get gid for group 'nobody'
    12月 20 16:48:53 lhdpc php-fpm[253676]: [20-Dec-2021 16:48:53] ERROR: FPM initialization failed
    12月 20 16:48:53 lhdpc systemd[1]: php-fpm.service: Main process exited, code=exited, status=78/CONFIG
    12月 20 16:48:53 lhdpc systemd[1]: php-fpm.service: Failed with result 'exit-code'.
    2,生成启动文件:
    root@lhdpc:/usr/local/source/php8/php-8.1.1/sapi/fpm# cp php-fpm.service /etc/systemd/system/
    然后做一下修改:
    root@lhdpc:/usr/local/source/php8/php-8.1.1/sapi/fpm# vim /etc/systemd/system/php-fpm.service
    修改内容:
    # Mounts the /usr, /boot, and /etc directories read-only for processes invoked by this unit.
    #ProtectSystem=full
    ProtectSystem=false
    把 ProtectSystem=full修改为: ProtectSystem=false
    说明:如果不做修改会报错如下
    查看报错:
    root@lhdpc:/usr/local/source/php8/php-8.1.1/sapi/fpm# systemctl status php-fpm
    × php-fpm.service - The PHP FastCGI Process Manager
         Loaded: loaded (/etc/systemd/system/php-fpm.service; disabled; vendor preset: enabled)
         Active: failed (Result: exit-code) since Mon 2021-12-20 16:44:02 CST; 3s ago
        Process: 252867 ExecStart=/usr/local/soft/php8/sbin/php-fpm --nodaemonize --fpm-config /usr/local/soft/php8/etc/php-fpm.conf (code=exited, status=78)
       Main PID: 252867 (code=exited, status=78)
            CPU: 317ms
     
    12月 20 16:44:02 lhdpc systemd[1]: Started The PHP FastCGI Process Manager.
    12月 20 16:44:02 lhdpc php-fpm[252867]: [20-Dec-2021 16:44:02] ERROR: failed to open error_log (/usr/local/soft/php8/var/log/php-fpm.log): Read-only file system (30)
    12月 20 16:44:02 lhdpc php-fpm[252867]: [20-Dec-2021 16:44:02] ERROR: failed to post process the configuration
    12月 20 16:44:02 lhdpc php-fpm[252867]: [20-Dec-2021 16:44:02] ERROR: FPM initialization failed
    12月 20 16:44:02 lhdpc systemd[1]: php-fpm.service: Main process exited, code=exited, status=78/CONFIG
    12月 20 16:44:02 lhdpc systemd[1]: php-fpm.service: Failed with result 'exit-code’.
    3,启动
    因为service文件做过修改,做一次加载:
    root@lhdpc:/usr/local/source/php8/php-8.1.1/sapi/fpm# systemctl daemon-reload
    启动:
    root@lhdpc:/usr/local/source/php8/php-8.1.1/sapi/fpm# systemctl start php-fpm
    4,查看php-fpm的进程:
    root@lhdpc:/usr/local/source/php8/php-8.1.1/sapi/fpm# ps auxfww | grep php
    root      253913  0.0  0.0  12248  2384 pts/1    S+   16:57   0:00  |   |           \_ grep --color=auto php
    root      253906  2.8  0.6  82380 25064 ?        Ss   16:57   0:00 php-fpm: master process (/usr/local/soft/php8/etc/php-fpm.conf)
    www-data  253908  0.0  0.2  82864  9752 ?        S    16:57   0:00  \_ php-fpm: pool www
    www-data  253909  0.0  0.2  82864  9752 ?        S    16:57   0:00  \_ php-fpm: pool www

    八,安装nginx,配置nginx可访问php-fpm

    1,安装nginx
    root@lhdpc:~# apt-get install nginx
    2,
    创建目录和一个php程序:
    root@lhdpc:/etc/nginx/sites-enabled# mkdir -p /data/web/html
    root@lhdpc:/etc/nginx/sites-enabled# cd /data/web/html
    root@lhdpc:/data/web/html# vi index.php
    root@lhdpc:/data/web/html# more index.php
    <?php
      phpinfo();
    ?>
    3,配置一个站点,供测试php使用:
    root@lhdpc:/data/web/html# cd /etc/nginx/sites-enabled/
    root@lhdpc:/etc/nginx/sites-enabled# vim php.conf
    root@lhdpc:/etc/nginx/sites-enabled# more php.conf
    server {
            listen       8003;
            root   /data/web/html;
            location ~ \.php {
                    fastcgi_pass   127.0.0.1:9000;
                    fastcgi_index  index.php;
                    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                    include        fastcgi_params;
            }
        }
    说明:创建了一个端口是8003的站点
     
    4,测试访问:
    http://127.0.0.1:8003/index.php
    如图:

    九,启动jit

    默认安装完成后,phpinfo的返回内容中没有一段专门的opcache配置段,
    表示opcache还未开启
    1,
    root@lhdpc:/usr/local/soft/php8/etc# vim php.ini
    在[opcache]段编辑如下:
    [opcache]
    opcache.enable=1
    opcache.enable_cli=1
    opcache.jit_buffer_size=128M
    opcache.jit=tracing
    zend_extension=opcache
    2,重启:
    root@lhdpc:/usr/local/soft/php8/etc# systemctl reload php-fpm.service 
    3,查看效果:
    可以看到新增了Zend OPcache段
     
    说明:
    关于tracing和function
     

    十,查看linux的版本:

    root@lhdpc:/usr/local/soft/php8/etc# cat /etc/os-release
    PRETTY_NAME="Ubuntu 21.10"
    NAME="Ubuntu"
    VERSION_ID="21.10"
    VERSION="21.10 (Impish Indri)"
    VERSION_CODENAME=impish
    ID=ubuntu
    ID_LIKE=debian
    HOME_URL="https://www.ubuntu.com/"
    SUPPORT_URL="https://help.ubuntu.com/"
    BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
    PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
    UBUNTU_CODENAME=impish
  • 相关阅读:
    Python:dict用法
    Ubuntu无法识别显示器情况下,高分辨率的设置
    select节点clone全解析
    js控制frameset的rows
    jQuery中事情的动态绑定 (转)
    jQuery动态添加表格1
    使用ajax,后台传回的数据处理
    Spring Boot 之构建Hello Word项目
    linux防火墙基本操作
    Vmware虚拟机中安装cnetOS7详细图解步骤
  • 原文地址:https://www.cnblogs.com/architectforest/p/15714248.html
Copyright © 2011-2022 走看看