之前写过几次,使用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服务

# 添加启动文件
  1. cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
  2.  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进程并重新载入配置和二进制模块

参考:

2.宝塔

一键傻瓜式安装, 提供可视化界面,方便操作与维护

3.lnmp

一键安装包方式安装

4.OneinStack (https://oneinstack.com/)

自动安装

工具目录: ~/oneinstack

1)重置MySQL密码reset_db_root_password.sh执行密码修改

5.docker

PHP之环境搭建(php7.4 + php8.1)的更多相关文章

  1. LNMP环境搭建(<=PHP7.2)

    目录 准备工作 安装wget 安装net-tools 安装vim 配置显示行号 关闭防火墙 安装Nginx 安装依赖 编译安装Nginx 配置环境变量 Systemd管理 安装MySQL 安装依赖 下 ...

  2. LNMP环境搭建(PHP7.4.0)

    目录 准备工作 安装wget 安装net-tools 安装vim 配置显示行号 关闭防火墙 安装Nginx 安装依赖 编译安装Nginx 配置环境变量 Systemd管理 安装MySQL 安装依赖 下 ...

  3. Windows10搭建PHP7开发环境

    原文:Windows10搭建PHP7开发环境 3年前写了一篇<Windows下搭建PHP开发环境>之后就再也没有碰过PHP了,最近新发布了PHP7然后回去看了一下之前写的文章,发现很多配置 ...

  4. PHP7运行环境搭建(Windows7)

    注:本文来源于<    PHP7运行环境搭建(Windows7)   > php7号称能直追facebook的HHVM,为了体验一把传说中的高性能,我特意在本地电脑上尝试着安装了php7, ...

  5. CentOS 7 yum nginx MySQL PHP7 简易环境搭建(精)

    用centos自带的yum源来安装nginx,mysql和php,超级方便,省去编译的麻烦,省去自己配置的麻烦,还能节省非常多的时间. 我们先把yum源换成国内的阿里云镜像源(当然不换也可以),先备份 ...

  6. WIN7 环境下搭建 PHP7(64 位)操作步骤

    WIN7 环境下搭建 PHP7(64 位)操作步骤 一.安装与配置 Apache 1.下载 Apache下载地址:https://www.apachelounge.com/download/ 2.安装 ...

  7. 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 ...

  8. 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 ...

  9. 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虚拟机安装说明: ...

  10. DVWA安装,ALMP环境搭建以及php版本转换

    前言 本文记录DVWA(Damn Vulberability Web App)在虚拟机中安装配置,包括ALMP环境的搭建和php版本的转换. 目录 2. ALMP环境搭建 3. php版本切换 一. ...

随机推荐

  1. vue导出word文档

    具体需求 在我的疫情可视化项目中有一个功能需要导出word文档,在页面点击按钮后处理数据生成word文件,然后自动下载文档. 实现步骤 多番查询后发现前端导出word,使用docxtemplater较 ...

  2. C++源码中司空见惯的PIMPL是什么?

    前言: C++源码中司空见惯的PIMPL是什么?用原始指针.std::unique_ptr和std::shared_ptr指向Implementation,会有什么不同?优缺点是什么?读完这篇文章,相 ...

  3. EF Core – 乐观并发

    前言 之前写过 EF Core 悲观并发, 这篇主要讲一下乐观并发. 乐观并发的机制可以看这篇. Why Need This? 如果你用 EF Core 做数据管理, 建议你每个 Entity 都配置 ...

  4. Figma 学习笔记 – Auto Layout

    用途 Auto Layout 有点像 CSS 的 Flex, 它还带有 responsive 的概念.使用它以后可以替代掉不少 constraints 的写法. 用法 一个 parent 抱着多个 c ...

  5. Linux板子与ubuntu交互,NFS配置

    第0步:保证你的ubuntu能上网,可以选择NAT方式让ubuntu上网. 第一步:安装NFS服务 sudo apt-get install nfs-kernel-server portmap 第二步 ...

  6. Windows 缺失Qt5.xxxx.dll,无法继续执行代码

    事件起因: 客户自行安装完Autodesk系软件后, 软件一直弹窗报错 AutodDesktopApp.exe - 系统错误 Windows软件报错:由于找不到Qt5.xxxx.dll,无法继续执行代 ...

  7. RTPS代理与转发服务

    Proxy介绍 利用libevent实现网络连接和线程池.通过tcp连接的方式实现rtsp消息转发,再通过udp连接进行rtp与rtcp转发.报文解析使用到了Qt库.请尽量使用qmake进行编译.源码 ...

  8. EAS(能量感知调度)绿色节能调度器

    能量感知调度(EAS)使调度程序能够预测其决策对 CPU 消耗的电量的影响. EAS 依赖于 CPU 的能量模型 (EM) 来为每个任务选择省电的 CPU,同时要求对执行任务的吞吐量的影响最小. EA ...

  9. ArgoWorkflow教程(六)---无缝实现步骤间参数传递

    之前我们分析了,Workflow.WorkflowTemplate .template 3 者之间如何传递参数. 本文主要分析同一个 Workflow 中的不同 step 之间实现参数传递,比如将上一 ...

  10. 『玩转Streamlit』--环境配置

    尽管Streamlit的使用非常直观,但正确的环境配置对于充分发挥其潜力仍然至关重要. 本篇将介绍如何从头开始配置Streamlit环境,以及Streamlit开发过程中常用的几个命令. 最后通过一个 ...