微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php5.6.31如何编译安装

PHP5.6.31编译安装的方法:1、添加epel源;2、安装依赖;3、下载并解压PHP5.6.31;4、修改PHP-fpm.conf;5、启动PHP-fpm即可。

本文操作环境:CentOS 7系统、PHP版本:5.6.31 Nginx版本:1.7.3 MysqL版本:5.6.62、DELL G3电脑

PHP5.6.31如何编译安装?

CentOS 7 编译安装PHP5.6.31:

服务器上已经有NginxMysqL,所以就决定采用 PHP+Nginx+MysqL这个组合,在网上翻了很多资料,由于对linux和PHP不不了解,不知道PHPNginxMysqL是怎么关联的,遇到各种原因(不是PHP装错了,就是包没装,),花了很多时间,后来部署完后发现,这三个都是单独安装(额~~难道还能一起安装),只需要PHP安装后配置下,Nginx的配置下(和PHP的关联)就直接可以跑了。至于MysqL,只要开启,PHP项目里面的连接数据库配置好了,可以直接连上去。所以本文主要针对PHP的安装。

关于NginxMysqL的安装,开始安装前需要在linux的一些开发库安装在此也不复述,参考链接里面都有。

PHP安装配置

Nginx本身不能处理PHP,它只是个WEB服务器,当接收到请求后,如果是PHP请求,则发送给PHP解释器处理,并把结果返回给客户端。

Nginx一般把请求发送给fastcgi管理进程处理,fastcgi管理进程选择cgi子进程处理结果并返回Nginx

什么是PHP-FPM?PHP-FPM是一个属于PHP的FASTCGI管理器,只用于PHP,新版本已集成PHP-fpm了,PHP-fpm提供更好的PHP进程管理,可以有效控制内存和进程,可以平滑重载PHP配置。在configure时,带-enable-fpm参数即可开启PHP-fpm,其他参数可见这里,至于什么是fastcgi,和PHP-fpm什么关系,可参考链接https://segmentfault.com/q/1010000000256516

安装前准备

添加 epel 源

rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

安装依赖

yum install gcc bison bison-devel zlib-devel libmcrypt-devel mcrypt mhash-devel openssl-devel libxml2-devel libcurl-devel bzip2-devel readline-devel libedit-devel sqlite-develyum -y install gcc gcc-c++ glibcyum -y install libmcrypt-devel mhash-devel libxslt-devel \
libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel \
zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel \
ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel \
krb5 krb5-devel libidn libidn-devel openssl openssl-devel

下载PHP-5.6.31

1)将安装包解压到 /usr/local/src

cd /usr/local/srctar -zvxf PHP-5.6.31.tar.gz

2)进入安装目录,进行安装

cd PHP-5.6.31./configure --prefix=/usr/local/PHP --enable-fpm --with-mcrypt \--enable-mbstring --enable-pdo --with-curl --disable-debug  --disable-rpath \--enable-inline-optimization --with-bz2  --with-zlib --enable-sockets \--enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex \--with-mhash --enable-zip --with-pcre-regex --with-MysqL --with-MysqLi \--with-gd --with-jpeg-dir --with-freetype-dir --enable-calendarmake && make install
CentOS 中下载PHP: wget http://PHP.net/get/PHP-5.6.30.tar.gz/from/this/mirror

以上就完成了PHP-fpm的安装,安装过程会花一些时间。

关于PHP配置

1、为PHP提供配置文件

cp PHP.ini-production /usr/local/PHP/etc/PHP.ini

注意:PHP.ini-production 还是在刚才/usr/local/src/PHP-5.6.31 目录下

2、为PHP-fpm提供配置文件

cd /usr/local/PHPcp etc/PHP-fpm.conf.default etc/PHP-fpm.conf
vim etc/PHP-fpm.conf

修改PHP-fpm.conf

user = www
group = www

如果www用户不存在,那么先添加www用户认运行用户nobody)

groupadd www
useradd -g www www

如果没有配置这一步,浏览器打开 PHP 文件会报错

“The page you are looking for is temporarily unavailable. Please try again later”

修改

pm.max_children = 150
pm.start_servers = 8
pm.min_spare_servers = 5
pm.max_spare_servers = 10
pid = /usr/local/PHP/var/run/PHP-fpm.pid

3、启动PHP-fpm

执行

/usr/local/PHP/sbin/PHP-fpm

使用如下命令来验正(如果此命令输出有中几个PHP-fpm进程就说明启动成功了):

ps aux | grep PHP-fpm

结果如下图:

3、NginxPHP-fpm整合

编辑Nginx配置文件

vim /usr/local/Nginx/conf/Nginx.conf

初始内容如下:

# Nginx运行的用户名
user Nginx;
# Nginx启动进程,通常设置成和cpu数量相等,这里为自动
worker_processes auto;

# errorlog文件位置
error_log /var/log/Nginx/error.log;
# pid文件地址,记录了Nginx的pid,方便进程管理
pid /run/Nginx.pid;

# Load dynamic modules. See /usr/share/Nginx/README.dynamic.
# 用来加载其他动态模块的配置
include /usr/share/Nginx/modules/*.conf;

# 工作模式和连接数上限
events {
    # 每个worker_processes的最大并发链接数
    # 并发总数:worker_processes*worker_connections
    worker_connections 1024;
}

# 与提供http服务相关的一些配置参数类似的还有mail
http {
    # 设置日志的格式
    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记录访问的用户页面、浏览器、ip和其他的访问信息
    access_log  /var/log/Nginx/access.log  main;

    # 这部分下面会单独解释
    # 设置Nginx是否使用sendfile函数输出文件
    sendfile            on;
    # 数据包最大时发包(使用Nagle算法)
    tcp_nopush          on;
    # 立刻发送数据包(禁用Nagle算法)
    tcp_nodelay         on;
    # 链接超时时间
    keepalive_timeout   65;
    # 这个我也不清楚...
    types_hash_max_size 2048;

    # 引入文件扩展名与文件类型映射表
    include             /etc/Nginx/mime.types;
    # 文件类型
    default_type        application/octet-stream;

    # Load modular configuration files from the /etc/Nginx/conf.d directory.
    # See http://Nginx.org/en/docs/ngx_core_module.html#include
    # for more @R_455_4045@ion.
    include /etc/Nginx/conf.d/*.conf;

    # http服务上支持若干虚拟主机。
    # 每个虚拟主机一个对应的server配置项
    # 配置项里面包含该虚拟主机相关的配置。
    server {
        # 端口
        listen       80 default_server;
        listen       [::]:80 default_server;
        # 访问的域名
        server_name  _;
        # 认网站根目录(www目录)
        root         /usr/share/Nginx/html;

        # Load configuration files for the default server block.

        include /etc/Nginx/default.d/*.conf;

        # 认请求
        location / {
        }

        # 错误页(404)
        error_page 404 /404.html;
            location = /40x.html {
        }

        # 错误页(50X)
        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }
}

我们要更改配置的只需要server部分就可以了。进入vim编辑模式,或者用FlashFXP将配置文件共享到桌面来更改即可。

只需要改动三处即可

server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        # 这里改动了,也可以写你的域名,我用的是IP地址
        server_name  192.168.0.222;
        root         /usr/share/Nginx/html;

        # Load configuration files for the default server block.
        include /etc/Nginx/default.d/*.conf;

        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,Python)沟通的协议.
        location ~ \.PHP$ {
            # 设置监听端口
            fastcgi_pass   127.0.0.1:9000;
            # 设置脚本文件请求的路径
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            # 引入fastcgi的配置文件
            include        fastcgi_params;
        }
    }

重启Nginx服务器

Nginx -s reload

此时,NginxPHP已经联合配置完成了,但是我们并不知道实际配置效果如何,这个时候我们可以写一个小的测试脚本来验证一下。
之前提过了/usr/share/Nginx/html是Nginx的网站根目录,我们可以在此目录下建立一个PHP测试脚本。

# PHPinfo.PHP是我要建立的文件

vi /usr/share/Nginx/html/PHPinfo.PHP

打开编辑器后,在里面输入

<?PHP
PHPinfo();// 测试信息?>

保存退出后,在浏览器中输入http://192.168.0.222/PHPinfo.PHP,我这里的ip是192.168.0.222,你换成你们自己的即可。如图出现类似如下界面:

NginxPHP已经配置完成了。

4、安装过程出错原因

我按流程安装时,出现了一个错误:mcrypt.h not found. Please reinstall libmcrypt

是因为PHP-mcrypt libmcrypt libmcrypt-devel这些包没安装,出现的错误一般都是缺少库或者包,安装即可。

此时PHP已经配置完成,祝君安装顺利。顺便提前祝大家新年快乐!

推荐学习:《PHP教程

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐