CentOS7.X安装php-7.x.x

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: CentOS7.X安装php-7.x.x

我的个人网站

安装php

  1. 安装准备

    yum install \
    vim \
    gcc \
    gcc-c++ \
    wget \
    make \
    re2c \
    libtool \
    automake \
    autoconf \
    curl-devel \
    libpng-devel \
    libxml2-devel \
    libxslt-devel \
    openssl-devel \
    freetype-devel \
    bzip2-devel \
    libicu-devel \
    libuuid-devel \
    libmcrypt-devel \
    postgresql-devel \
    -y
  2. 安装php

    cd /root
    wget http://cn2.php.net/distributions/php-7.2.6.tar.gz
    tar -zxvf php-7.2.6.tar.gz
    cd php-7.2.6
    ./configure \
    --prefix=/usr/local/php \
    --enable-mysqlnd \
    --with-openssl \
    --enable-fpm
    
    # 如果在/usr/local/apache/路径下安装了apache并且想让php运行在apache下,需要加上:
    # --with-apxs2=/usr/local/apache/bin/apxs
    # 或 --with-apxs2=/usr/local/apache/bin/apxs2
    # apxs在有些apache发行版中已经改名为apxs2
    
    make
    make install
    
    # 如果在/usr/local/apache/路径下安装了apache并且想让php运行在apache下,apache不需要重新编译
    # 这时候/usr/local/apache/modules/下多了一个libphp7.so文件
    # 编辑/etc/httpd/httpd.conf添加如下行:
    
    LoadModule php7_module modules/libphp7.so
    DocumentRoot "/www"
    <FilesMatch \.php$>
        SetHandler application/x-httpd-php
    </FilesMatch>
    
    # 编辑/www/index.php添加如下行:
    
    <?php
    phpinfo();
    
    # 重启apache
    # 访问http://xxx.xxx.xxx.xxx/index.php
  3. 生成php.ini、php-fpm.conf、www.conf

    # 检查php.ini是否正确放置(只需要第一行不为none)
    /usr/local/php/bin/php --ini
    
    部署环境执行:
    cp ./php.ini-production /usr/local/php/lib/php.ini
    
    开发环境执行:
    cp ./php.ini-development /usr/local/php/lib/php.ini
    
    # 拷贝php-fpm.conf
    cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
    
    # PHP7才执行(PHP5中,www.conf的配置项在php-fpm.conf)
    cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
  4. php.ini常规配置

    # 下载cacert.pem
    cd /usr/local/php/lib
    wget https://curl.haxx.se/ca/cacert.pem
    
    vim /usr/local/php/lib/php.ini
    
    ;php版本信息隐藏
    expose_php=Off
    
    ;防止显示php错误输出,Off: 不输出但存入日志
    display_errors=Off
    
    ;防止用户将可执行文件伪装成静态文件(如图片、文档)上传后,通过访问WEB页面执行该文件
    cgi.fix_pathinfo=0
    
    ;允许上传单个文件最大20M
    upload_max_filesize=20M
    
    ;session.name如果自己开发程序可以改,但如果是部署已有项目,修改后可能导致session相关功能异常
    session.name=self_key
    
    ;每请求10次session的key,检查1次key是否需要过期删除
    session.gc_probability=1
    session.gc_divisor=1000
    
    ;设置session默认5分钟(300秒)过期
    session.gc_maxlifetime=1440
    
    ;时区中国上海
    date.timezone=Asia/Shanghai
    
    ;curl、openssl配置cacert.pem
    curl.cainfo=/usr/local/php/lib/cacert.pem
    openssl.cafile=/usr/local/php/lib/cacert.pem
    
    ESC
    :wq
  5. 配置php-fpm.conf

    vim /usr/local/php/etc/php-fpm.conf
    
    pid=run/php-fpm.pid
    error_log=log/php-fpm.log
    # 如开启该配置↓,下一步不可跳过
    rlimit_files=51200
    
    ESC
    :wq
  6. 调整最大文件打开数(数值仅供参考,如上一步骤未配置rlimit_files,本步可跳过)

    # 在文件末尾添加
    vim /etc/security/limits.conf
    
    * soft nproc 65535
    * hard nproc 65535
    * soft nofile 65535
    * hard nofile 65535
    
    ESC
    :wq
  7. 配置www.conf(内存较大、较小两套方案)

    vim /usr/local/php/etc/php-fpm.d/www.conf
    
    user=www
    group=www
    
    # 静态分配子进程(内存1G,计划为php分配 640M 内存)
    pm=static
    pm.max_children=20
    pm.start_servers=15
    pm.min_spare_servers=10
    pm.max_spare_servers=20
    pm.process_idle_timeout=10s
    pm.max_requests=500
    slowlog=log/$pool.log.slow
    php_admin_value[memory_limit]=32M
    
    # 动态分配子进程(内存1G,计划为php分配 640M 内存)
    pm=dynamic
    pm.max_children=20
    pm.start_servers=15
    pm.min_spare_servers=10
    pm.max_spare_servers=20
    pm.process_idle_timeout=10s
    pm.max_requests=500
    slowlog=log/$pool.log.slow
    php_admin_value[memory_limit]=32M
    
    ESC
    :wq
    
    # 以下配置仅供了解,不建议这样使用
    listen=127.0.0.1:9000 若改为 listen=/usr/local/php/var/run/php-fpm.sock
    则nginx配置 fastcgi_pass 127.0.0.1:9000; 要改为 fastcgi_pass unix:/usr/local/php/var/run/php-fpm.sock;
  8. 将php加入环境变量

    vim /etc/profile
    
    export PATH=$PATH:/usr/local/php/bin
    
    ESC
    :wq
    
    source /etc/profile
  9. 安装composer

    # 下载(需要先安装zlib扩展)
    cd /usr/local/php/bin
    curl -sS https://getcomposer.org/installer | /usr/local/php/bin/php
    mv ./composer.phar ./composer
    composer -V
  10. 启动php并设置开机启动

    # 添加www用户
    useradd www
    mkdir /www
    chown -R www:www /www
    chown -R www:www /usr/local/php
    
    # 进入单元文件目录
    cd /etc/systemd/system
    vim php7.service
    
    [Unit]
    Description=Start php7 on boot.
    After=network.target
    
    [Service]
    User=root
    Group=root
    Type=forking
    ExecStart=/usr/local/php/sbin/php-fpm
    ExecReload=/bin/kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`
    ExecStop=/bin/kill -INT `cat /usr/local/php/var/run/php-fpm.pid`
    PrivateTmp=true
    
    [Install]
    WantedBy=multi-user.target
    
    ESC
    :wq
    
    # 修改文件权限为只有root用户可以编辑该文件
    chown -R root:root /etc/systemd/system/php7.service
    chmod -R 644 /etc/systemd/system/php7.service
    
    # 更新systemd
    systemctl daemon-reload
    systemctl enable php7
    systemctl start php7
  11. 查看运行情况

    # 查看主进程、子进程
    ps aux | grep php-fpm
    
    # 查看pid文件(存在即成功)
    ll /usr/local/php/var/run/
  12. php进程操作

    # 平滑关闭
    kill -INT `cat /usr/local/php/var/run/php-fpm.pid`
    # 平滑重启
    kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`
  13. 安装php扩展

    cd /root/php-7.2.6/ext/xxxx
    /usr/local/php/bin/phpize
    
    -----------------------------------------------------------
    | phpize时注意如下:
    | 这里如果说没发现config.m4
    | cp ./config0.m4 ./config.m4
    -----------------------------------------------------------
    
    ./configure --with-php-config=/usr/local/php/bin/php-config
    
    -----------------------------------------------------------
    | 安装GD库configure时注意如下:
    | 这里为了排版加了'|',按住Alt键选取吧...
    | yum install \
    | libXpm-devel \
    | libpng-devel \
    | libjpeg-devel \
    | libwebp-devel \
    | -y \
    |
    | ./configure \
    | --with-xpm-dir \
    | --with-png-dir \
    | --with-jpeg-dir \
    | --with-webp-dir \
    | --with-zlib-dir \
    | --with-freetype-dir \
    -----------------------------------------------------------
    
    make
    
    -----------------------------------------------------------
    | make注意如下:
    | 重复安装PHP预编译的扩展,会报错
    | Installing shared extensions:
    | /usr/local/php/lib/php/extensions/no-debug-non-zts-20151012/
    | cp: cannot stat 'modules/*': No such file or directory
    | make: *** [install-modules] Error 1
    | 所以不要重复安装,通过 php -m 查看已经安装的扩展。
    -----------------------------------------------------------
    
    -----------------------------------------------------------
    | 这里注意,安装mcrypt要先安装libmcrypt(有些版本Linux系统)
    | cd /usr/local/src
    | wget ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/libmcrypt/libmcrypt-2.5.7.tar.gz
    | cd libmcrypt-2.5.7
    | ./configure
    | make
    | make install
    -----------------------------------------------------------
    
    make install
    
    vim /usr/local/php/lib/php.ini
    
    extension=xxxx.so
    
    ESC
    :wq
    
    Zend扩展:
    -----------------------------------------------------------
    | 设置opcache.max_accelerated_files时
    | 先执行以下命令来获取php文件数
    | find . -type f -print | grep php | wc -l
    | 然后在以下质数集合中,找到一个恰好比该值大的值
    | 223, 463, 983, 1979, 3907, 7963, 16229, 32531, 65407, 130987
    | opcache安装,配置php.ini:
    |
    | zend_extension=opcache.so
    | opcache.enable_cli=1
    | opcache.memory_consumption=256
    | opcache.interned_strings_buffer=16
    | opcache.max_accelerated_files=32531
    | opcache.validate_timestamps=1
    | opcache.revalidate_freq=60
    | opcache.fast_shutdown=1
    -----------------------------------------------------------
  14. ZendOpcache的最佳设置参考链接
  15. 常用扩展('-'表示可能已经安装的扩展,安装前检查已安装扩展,防止重复安装)

    bcmath
    - ctype
    curl
    - date
    - fileinfo
    gd
    - hash
    - iconv
    intl
    - json
    mbstring
    mcrypt
    - mysqlnd
    - openssl
    - pcre
    - PDO
    pdo_mysql
    pdo_pgsql
    sockets
    zip
    zlib
    
    mongo (wget http://pecl.php.net/get/mongo-1.6.14.tgz [php7.x.x不再需要])
    mongodb (wget http://pecl.php.net/get/mongodb-1.2.9.tgz)
    redis (wget http://pecl.php.net/get/redis-3.1.2.tgz)
    uuid (wget http://pecl.php.net/get/uuid-1.0.4.tgz)
    fastcommon (见FastDFS安装)
    fastdfs_client (见FastDFS安装)
    
    Zend:
        opcache (文档地址: http://php.net/manual/zh/opcache.installation.php)
  16. php重新编译

    cd /root/php-7.2.6
    
    make distclean
    
    ./configure \
    --prefix=/usr/local/php \
    --enable-mysqlnd \
    --with-openssl \
    --enable-fpm \
    
    make
    make install
  17. 领支付宝红包支持作者

    扫码领支付宝红包

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
2月前
|
存储 Ubuntu Linux
VMware-安装CentOS系统教程及安装包
虚拟机相当于是一个独立于你电脑的环境,在这个环境上面,你可以安装Linux、Windows、Ubuntu等各个类型各个版本的系统,在这个系统里面你不用担心有病读等,不用担心文件误删导致系统崩溃。 虚拟机也和正常的电脑系统是一样的,也可以开关机,不用的时候,你关机就可以了,也不会占用你的系统资源,使用起来还是比较方便 这里也有已经做好的CentOS 7系统,下载下来解压后直接用VMware打开就可以使用
649 69
|
1月前
|
存储 分布式计算 Linux
安装篇--CentOS 7 虚拟机安装
VMware 装 CentOS 7 不知道从哪下手?这篇超详细图文教程手把手教你在 VMware Workstation 中完成 CentOS 7 桌面系统的完整安装流程。从 ISO 镜像下载、虚拟机配置,到安装图形界面、设置用户密码,每一步都有截图讲解,适合零基础新手快速上手。装好之后无论你是要搭 Hadoop 集群,还是练 Linux ,这个环境都够你折腾一整天!
716 2
|
2月前
|
Ubuntu Linux 索引
Centos 7、Debian及Ubuntu系统中安装和验证tree命令的指南。
通过上述步骤,我们可以在CentOS 7、Debian和Ubuntu系统中安装并验证 `tree`命令。在命令行界面中执行安装命令,然后通过版本检查确认安装成功。这保证了在多个平台上 `tree`命令的一致性和可用性,使得用户无论在哪种Linux发行版上都能使用此工具浏览目录结构。
301 78
|
1月前
|
安全 关系型数据库 MySQL
CentOS 7 yum 安装 MySQL教程
在CentOS 7上安装MySQL 8,其实流程很清晰。首先通过官方Yum仓库来安装服务,然后启动并设为开机自启。最重要的环节是首次安全设置:需要先从日志里找到临时密码来登录,再修改成你自己的密码,并为远程连接创建用户和授权。最后,也别忘了在服务器防火墙上放行3306端口,这样远程才能连上。
362 16
|
3月前
|
Linux 网络安全 Apache
针对在Centos/Linux安装Apache过程中出现的常见问题集锦
以上每个问题的解决方案应深入分析错误日志、系统消息和各种配置文件,以找到根本原因并加以解决。务必保持系统和Apache软件包更新到最新版本,以修复已知的bugs和安全漏洞。安装和管理Web服务器是一项需要细致关注和不断学习的任务。随着技术的发展,推荐定期查看官方文档和社区论坛,以保持知识的更新。
205 80
|
2月前
|
存储 关系型数据库 MySQL
在CentOS 8.x上安装Percona Xtrabackup工具备份MySQL数据步骤。
以上就是在CentOS8.x上通过Perconaxtabbackup工具对Mysql进行高效率、高可靠性、无锁定影响地实现在线快速全量及增加式数据库资料保存与恢复流程。通过以上流程可以有效地将Mysql相关资料按需求完成定期或不定期地保存与灾难恢复需求。
233 10
|
3月前
|
JavaScript Linux PHP
composer如何安装以及举例在PHP项目中使用Composer安装TCPDF库-优雅草卓伊凡
composer如何安装以及举例在PHP项目中使用Composer安装TCPDF库-优雅草卓伊凡
147 3
composer如何安装以及举例在PHP项目中使用Composer安装TCPDF库-优雅草卓伊凡
|
3月前
|
人工智能 数据挖掘 Linux
Centos安装Python3.7(亲测可用)
本指南详细介绍了在基于Linux(以CentOS系统为例,使用yum包管理器)的系统上安装Python 3.7版本的完整流程。Python是一种广泛使用的高级编程语言,在各种领域如软件开发、数据分析、人工智能和区块链开发等都有着重要的应用。
377 2
|
2月前
|
运维 网络协议 Linux
CentOS下Bind服务的安装与故障排查
通过以上的步骤,您应该能够在CentOS系统上安装并配置BIND DNS服务,并进行基本的故障排查。
238 0
|
4月前
|
机器人 Linux
CentOS 7系统中安装特定版本CMake 3.21.2的方法。
到这里,过程已经全部完成。如果你跟随上面的步骤来,那么你现在已经拥有了一个全新的CMake版本在你的CentOS 7系统上了。这个过程就像是你通过一系列仪式,唤醒了一个沉睡已久的古老机器人,它现在完全按照你的意愿来帮你构建和编译软件了。
353 18