当前位置: 首页 > news >正文

php7.4二进制安装-contos7

一、php7.4安装

1、安装依赖

yum install -y sqlite-devel libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel gmp gmp-devel libmcrypt libmcrypt-devel readline readline-devel libxslt libxslt-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel ncurses curl gdbm-devel db4-devel libXpm-devel libX11-devel gd-devel gmp-devel expat-devel xmlrpc-c xmlrpc-c-devel libicu-devel libmcrypt-devel libmemcached-devel autoconf automake libtool

2、安装oniguruma扩展

解压扩展 tar -zxf oniguruma-6.9.4.tar.gz
进入解压包 cd oniguruma-6.9.4/
初始化文件 ./autogen.sh
编译扩展路径 ./configure --prefix=/usr --libdir=/lib64
编译及安装 make && make install

3、安装libzip扩展

解压扩展 tar -zxf libzip-1.2.0.tar.gz
进入解压包 cd libzip-1.2.0
编译扩展路径 ./configure
编译及安装 make && make install

4、安装freetype扩展

解压扩展 tar -zxf freetype-2.9.tar.gz
进入解压包 cd freetype-2.9
编译扩展路径 ./configure --prefix=/usr/local/freetype
编译及安装 make && make install
设置图像路径 export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig/"

5、安装PHP7.4

解压PHP tar -zxf php-7.4.26.tar.gz
进入PHP cd php-7.4.26
编译PHP路径 ./configure --prefix=/usr/local/php74 --with-config-file-path=/etc --with-fpm-user=www --with-fpm-group=www --with-curl --with-freetype=/usr/local/freetype --enable-gd --with-gettext --with-iconv-dir --with-kerberos --with-libdir=/lib64 --with-mysqli --with-openssl --with-pdo-mysql --with-pdo-sqlite --with-pear --with-jpeg=/usr/include --with-xmlrpc --with-xsl --with-zlib --with-bz2 --with-mhash --enable-fpm --enable-bcmath --with-libxml --enable-inline-optimization --enable-mbstring --enable-mbregex --enable-opcache --enable-pcntl --enable-shmop --enable-soap --enable-sockets --enable-sysvsem --enable-sysvshm --enable-xml --with-zip --enable-fpm
编译及安装 make && make install

6、添加环境变量

打开环境变量文件 vi /etc/profile
配置环境变量 PATH=$PATH:/usr/local/php74/bin
更新环境变量文件 source /etc/profile

7、测试PHP

php -v

8、配置PHP

复制php.ini文件 cp php.ini-production /etc/php.ini
复制php-fpm文件 cp /usr/local/php74/etc/php-fpm.conf.default /usr/local/php74/etc/php-fpm.conf
复制php-www文件 cp /usr/local/php74/etc/php-fpm.d/www.conf.default /usr/local/php74/etc/php-fpm.d/www.conf
复制php-fpm文件到etc目录下 cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
授权php-fpm文件 chmod +x /etc/init.d/php-fpm

9、修改php连接MySQL方式

打开文件 vi /etc/php.ini
修改mysqli及pdo连接MySQL地址 mysqli.default_socket =/data/mysql/mysql3306/mysql.sockpdo_mysql.default_socket=/data/mysql/mysql3306/mysql.sock

10、设置开机启动

打开文件 vi /lib/systemd/system/php-fpm.service
[Unit]
Description=The PHP FastCGI Process Manager
After=syslog.target network.target
[Service]
Type=simple
PIDFile=/usr/local/php74/var/run/php-fpm.pid
ExecStart=/usr/local/php74/sbin/php-fpm --nodaemonize --fpm-config /usr/local/php74/etc/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID
ExecStop=/bin/kill -SIGINT $MAINPID
[Install]
WantedBy=multi-user.target
加入开机启动 systemctl enable php-fpm.service
重启PHP systemctl restart php-fpm.service

11、授权

chown -R www:www /usr/local/php74

二、安装Redis扩展

解压扩展 tar -zxf redis-5.3.5.tgz
进入解压包 cd redis-5.3.5
编译共享 phpize
编译扩展路径 ./configure --with-php-config=/usr/local/php74/bin/php-config
编译及安装 make && make install
修改 vi /etc/php.ini 并加入 extension=redis.so , 然后重启php-fpm systemctl restart php-fpm.service

三、swoole扩展安装

解压扩展 tar -zxf swoole-src-4.8.12.tar.gz
进入解压包 cd swoole-src-4.8.12
编译共享 phpize
编译扩展路径 ./configure --with-php-config=/usr/local/php74/bin/php-config
编译及安装 make && make install
修改 vi /etc/php.ini 并加入 extension=swoole.so , 然后重启php-fpm systemctl restart php-fpm.service

四、内存优化

sysctl vm.nr_hugepages=512 // 切勿越大越好,会长占内存
修改vi /etc/php.ini 
memory_limit = 1024M # 每个脚本执行最大内存,对于4G内存来说的
expose_php = Off # 关闭php版本信息
display_error = Off # 屏幕不显示错误日志
error_reporting = E_WARNING & E_ERROR # 记录php错误日志至后台
log_errors = On # 开启日志
error_log = /data/php74/php_error.log # 错误日志记录的位置
date.timezone = Asia/Shanghai # 时区调整,默认PRC, 建议调整为Asia/Shanghai
file_uploads = On # 开启文件上传功能,默认启动
upload_max_filesize = 300M # 允许上传文件的最大大小
post_max_size = 300M # 允许客户端单个POST请求发送的最大数据
max_file_uploads = 20 # 允许同时上传的文件的最大数量
opcache.huge_code_pages=1
修改vi /usr/local/php74/etc/php-fpm.conf
[global]
;pid = /var/log/php-fpm/php-fpm.pid #pid文件存放的位置
error_log = /data/php74/php-fpm.log #错误日志存放的位置
;log_level = error #日志级别, alert, error, warning, notice, debug
rlimit_files = 65535 #php-fpm进程能打开的文件数
events.mechanism = epoll #使用epoll事件模型处理请求
修改vi /usr/local/php74/etc/php-fpm.d/www.conf
适当提高pm.max_children、pm.max_spare_servers
注意:pm.start_servers<=pm.min_spare_servers 比如
pm有三种模式:static|dynamic|ondemand 内存大采用静态的 内存小采用动态的 还可以按需配置
pm = dynamic
pm.max_children = 50 #静态方式下开启的php-fpm进程数量
pm.start_servers = 10 #动态方式下的起始php-fpm进程数量
pm.min_spare_servers = 10 #动态方式下的最小php-fpm进程数
pm.max_spare_servers = 50 #动态方式下的最大php-fpm进程数量
pm.max_requests = 1024 #每一个进程能响应的请求数
pm.process_idle_timeout = 15s;
pm.status_path = /phpfpm_status
# 错误日志
php_flag[display_errors] = on
php_admin_value[error_log] = /data/php74/php-www_error.log
php_admin_flag[log_errors] = on
# 将查询超过5s的连接记录至慢查询日志中
request_slowlog_timeout = 5s
request_terminate_timeout = 600s
slowlog = /data/php74/slow.log创建目录:mkdir /data/php74/
进入目录:cd /data/php74/
新建文件:touch slow.logtouch php-www_error.logtouch php-fpm.logtouch php_error.logchown -R www:www /data/php74
重启php-fpm systemctl restart php-fpm.service

五、opcache扩展开启

修改 vi /etc/php.ini 并加入zend_extension=opcache.soopcache.enable=1 ;启用操作码缓存opcache.enable_cli=1 ;仅针对CLI环境启用操作码缓存opcache.file_cache=/data/php74opcache.memory_consumption=128 ;共享内存大小,单位MBopcache.interned_strings_buffer=16 ;存储临时字符串的内存大小,单位MBopcache.max_accelerated_files=4000 ;哈希表中可存储的脚本文件数量上限opcache.validate_timestamps=1 ;每隔revalidate_freq 设定的秒数 检查脚本是否更新opcache.revalidate_freq=60 ;检查脚本时间戳是否有更新时间opcache.fast_shutdown=1 ;一次释放全部请求变量的内存opcache.enable_file_override=0 ; 如果启用,则在调用函数file_exists(), is_file() 以及 is_readable() 的时候, 都会检查操作码缓存opcache.force_restart_timeout=180 ; 如果缓存处于非激活状态,等待多少秒之后计划重启。然后重启php-fpm systemctl restart php-fpm.service

六、mongodb安装

解压扩展 tar -zxf mongodb-1.15.0.tgz 
进入解压包 cd mongodb-1.15.0
编译共享 phpize
编译扩展路径 ./configure --with-php-config=/usr/local/php74/bin/php-config
编译及安装 make && make install
修改 vi /etc/php.ini 并加入 extension=mongodb.so , 然后重启php-fpm systemctl restart php-fpm.service

七、rabbitmq-c安装

wget https://pecl.php.net/get/amqp-1.11.0.tgz
wget https://github.com/alanxz/rabbitmq-c/releases/download/v0.7.1/rabbitmq-c-0.7.1.tar.gz
解压扩展 tar zxf rabbitmq-c-0.7.1.tar.gz
进入解压包 cd rabbitmq-c-0.7.1
编译扩展路径 ./configure --prefix=/usr/local/rabbitmq-c-0.7.1
编译及安装 make && make install
解压扩展 tar -zxf amqp-1.11.0.tgz
进入解压包 cd amqp-1.11.0
编译共享 phpize
编译扩展路径 ./configure --with-php-config=/usr/local/php74/bin/php-config --with-amqp --with-librabbitmq-dir=/usr/local/rabbitmq-c-0.7.1
编译及安装 make && make install
修改 vi /etc/php.ini 并加入 extension=amqp , 然后重启php-fpm systemctl restart php-fpm.service

八、PHP使用swoole扩展启动线程

<?php
$pros = [];
for($i=0;$i<5;$i++){$process = new  swoole_process(function($pro)use($i){sleep(1);echo '子进程..'.$i.PHP_EOL;sleep(2);echo $pro->pop().PHP_EOL;}, true);$process->useQueue();$pid = $process->start();$pros[$pid] = $process;echo '子进程'.$i.'的pid...'.$pid.PHP_EOL;
}
foreach($pros as $pid =>$pro){$pro->push('push队列'.$pid);$ret = swoole_process::wait();$pid = $ret['pid'];unset($pros[$pid]);
}

注意:lnmp(Linux+nginx+MySQL+PHP)组合二进制安装的流程是先安装nginx或者MySQL,最后安装PHP,切记,先只有MySQL安装之后,在安装PHP,否则有想不到的麻烦

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • HoloLens 和 Unity 空间坐标系统 Coordinate systems
  • 信号signal与信号量semaphore的区别
  • 基于STM32开发的智能植物浇水系统
  • 音视频相关知识
  • 算法的学习笔记—链表中倒数第 K 个结点(牛客JZ22)
  • 激光雷达点云投影到图像平面
  • CSS方向选择的艺术:深入探索:horizontal和:vertical伪类
  • Ansible可视化管理之web界面集成使用探究(未完待续)
  • 2024年杭州市网络与信息安全管理员(网络安全管理员)职业技能竞赛的通知
  • 【STM32嵌入式系统设计与开发拓展】——14_定时器之输入捕获
  • 用关系图和示例解释异步/等待
  • c++动态数组new和delete
  • kubernetes k8s Daemonset 控制器 原理 讲解 配置
  • 微前端架构下的多租户支持:实现与最佳实践
  • Android app安装第三方应用
  • __proto__ 和 prototype的关系
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • CAP 一致性协议及应用解析
  • Java 9 被无情抛弃,Java 8 直接升级到 Java 10!!
  • Laravel 实践之路: 数据库迁移与数据填充
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • Median of Two Sorted Arrays
  • mongo索引构建
  • PAT A1050
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • springMvc学习笔记(2)
  • underscore源码剖析之整体架构
  • 创建一个Struts2项目maven 方式
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 技术攻略】php设计模式(一):简介及创建型模式
  • 简单数学运算程序(不定期更新)
  • 两列自适应布局方案整理
  • 无服务器化是企业 IT 架构的未来吗?
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • const的用法,特别是用在函数前面与后面的区别
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • ​如何使用QGIS制作三维建筑
  • #android不同版本废弃api,新api。
  • (day 12)JavaScript学习笔记(数组3)
  • (超详细)2-YOLOV5改进-添加SimAM注意力机制
  • (初研) Sentence-embedding fine-tune notebook
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (附源码)计算机毕业设计ssm电影分享网站
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (十五)使用Nexus创建Maven私服
  • (转)EXC_BREAKPOINT僵尸错误
  • ./include/caffe/util/cudnn.hpp: In function ‘const char* cudnnGetErrorString(cudnnStatus_t)’: ./incl
  • .bat批处理(九):替换带有等号=的字符串的子串
  • .NET Core MongoDB数据仓储和工作单元模式封装
  • .NET 中使用 Mutex 进行跨越进程边界的同步
  • .NET8.0 AOT 经验分享 FreeSql/FreeRedis/FreeScheduler 均已通过测试
  • .netcore 获取appsettings
  • .Net环境下的缓存技术介绍
  • @transactional 方法执行完再commit_当@Transactional遇到@CacheEvict,你的代码是不是有bug!...