Linux下搭建PHP环境-源码编译安装PHP7.2

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: Linux下搭建PHP环境-源码编译安装PHP7.2

【1】安装需要的依赖

① 安装依赖如下

yum install -y gcc gcc-c++  make zlib zlib-devel pcre pcre-devel  libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel glibc glibc-devel libtool glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers

如果使用yum安装依赖的时候提示如下:

Existing lock /var/run/yum.pid: another copy is running as pid 10292.
Another app is currently holding the yum lock; waiting for it to exit..

yum只能支持一个例程运行,所以如果有一个例程已经在运行,其他的必须等待该进程退出释放lock。出现这种情况时,可以用以下命令来恢复:

rm -f /var/run/yum.pid

② 换yum源切换为阿里云源(非必须)

还可能遇到问题类似如下:

No package gcc-c++ available.
No package gcc-g77 available.
No package flex available.
No package bison available.
No package libtool available.
No package libtool-libs available.
No package libjpeg available.

此时建议更换yum源为阿里源,过程如下:


备份本机软件源


mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup


下载新的CentOS-Base.repo 到/etc/yum.repos.d/


CentOS 5
get -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-5.repo
或者
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-5.repo
CentOS 6
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
或者
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
CentOS 7
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 
或者
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
  • 运行yum makecache生成缓存
    yum makecache

依赖安装完毕如下:


【2】编译源码进行安装

① 进入/usr/local/src目录,解压tar.gz

源码文件放在了/usr/local/src目录下。

[root@localhost ~]# cd /usr/local/src/
[root@localhost src]# ll
total 17852
-rwxr-xr-x. 1 root root 18277406 Jun 27 11:48 php-7.2.0.tar.gz
[root@localhost src]# tar -xvf php-7.2.0.tar.gz 

② 进入解压后的目录,进行configure

[root@localhost src]# ll
total 17856
drwxrwxr-x. 14 root root     4096 Nov 28  2017 php-7.2.0
-rwxr-xr-x.  1 root root 18277406 Jun 27 11:48 php-7.2.0.tar.gz
[root@localhost src]# cd php-7.2.0
[root@localhost php-7.2.0]# ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php --enable-mbstring --enable-ftp --with-gd --with-jpeg-dir=/usr --with-png-dir=/usr --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-pear --enable-sockets --with-freetype-dir=/usr --with-zlib --with-libxml-dir=/usr --with-xmlrpc --enable-zip --enable-fpm --enable-xml --enable-sockets --with-gd --with-zlib --with-iconv --enable-zip --with-freetype-dir=/usr/lib/ --enable-soap --enable-pcntl --enable-cli --with-curl

configure后如下:

此时可以看到sapi路径下生成了一些conf文件,下面配置PHP时会使用。另外,最后一行有一个警告,configure: WARNING: unrecognized options: --with-mysql说明PHP7.2已经不支持这种方式,去掉即可。php7移除了 mysql 扩展,php7仅能是用 mysqli 和 pdo_mysql(php5可以使用)。


③ make&make install

在/usr/local/src/php-7.2.0下执行编译安装命令:

make&make install

如果按照过程中出现缺少依赖等错误,使用yum界面即可:

解决完错误后重新make & make install前建议执行一下make clean。


【3】配置PHP

在之前编译的源码包中,找到 php.ini-production,复制到/usr/local/php下,并改名为php.ini:

//查看当前路径
[root@localhost php-7.2.0]# pwd
/usr/local/src/php-7.2.0
[root@localhost php-7.2.0]# cp php.ini-production /usr/local/php/php.ini

复制启动脚本:

cp ./sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm

设置php-fpm开机启动

[root@localhost init.d]# chkconfig php-fpm on
[root@localhost init.d]# chkconfig --list php-fpm
php-fpm         0:off 1:off 2:on  3:on  4:on  5:on  6:off

修改php-fpm配置文件:

cd /usr/local/php/etc
cp php-fpm.conf.default php-fpm.conf

vim php-fpm.conf

  • 去掉 pid = run/php-fpm.pid 前面的分号
  • 去掉error_log = log/php-fpm.log前的分号
  • 去掉daemonize = yes前面的分号
  cd php-fpm.d
  cp www.conf.default www.conf

vim www.conf

  • 修改user和group的用户为当前用户(也可以不改,默认会添加nobody这个用户和用户组)
[root@localhost init.d]# ps -ef|grep php
root       2988      1  0 00:38 ?        00:00:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)                                                                    
nobody     2989   2988  0 00:38 ?        00:00:00 php-fpm: pool www                                                                                                            
nobody     2990   2988  0 00:38 ?        00:00:00 php-fpm: pool www 

添加软链接

[root@localhost html]# ln -s /usr/local/php/php.ini /etc/php.ini
[root@localhost html]# ls -l /etc/php.ini 
lrwxrwxrwx. 1 root root 22 Jul  1 02:18 /etc/php.ini -> /usr/local/php/php.ini
[root@localhost init.d]# ln -s /usr/local/php/etc/php-fpm.conf  /etc/php-fpm.conf
[root@localhost init.d]# ls -l /etc/php-fpm.conf 
lrwxrwxrwx. 1 root root 31 Jul  1 00:46 /etc/php-fpm.conf -> /usr/local/php/etc/php-fpm.conf
//php 命令软连接
[root@localhost init.d]# ln -s /usr/local/php/bin/php /usr/local/bin/php
[root@localhost init.d]# ls -l /usr/local/bin/php
lrwxrwxrwx. 1 root root 22 Jul  1 00:50 /usr/local/bin/php -> /usr/local/php/bin/php
[root@localhost init.d]# php -v
PHP 7.2.0 (cli) (built: Jun 28 2019 02:49:43) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2017 Zend Technologies
//配置php-fpm软连接
[root@localhost init.d]# ln -s /etc/init.d/php-fpm /usr/local/bin/php-fpm
[root@localhost init.d]# ls -l /usr/local/bin/php-fpm 
lrwxrwxrwx. 1 root root 19 Jul  1 00:54 /usr/local/bin/php-fpm -> /etc/init.d/php-fpm
[root@localhost init.d]# php-fpm status
php-fpm (pid 2988) is running...

PHP启动/停止

/usr/local/php/sbin/php-fpm  #启动php-fpm
/etc/init.d/php-fpm start        #php-fpm启动命令
/etc/init.d/php-fpm stop         #php-fpm停止命令
/etc/init.d/php-fpm restart        #php-fpm重启命令
ps -ef | grep php 或者 ps -A | grep -i php  #查看是否已经成功启动PHP
service php-fpm status     #查看PHP运行状态
service php-fpm stop       #停止PHP服务
service php-fpm start    #查看启动PHP服务

实例:

[root@localhost init.d]# service php-fpm status
php-fpm (pid 2988) is running...
[root@localhost init.d]# service php-fpm stop
Gracefully shutting down php-fpm . done
[root@localhost init.d]# service php-fpm status
php-fpm is stopped
[root@localhost init.d]# service php-fpm start
Starting php-fpm  done
[root@localhost init.d]# service php-fpm status
php-fpm (pid 3404) is running...

【4】安装NGINX测试PHP服务


修改NGINX配置:

user  nobody nobody;
worker_processes  1;
error_log  logs/error.log  info;
pid        logs/nginx.pid;
worker_rlimit_nofile 1024;
events {
    use epoll;
    worker_connections  100;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';
    #access_log  logs/access.log  main;
    sendfile        on;
    #tcp_nopush     on;
    #keepalive_timeout  0;
    keepalive_timeout  65;
    #gzip  on;
    server {
        listen       80;
        server_name  localhost;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        location / {
            root   html;
            index  index.html index.htm index.php;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
      #取消FastCGI server部分location的注释,注意fastcgi_param行的参数,改为$document_root$fastcgi_script_name,或者使用绝对路径
        location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
    }
}

编写index.php并放到/usr/local/nginx/html下

<?php
phpinfo();
?>

为目录赋予权限

chmod 755 /usr/local/nginx/html/ -R

重启PHP与NGINX

[root@localhost html]# php-fpm restart
Gracefully shutting down php-fpm . done
Starting php-fpm  done
[root@localhost html]# service nginx restart
Stopping nginx: 
Starting nginx: 

访问http://192.168.18.128/index.php如下:


【5】部署PHP项目

① 修改NGINX配置文件

user  nobody nobody;
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80 ;
        # 域名,本地测试可以使用127.0.0.1或localhost
        server_name  localhost;
        # php项目根目录
        root         /opt/www/xc_train;
        location / {
            #  定义首页索引文件的名称
            index index.php index.html index.htm;
        }
        error_page 404 /404.html;
            location = /40x.html {
        }
        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
        # PHP 脚本请求全部转发到 FastCGI处理. 使用FastCGI协议默认配置.
        # Fastcgi服务器和程序(PHP)沟通的协议.
        location ~ .*\.php$ {
            # 设置监听端口
            fastcgi_pass   127.0.0.1:9000;
            # 设置nginx的默认首页文件
            fastcgi_index  index.php;
            # 设置脚本文件请求的路径
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            # 引入fastcgi的配置文件
            include        fastcgi_params;
        }
    }
}

② 项目拷贝到模板路径

如下图所示:

浏览器访问测试:

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
20天前
|
存储 IDE Linux
零基础保姆级教程!手把手教你免费玩转Linux CentOS安装+学习环境搭建(附避坑指南)
本文详细介绍了在VMware虚拟机中安装CentOS 6.8的全过程。首先,需确保已安装VMware并开启V-CPU虚拟化功能,可通过BIOS设置或使用LeoMoon CPU-V工具检测。接着,下载CentOS镜像文件,并在VMware中新建虚拟机,配置CPU、内存、硬盘等参数。最后,加载ISO镜像启动虚拟机,按照提示完成CentOS的安装,包括语言、键盘、存储方式、地区、密码设置及硬盘分区等步骤。安装完成后,以root用户登录即可进入系统桌面,开始学习Linux命令和操作。
92 12
零基础保姆级教程!手把手教你免费玩转Linux CentOS安装+学习环境搭建(附避坑指南)
|
10天前
|
Java Linux 应用服务中间件
在Rocky Linux 9上安装JDK并配置环境变量!
本教程介绍在Rocky Linux 9上安装JDK并配置环境变量的完整步骤。首先更新系统,清理旧版本JDK相关包及残留文件,确保环境干净。接着搜索并安装所需版本的JDK(如OpenJDK 17),验证安装是否成功。然后查找JDK安装路径,配置全局环境变量`JAVA_HOME`和`PATH`,最后验证环境变量设置。按照此流程操作,可顺利完成Java开发环境搭建,支持多版本切换(如JDK 8/11/17)。生产环境请谨慎操作,避免影响现有服务。
63 21
|
13天前
|
关系型数据库 MySQL 应用服务中间件
Linux 手动安装快速部署 LNMP 环境实战
本文详细记录了在阿里云ECS上手动搭建LNMP环境的过程,系统选用Ubuntu 24.04。主要内容包括:1) 使用`apt`安装Nginx和MySQL,并更新软件源;2) 编译安装PHP 8.4.5,配置PHP-FPM及环境路径;3) 配置MySQL root用户密码;4) 调整Nginx支持PHP解析并测试整体环境。通过此过程,重现手动配置服务器的细节,帮助熟悉各组件的安装与协同工作。
|
1天前
|
监控 Shell Linux
Android调试终极指南:ADB安装+多设备连接+ANR日志抓取全流程解析,覆盖环境变量配置/多设备调试/ANR日志分析全流程,附Win/Mac/Linux三平台解决方案
ADB(Android Debug Bridge)是安卓开发中的重要工具,用于连接电脑与安卓设备,实现文件传输、应用管理、日志抓取等功能。本文介绍了 ADB 的基本概念、安装配置及常用命令。包括:1) 基本命令如 `adb version` 和 `adb devices`;2) 权限操作如 `adb root` 和 `adb shell`;3) APK 操作如安装、卸载应用;4) 文件传输如 `adb push` 和 `adb pull`;5) 日志记录如 `adb logcat`;6) 系统信息获取如屏幕截图和录屏。通过这些功能,用户可高效调试和管理安卓设备。
|
1月前
|
关系型数据库 应用服务中间件 Linux
Linux云服务器如何搭建LNMP环境
LNMP环境是Linux系统中常用的Web服务架构,由Linux、Nginx、MySQL/MariaDB和PHP组成,适用于高效托管动态网站。本文以CentOS 7为例,详细介绍了LNMP环境的搭建步骤,包括Nginx、MariaDB和PHP的安装与配置,以及最终通过创建`index.php`文件验证环境是否成功部署。具体操作涵盖配置YUM仓库、安装服务、编辑配置文件、启动服务等关键步骤,确保用户能够顺利搭建并运行LNMP环境。
48 1
Linux云服务器如何搭建LNMP环境
|
1月前
|
缓存 Ubuntu Linux
Linux中yum、rpm、apt-get、wget的区别,yum、rpm、apt-get常用命令,CentOS、Ubuntu中安装wget
通过本文,我们详细了解了 `yum`、`rpm`、`apt-get`和 `wget`的区别、常用命令以及在CentOS和Ubuntu中安装 `wget`的方法。`yum`和 `apt-get`是高层次的包管理器,分别用于RPM系和Debian系发行版,能够自动解决依赖问题;而 `rpm`是低层次的包管理工具,适合处理单个包;`wget`则是一个功能强大的下载工具,适用于各种下载任务。在实际使用中,根据系统类型和任务需求选择合适的工具,可以大大提高工作效率和系统管理的便利性。
153 25
|
3天前
|
JavaScript Ubuntu Linux
如何在阿里云的linux上搭建Node.js编程环境?
本指南介绍如何在阿里云Linux服务器(Ubuntu/CentOS)上搭建Node.js环境,包含两种安装方式:包管理器快速安装和NVM多版本管理。同时覆盖全局npm工具配置、应用部署示例(如Express服务)、PM2持久化运行、阿里云安全组设置及外部访问验证等步骤,助你完成开发与生产环境的搭建。
|
6天前
|
存储 NoSQL Linux
微服务2——MongoDB单机部署4——Linux系统中的安装启动和连接
本节主要介绍了在Linux系统中安装、启动和连接MongoDB的详细步骤。首先从官网下载MongoDB压缩包并解压至指定目录,接着创建数据和日志存储目录,并配置`mongod.conf`文件以设定日志路径、数据存储路径及绑定IP等参数。之后通过配置文件启动MongoDB服务,并使用`mongo`命令或Compass工具进行连接测试。此外,还提供了防火墙配置建议以及服务停止的两种方法:快速关闭(直接杀死进程)和标准关闭(通过客户端命令安全关闭)。最后补充了数据损坏时的修复操作,确保数据库的稳定运行。
28 0
|
9月前
|
NoSQL Java Linux
linux 安装 neo4j简介
Neo4j是高性能NoSQL图形数据库,利用图结构存储数据。推荐使用JDK 11配合Neo4j 3.x版本。下载3.5.9版,通过`curl`命令在Linux上获取tar.gz文件,然后解压。配置`neo4j.conf`,调整内存设置,开启远程访问。执行`./bin/neo4j start`启动,通过`http://服务器IP:7474`访问,默认凭据是username: neo4j, password: neo4j,登录后应更改密码。
706 1
|
存储 缓存 Ubuntu
【嵌入式开发】 Linux Kernel 下载 配置 编译 安装 及 驱动简介(二)
【嵌入式开发】 Linux Kernel 下载 配置 编译 安装 及 驱动简介(二)
264 0

热门文章

最新文章