1、编译安装PHP7.2.0

去官网下载安装包:http://php.net/downloads.php ,完成之后,上传至服务器,并释放压缩包

.tar.gz
cd php-

因为我们需要编译安装,所以服务器应该有gcc和g++环境,并且在进行参数配置之前,

如果没有libxml2和libxml2-devel会报错,所以应该更新libxml2并安装libxml2-devel:

yum -y install libxml2 libxml2-devel
yum -y install gcc

补充,因为不同的操作系统环境,系统安装开发环境包的完整程度也不相同,所以建议安装操作系统的时候做必要选择

也可以统一执行一遍所有的命令,将没有安装的组件安装好

如果已经安装了可能会进行升级,版本完全一致则不会进行任何操作,命令除上面几个之外,汇总如下:

yum -y install openssl openssl-devel
yum -y install curl curl-devel
yum -y install libjpeg libjpeg-devel
yum -y install libpng libpng-devel
yum -y install freetype freetype-devel
yum -y install pcre pcre-devel
yum -y install libxslt libxslt-devel
yum -y install bzip2bzip2-devel

以上这些包基本上够用了,如果发现问题再补充,安装完成之后,执行配置:

./configure --prefix=/usr/local/php --with-curl --with-freetype-dir --with-gd --with-gettext --with-iconv-dir --with-kerberos --with-libdir=lib64 --with-libxml-dir --with-mysqli --with-openssl --with-pcre-regex --with-pdo-mysql --with-pdo-sqlite --with-pear --with-png-dir --with-jpeg-dir --with-xmlrpc --with-xsl --with-zlib --with-bz2 --with-mhash --enable-fpm --enable-bcmath --enable-libxml --enable-inline-optimization --enable-mbregex --enable-mbstring --enable-opcache --enable-pcntl --enable-shmop --enable-soap --enable-sockets --enable-sysvsem --enable-sysvshm --enable-xml --enable-zip

实际上这里的配置项比上述还多,可以使用 ./configure --help   命令查看所有选项

这里注意在php7中--with-mysql原生支持已经不存在了,操作都变成mysqli或者pdo了

以上这些选项在正常的php开发中完全够用了,后期如果需要,可以选择手动开启相应的模块。

然后执行编译:

make

编译时间可能会有点长,编译完成之后,执行安装:

make install

php的默认安装位置上面已经指定为/usr/local/php,接下来配置相应的文件:

cp php.ini-development /usr/local/php/lib/php.ini
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
cp sapi/fpm/php-fpm /usr/local/bin

然后设置php.ini,命令 vim /usr/local/php/lib/php.ini  ,找到cgi.fix_pathinfo(769行),该项默认被注释且值为1,

根据官方文档的说明,为了当文件不存在时,阻止Nginx将请求发送到后端的PHP-FPM模块,从而避免恶意脚本注入的攻击,

所以此项应该去掉注释并设置为0 ,设置完毕保存并退出

另外注意一个地方就是php.ini配置文件的位置可以在编译前配置参数中设置,

编译参数可以写成:--with-config-file-path=/usr/local/php ,这样的话php就会去指定的目录下读取php.ini配置文件

如果不加这个参数默认位置就是php安装目录下的lib目录,具体也可以在phpinfo()输出界面查看,

如果php.ini放到其他位置,php读取不到,那么所有的配置修改后都是不生效的,这点要注意

上面的php.ini保存退出之后,就创建web用户:

groupadd www-data
useradd -g www-data www-data

使用: vim /usr/local/php/etc/php-fpm.conf   打开配置文件,翻到php-fpm.conf最后一行

只看红框内这句话:在当前编辑的文件内,将php-fpm.d目录下所有的conf文件全部include进来

注意:这个路径内,有个NONE。但你如果是按照上面的步骤走下来的话,这里应该已被自动补全,如下图所示

这是因为我们在前面编译时,已经在--prefix选项中配置了该路径

当然如果这里仍然显示NONE的话,可以自行百度解决,接着我们下一步

默认情况下etc/php-fpm.d/下有一个名为www.conf.defalut的配置用户的文件,执行下面命令复制一个新文件并且打开:

cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
vim /usr/local/php/etc/php-fpm.d/www.conf

默认user和group的设置为nobody,将其改为www-data (23行和24行)

修改完成之后,保存并退出,然后执行以下命令启动php-fpm服务:

/usr/local/bin/php-fpm

启动完毕之后,php-fpm服务默认使用9000端口,使用 netstat -tln | grep 9000  可以查看端口使用情况:

显示9000端口正常使用,说明php-fpm服务启动成功。

2、编译安装Nginx1.12.2

去官网下载安装包:http://nginx.org/en/download.html ,完成之后,上传至服务器并解压

.tar.gz
cd nginx-

然后安装必备依赖包

yum install -y gcc gcc-c++ 
yum install -y zlib zlib-devel
yum install -y pcre pcre-devel yum install -y openssl openssl-devel

执行配置

第一条支持HTTP,第二条支持HTTPS。后面with-pcre的路径,是你下载的安装包的地址,注意!

./configure --prefix=/usr/local/nginx   --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-pcre --with-http_realip_module --with-http_sub_module

./configure --prefix=/usr/local/nginx   --with-http_ssl_module --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-pcre --with-http_realip_module --with-http_sub_module

 

编译

make

安装

make install

执行 vim /usr/local/nginx/conf/nginx.conf   编辑nginx配置文件:

首先第1行,默认是 #user nobody

这里要去掉注释改为user www-data,或者user www-data www-data,表示nginx服务器的权限为www-data

(这个用户名必须和上面配置的PHP一样,切记切记)

然后找到http->server->location块(43行),在index的后面,追加index.php,让nginx服务器默认支持index.php为首页:

然后配置.php请求被传送到后端的php-fpm模块(65行),默认这里是被注释的,此时去掉注释并修改为以下内容

这里面很多都是默认的,root是配置php程序放置的根目录,主要就是把fastcgi_param中的/scripts改为$document_root

修改完这些保存并退出,运行nginx:

/usr/local/nginx/nginx 

接下来在nginx下的html目录下创建phpinfo.php:

<?php
    phpinfo();

然后打开浏览器输入对应的地址进行访问,大功告成~

本文整理自这两条链接,谢谢郭老板:

https://www.cnblogs.com/freeweb/p/5425554.html

http://designcoding.com/centos7-install-nginx-1-12-2

最新文章

  1. qgis自定义坐标系与qgis.db问题
  2. 论文阅读(Chenyi Chen——【ACCV2016】R-CNN for Small Object Detection)
  3. Beta冲刺---Day2
  4. Linux集群配置ntp时间同步服务
  5. [IIS]在CMD中IIS的使用
  6. 我的Fitbit Force手环使用体验
  7. HDU 2084 数塔 (DP)
  8. AOJ 0118 深度优先搜索
  9. iOS 唯一设备号
  10. hdu 4614 Vases and Flowers (二分 线段树)
  11. 客户端socket调用
  12. iOS 提交审核报错 ERROR ITMS-90087解决办法
  13. 洛谷P1309 瑞士轮(归并排序)
  14. oracle报错ORA-01653 dba_free_space中没有该表空间
  15. 2.pandas数据清洗
  16. BZOJ1024:[SCOI2009]生日快乐(DFS)
  17. 关于Mac上的开发工具
  18. linux wa%过高,iostat查看io状况
  19. 【Python】Python的time和datetime模块
  20. luogu P2365 任务安排(FJOI2019 batch)

热门文章

  1. 在Windows上安装Git
  2. Laravel 框架 基础(一)
  3. 【ASP.NET MVC系列】浅谈ASP.NET MVC八大类扩展(上篇)
  4. 设计模式之策略模式(Strategy Pattern)
  5. 功能式Python中的探索性数据分析
  6. mysql为何不支持开窗函数?
  7. kvm常见故障及解决
  8. SSM-Spring-10:Spring中cglib动态代理
  9. 在webpack里使用jquery.mCustomScrollbar插件
  10. Libevent教程001: 简介与配置