在app-node1 / app-node2 服务器下离线安装php(模拟内网环境)

173 阅读1分钟

一、挂载 yum本地源

ps: 因为是模拟内网服务器(很多时候有这种情况 / 当然 如果是云服务器直接  yum 安装即可)

1.准备一个同系统版本一样的镜像

比如 CentOS-7-x86_64-DVD-2009.iso

2.挂载一个跟服务器系统同一版本的centOS镜像

  #上传 CentOS-7-x86_64-DVD-2009.iso 到 服务器的 /opt 目录下
  #创建挂载目录: 
  mkdir /media/CentOS7
  #挂载镜像文件
  mount -o loop /opt/CentOS-7-x86_64-DVD-2009.iso /media/CentOS7/
  #配置Yum源  
  # 将原有的源进行备份
  mkdir /etc/yum.repos.back.d 
  cd /etc/yum.repos.d/
  mv * /etc/yum.repos.back.d/
  # 创建本地源配置文件
  vim /etc/yum.repos.d/local.repo
  
  #将此代码复制到 local.repo中 保存之后退出 
  [c7-media] 
  name=CentOS-$releasever - Media
  baseurl=file:///media/CentOS7 
  gpgcheck=0 
  enabled=1
  
  #清除yum缓存
  yum clean all
  #建立新的缓存
  yum makecache
  #测试是否生效
  yum  install telnet
  

3.安装gcc gcc-c++

yum install gcc 
yum install gcc-c++
#查看gcc 版本
gcc -v
#查看gcc-c++版本
g++ -v

4.安装php依赖

yum -y install libxml2 
yum -y install libxml2-devel 
yum install sqlite-devel 
yum install openssl-devel

5.下载php并上传到 /root 文件下 下载链接
www.php.net/downloads

image.png

6.解压php编译包

tar -zxvf php-7.4.30.tar.gz

cd php-7.4.30

7.编译php到/usr/local/nginx

# 仅仅开启了openssl扩展,其他的扩展如果需要可以查看  ·php安装扩展的文章· 

./configure \ 
--prefix=/usr/local/php \ 
--with-config-file-path=/usr/local/php/etc \ 
--bindir=/usr/local/php/bin \ 
--sbindir=/usr/local/php/sbin \ 
--includedir=/usr/local/php/include \ 
--libdir=/usr/local/php/lib \ 
--mandir=/usr/local/php/man \ 
--with-openssl \ 
--enable-fpm

8. make 编译 及 添加环境变量

make && make install

#添加环境变量
vim ~/.bash_profile

export PATH=$PATH:/usr/local/php/bin
export PATH=$PATH:/usr/local/php/sbin

#重新加载让环境变量生效
source ~/.bash_profile

#查看php版本

php -v

#查看php安装的扩展
php -m

#启动php-fpm
php-fpm

#查看php-fpm是否在运行
ps -ef|grep php-fpm

#重启php-fpm

# 1.INT, TERM 立刻终止 
# 2.QUIT 平滑终止 
# 3.USR1 重新打开日志文件 
# 4.USR2 平滑重载所有worker进程并重新载入配置和二进制模块 

kill -USR2 42891

也许会遇到的问题 phpinfo 中 php.ini 找不到

Loaded Configuration File (none) 表明没有载入php.ini文件 
而/usr/local/php/etc/php.ini这个文件确实是存在的。

解决:

#用strace去跟踪一下
strace /usr/local/php7/sbin/php-fpm -i 2>1.log

image.png

它会去找 /usr/local/lib/php.ini ,但是编译的时候是有设置
--with-config-file-path=/usr/local/php/etc 。
已经找到具体路径了,到时候重新编译一下看看)