PHP之环境搭建(php7.4 + php8.1)
之前写过几次,使用lnmp,宝塔,源码编译等方式来进行PHP环境的搭建, 随着接触的越来越多, 这里做一个总结, 常用的搭建方式
1.编译安装
之前写个几次,可以参考之前的
这次记录下多个版本PHP的安装 (php7.4 + php8.1)
1)安装php7.4
安装编译环境
yum -y install gcc gcc-c++ autoconf automake build-essential zlib zlib-devel openssl openssl-devel pcre pcre-devel
a)下载并解压
cd /usr/local/src/
wget https://www.php.net/distributions/php-7.4.32.tar.gz tar -zxvf php-7.4.32.tar.gz
b)编译并安装
cd php-7.4.32/ ./configure --prefix=/usr/local/php74 --with-mysql --with-mysqli --with-pdo_mysql --with-iconv-dir --with-zlib --with-libxml-dir --enable-xml --with-curl --enable-fpm --enable-mbstring --with-gd --with-openssl --with-mhash --enable-sockets --with-xmlrpc --enable-zip --enable-soap --enable-bcmath
make && make install -j 4
c)添加全局变量
vim /etc/bashrc alias php7=/usr/local/php74/bin/php
alias phpfpm7=/usr/local/php74/sbin/php-fpm # 生效
source /etc/bashrc
d)查看加载的配置文件,并设置
php7 -i|grep php.ini cp /usr/local/src/php-7.4.32/php.ini-development /usr/local/php74/lib/php.ini
e)添加nginx配置
server {
listen 8041;
server_name 127.0.0.1;
root /data/www/lx;
access_log /data/log/nginx/8041_access.log main;
error_log /data/log/nginx/8041_error.log warn;
location / {
#try_files $uri $uri/ /index.php?$query_string;
index index.html index.htm;
}
#location ~ .*\.(php|php5)?$ {
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;
}
}
f)扩展安装
1.进入源码包gd库目录
cd /usr/local/download/php-7.4.11/ext/gd #这里是我的目录,需要改成你自己的目录 2.生成configure
/usr/local/php/bin/phpize
#这里是我的目录,需要改成你自己的目录 3)编译
./configure --with-php-config=/usr/local/php/bin/php-config --with-jpeg-dir=/usr/local/jpeg/ 4)安装
make&&make install 5)添加配置php.ini
extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20190902/gd.so 查看安装的扩展文件:
/usr/local/php/include/php/ext
g)设置开机启动
vim /etc/rc.d/rc.local
添加:
/usr/local/php/sbin/php-fpm
常见问题:
1.FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 127.0.0.1, server: 127.0.0.1, request: "GET /index.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "127.0.0.1"
原因: 默认PHP配置中的fastcgi_param配置fastcgi_param配置,这个地方默认的是/Scripts$fastcgi_script_name
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
2.权限不足情况, 修改PHP的进程使用的用户
groupadd www useradd -g www -s /sbin/nologin www
vim /usr/local/php74/etc/php-fpm.d/www.conf
user = www
group = www
2)安装PHP8.1
安装依赖
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 sqlite-devel
wget https://www.php.net/distributions/php-8.1.11.tar.gz
tar -zxvf php-8.1.11.tar.gz cd php-8.1.11/
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php --enable-mbstring --enable-ftp --enable-gd --enable-gd-jis-conv --enable-mysqlnd --enable-pdo --enable-sockets --enable-fpm --enable-xml --enable-soap --enable-pcntl --enable-cli --with-openssl --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --enable-mysqlnd-compression-support --with-pear --with-zlib --with-iconv --with-curl --enable-bcmath make && make install -j 4 source /etc/bashrc
alias php=/usr/local/php/bin/php
alias phpfpm=/usr/local/php/sbin/php-fpm php -i|grep php.ini cp /usr/local/src/php-8.1.11/php.ini-production php.ini 生产环境
or
cp /usr/local/src/php-8.1.11/php.ini-development php.ini 开发环境 cp php-fpm.conf.default php-fpm.conf
cp php-fpm.d/www.conf.default php-fpm.d/www.conf
#Linux创建相关用户
groupadd www
useradd -g www www
groupadd nginx
useradd -g nginx nginx
# 使用Unix的方式链接
修改配置文件 www.conf
listen = /var/run/php-fpm/php7-fpm.sock user www ;
group www; listen.owner = nginx
listen.group = nginx
listen.mode = 0660
# nginx
location ~ \.php$ {
#fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php-fpm/php7-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
注: php-fpm服务启动使用www用户, Nginx服务启动使用Nginx服务
# 添加启动文件
- cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
- chmod +x /etc/init.d/php-fpm
# 添加权限, 指定配置文件
vim /etc/init.d/php-fpm
php_fpm_INI=${prefix}/etc/php.ini
php_opts="--fpm-config $php_fpm_CONF --pid $php_fpm_PID -c $php_fpm_INI -R"
# 将user group 改成 root
vim /usr/local/php/etc/php-fpm.d/www.conf
user = root
group = root
# 重新加载和重启php-fpm服务
systemctl daemon-reload
systemctl restart php-fpm
php-pm 相关配置项修改
/usr/local/php/etc/php-fpm.conf 配置错误日志:
error_log = /usr/local/php/var/php-fpm.log
配置pid文件:
pid = /usr/local/php/var/run/php-fpm.pid
更多操作
PHP5.33.之前
/usr/local/php/sbin/php-fpm{start|stop|quit|restart|reload|logrotate} --start 启动php的fastcgi进程 --stop 强制终止php的fastcgi进程 --quit 平滑终止php的fastcgi进程 --restart 重启php的fastcgi进程 --reload 重新平滑加载php的php.ini --logrotate 重新启用log文件 而新版本的操作变化了,因为直接操作进程就可以了。下面来看下指令: kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid` INT, TERM 立刻终止 QUIT 平滑终止 USR1 重新打开日志文件 USR2 平滑重载所有worker进程并重新载入配置和二进制模块
参考:
- https://juejin.cn/post/7135978589152870436
- https://www.php.net/manual/zh/install.unix.nginx.php
2.宝塔
一键傻瓜式安装, 提供可视化界面,方便操作与维护
3.lnmp
一键安装包方式安装
4.OneinStack (https://oneinstack.com/)


自动安装
工具目录: ~/oneinstack
1)重置MySQL密码reset_db_root_password.sh执行密码修改
5.docker
PHP之环境搭建(php7.4 + php8.1)的更多相关文章
- LNMP环境搭建(<=PHP7.2)
目录 准备工作 安装wget 安装net-tools 安装vim 配置显示行号 关闭防火墙 安装Nginx 安装依赖 编译安装Nginx 配置环境变量 Systemd管理 安装MySQL 安装依赖 下 ...
- LNMP环境搭建(PHP7.4.0)
目录 准备工作 安装wget 安装net-tools 安装vim 配置显示行号 关闭防火墙 安装Nginx 安装依赖 编译安装Nginx 配置环境变量 Systemd管理 安装MySQL 安装依赖 下 ...
- Windows10搭建PHP7开发环境
原文:Windows10搭建PHP7开发环境 3年前写了一篇<Windows下搭建PHP开发环境>之后就再也没有碰过PHP了,最近新发布了PHP7然后回去看了一下之前写的文章,发现很多配置 ...
- PHP7运行环境搭建(Windows7)
注:本文来源于< PHP7运行环境搭建(Windows7) > php7号称能直追facebook的HHVM,为了体验一把传说中的高性能,我特意在本地电脑上尝试着安装了php7, ...
- CentOS 7 yum nginx MySQL PHP7 简易环境搭建(精)
用centos自带的yum源来安装nginx,mysql和php,超级方便,省去编译的麻烦,省去自己配置的麻烦,还能节省非常多的时间. 我们先把yum源换成国内的阿里云镜像源(当然不换也可以),先备份 ...
- WIN7 环境下搭建 PHP7(64 位)操作步骤
WIN7 环境下搭建 PHP7(64 位)操作步骤 一.安装与配置 Apache 1.下载 Apache下载地址:https://www.apachelounge.com/download/ 2.安装 ...
- lnmp环境搭建(centos6.9+mysql5.7+php7.1+nginx1.10)
安装前准备:CentOS 6.9 64位 最小化安装 yum install -y make gcc gcc-c++ perl zlib-devel libaio libpng libpng-deve ...
- lamp环境搭建(centos6.9+apache2.4+mysql5.7+php7.1)
lamp环境搭建(centos6.9+apache2.4+mysql5.7+php7.1) 安装前准备:CentOS 6.9 64位 最小化安装 yum install -y make gcc gcc ...
- CentOS7.3+MySQL5.7+Apache2.4+PHP7.1+phpMyAdmin4.7+JDK1.8+SVN1.6+Jenkins2.1环境搭建
CentOS7.3+MySQL5.7+Apache2.4+PHP7.1+phpMyAdmin4.7+JDK1.8+SVN1.6+Jenkins2.1环境搭建 1.安装CentOS7.3虚拟机安装说明: ...
- DVWA安装,ALMP环境搭建以及php版本转换
前言 本文记录DVWA(Damn Vulberability Web App)在虚拟机中安装配置,包括ALMP环境的搭建和php版本的转换. 目录 2. ALMP环境搭建 3. php版本切换 一. ...
随机推荐
- vue导出word文档
具体需求 在我的疫情可视化项目中有一个功能需要导出word文档,在页面点击按钮后处理数据生成word文件,然后自动下载文档. 实现步骤 多番查询后发现前端导出word,使用docxtemplater较 ...
- C++源码中司空见惯的PIMPL是什么?
前言: C++源码中司空见惯的PIMPL是什么?用原始指针.std::unique_ptr和std::shared_ptr指向Implementation,会有什么不同?优缺点是什么?读完这篇文章,相 ...
- EF Core – 乐观并发
前言 之前写过 EF Core 悲观并发, 这篇主要讲一下乐观并发. 乐观并发的机制可以看这篇. Why Need This? 如果你用 EF Core 做数据管理, 建议你每个 Entity 都配置 ...
- Figma 学习笔记 – Auto Layout
用途 Auto Layout 有点像 CSS 的 Flex, 它还带有 responsive 的概念.使用它以后可以替代掉不少 constraints 的写法. 用法 一个 parent 抱着多个 c ...
- Linux板子与ubuntu交互,NFS配置
第0步:保证你的ubuntu能上网,可以选择NAT方式让ubuntu上网. 第一步:安装NFS服务 sudo apt-get install nfs-kernel-server portmap 第二步 ...
- Windows 缺失Qt5.xxxx.dll,无法继续执行代码
事件起因: 客户自行安装完Autodesk系软件后, 软件一直弹窗报错 AutodDesktopApp.exe - 系统错误 Windows软件报错:由于找不到Qt5.xxxx.dll,无法继续执行代 ...
- RTPS代理与转发服务
Proxy介绍 利用libevent实现网络连接和线程池.通过tcp连接的方式实现rtsp消息转发,再通过udp连接进行rtp与rtcp转发.报文解析使用到了Qt库.请尽量使用qmake进行编译.源码 ...
- EAS(能量感知调度)绿色节能调度器
能量感知调度(EAS)使调度程序能够预测其决策对 CPU 消耗的电量的影响. EAS 依赖于 CPU 的能量模型 (EM) 来为每个任务选择省电的 CPU,同时要求对执行任务的吞吐量的影响最小. EA ...
- ArgoWorkflow教程(六)---无缝实现步骤间参数传递
之前我们分析了,Workflow.WorkflowTemplate .template 3 者之间如何传递参数. 本文主要分析同一个 Workflow 中的不同 step 之间实现参数传递,比如将上一 ...
- 『玩转Streamlit』--环境配置
尽管Streamlit的使用非常直观,但正确的环境配置对于充分发挥其潜力仍然至关重要. 本篇将介绍如何从头开始配置Streamlit环境,以及Streamlit开发过程中常用的几个命令. 最后通过一个 ...