10-编译PHP并与nginx整合
nginx的URL重写。nginx+PHP的配置也是不可不学的部分。PHP自己手动编译,mysql就自己yum了。
yum install 安装mysql
同时进行php的编译,手动编译php
这么多的选项不要记,记也没用。你随时编译什么软件你看它的configure -help,帮助,是否包含mysql的支持?DIR是mysql的base(基础目录),php自带了原生的mysql驱动,不需要依赖于mysql的目录了。你要是想用原生的mysql驱动可以指定为mysqlnd。如果mysqli没有值默认为mysqlnd。肯定得开启mysqlnd。
还需要gd库支持,这些东西你需要什么就随时去找。死记硬背是没有任何意义的。你的gd库装在哪里?你手动装的gd那你指定,你要是没有手动编译gd那你直接先yum安装一下。
得清除yum源并且重新配置本地光盘为yum源
ttf是写字的,字体功能,gd是画图,画图上你想写字还得有字体。
安装字体相关的软件
把ttf的选项--enable-gd-native-ttf加上去php的编译命令
再看看有没有安装freetype
编译安装php的命令:./configure --prefix=/usr/local/fastphp \
--with-mysql=mysqlnd \
--enable-mysqlnd \
--with-gd \
--enable-gd-native-ttf \
--enable-gd-jis-conf
至此,把php编译在哪里,mysql要支持,gd库要支持,字体库要支持,可以动手编译了。
缺少了libxml2,编译不成功
libxml2已经安装了
yum clean all之后删除掉packagekit-media.repo就意味着yum源被重新配置了,然后yum安装libxml2-devel成功
重新编译安装php又报错了,少了png.h,png.h是头文件,头文件少了肯定是缺少了devel系列的包。没有头文件,头文件里面有一些数据结构它必须要利用。
经查资料说是libpng,devel包没安装,执行下面两条命令即可解决yum install libpng,yum install libpng-devel,然后重新编译安装就行了
又报这个错,还是重新配置yum源吧。
又来了,不断地重复yum clean all然后删除掉packagekit-media.repo以重新配置yum源。
安装libpng-devel成功了
编译安装PHP成功
试一下安装gd-devel
又来了,又是yum源的问题
重新配置yum源之后再安装,没有gd-devel的包可以安装。
编译安装php的命令应该改为:./configure --prefix=/usr/local/fastphp \
--with-mysql=mysqlnd \
--enable-mysqlnd \
--with-gd \
--enable-gd-native-ttf \
--enable-gd-jis-conv
经过漫长的等待,php终于编译成功了,编译完毕了。
php不是要以一个进程的方式在跑吗?管理php进程的那个东西叫做fastcgi_process_manager程序,它现在没有给我们产生conf。
嘴里念叨着四个选项还是少了些选项。你得说你是fpm形式,它才能以独立进程编译。
使用新的选项
修改配置php的命令:
./configure --prefix=/usr/local/fastphp \
--with-mysql=mysqlnd \
--enable-mysqlnd \
--with-gd \
--enable-gd-native-ttf \
--enable-gd-jis-conv \
--enable-fpm
必须要声明enable-fpm才可以,然后用新的选项把它configure,make&&make install
编译安装
一不小心落了一个参数,二十分钟白费了,又要重新编译。一定要在编译之前好好看看你的参数。为什么非得加fpm?因为nginx和php是平级的,都是各自独立的进程,所以要把php编译成fpm的形式。
整合php和nginx
因为nginx和php是两个独立的进程,因此它俩要通信要说话。
不灵
进行调试
修改:
为什么差一点就不行?fastcgi通俗意思是两个程序之间说话,程序之间说话肯定少不了N多变量而且是约定成俗的变量。刚才你要是不包含的话(include fastcgi_params)会少了很多东西。缺少了很多变量PHP不知道怎么解释,你得给人充分的变量才行。
PHP已经安装成功了
gd库已经安装了
mysql也支持
有mysql有gd库就已经够了,现在php已经安装完毕了。和nginx也整合完毕了。
启动mysql失败
还差一个,刚才装的只是客户端,还要装mysql-server。
mysql-server服务器和mysqld已经安装,查看mysql日志应该是磁盘空间满了,删除掉之前nginx日志切割课程的日志文件应该就可以了。经查nginx日志才147KB,看来不是大容量文件。
nginx和php是怎么配合的?
php是嵌入式嵌入apache当做它的小功能块。nginx和php的关系是平等的。php占着9000端口当做一个独立的进程在运行着。nginx收到请求发现想运行php,把你的相关请求信息原封不动地送给php。php处理完毕再返回给nginx,nginx再返回给用户。这是两者的不同之处。针对.php文件做一次转发,转发给php进程。nginx和php是相互独立的,只要碰到.php的请求直接原封不动转给php进程来请求。不等php编译好先去帮nginx配置。知道原理了又会location了你就知道该怎么做了。
配置nginx 配置nginx.conf
正则匹配,当碰到.php的时候,这件事不能由我处理了,得由php进程来处理了。php进程运行的时候在哪一个端口?咱们应该告诉人家。fastcgi就是你接收到的这一系列请求的上下文的变量,通过9000端口来处理。9000端口将是谁来运行呢?就是由php来运行。
当location(定位),当它碰到.php的这种文件的时候,它就把浏览器给它的一系列信息原封不动地给9000端口,让9000端口去处理。给9000端口去处理的时候你总得让php这个进程知道你来找a.php还是b.php,你得让人家知道你来找哪个php啊。所以cgi里面有一个参数,这是cgi标准定的,cgi里面有一个参数叫做fastcgi_script_name,就告诉了php说你去找/scripts$fastcgi_script_name(scripts目录下的fastcgi_script_name这个文件名)。scripts目录是干什么的?就是你的php放哪个目录你得说清楚。总之这个location是:现在有人要访问php文件,原封不动地把它转到9000端口,同时告诉这个9000端口我要找的是$document_root$fastcgi_script_name这个文件名来执行。也就是说9000端口的php请帮我执行$docuemnt_root$fastcgi_script_name这个php,执行结果返回给nginx。
实际上原理就是说:
10-编译PHP并与nginx整合的更多相关文章
- Nginx网络架构实战学习笔记(二):编译PHP并与nginx整合、安装ecshop、商城url重写实战
文章目录 编译PHP并与nginx整合 安装ecshop(这是一个多年前php的项目貌似,作为java开发的我暂时不去关心) 商城url重写实战 编译PHP并与nginx整合 安装mysql yum ...
- 编译php并与nginx整合
告诉 Nginx 如何处理 php 文件: nginx>vim conf/nginx.conf location ~ \.php${ ...
- FastDFS单节点安装 & FastDFS+Nginx整合
安装环境 FastDFS_v5.05.tar.gz(http://sourceforge.net/projects/fastdfs/files/) fastdfs-nginx-module ...
- Nginx 整合 FastDFS 实现文件服务器
原文地址:Nginx 整合 FastDFS 实现文件服务器 博客地址:http://www.extlight.com 一.前言 本篇衔接<FastDFS 环境搭建>内容进行讲解,上篇文章我 ...
- Nginx 整合 Lua 实现动态生成缩略图
原文地址:Nginx 整合 Lua 实现动态生成缩略图 博客地址:http://www.extlight.com 一.前提 最近在开发一个项目,涉及到缩略图的功能,常见的生成缩略图的方案有以下几个: ...
- nginx整合php+lua+oracle环境搭建
nginx整合php+lua+oracle环境搭建 标签: nginxluaoraclephplinux -- : 1473人阅读 评论() 收藏 举报 分类: 技术() 版权声明:本文为博主原创文章 ...
- nginx整合tomcat集群并做session共享----测试案例
最近出于好奇心,研究了一下tomcat集群配置,并整合nginx,实现负载均衡,session共享,写篇记录,防止遗忘.---------菜鸡的自我修炼. 说明:博主采用一个web项目同时部署到两台t ...
- ubuntu10.10编译TQ2440的x86-qtopia-2.2.0具体问题总结及原因分析
转: http://blog.csdn.net/zyxlinux888/article/details/6705481 http://www.cnblogs.com/liu_xf/archive/20 ...
- Ubuntu18.10 编译libevent出现错误: creating symbolic link XXXXXX : Operation not supported
今天在VirtualBox虚拟机下的Ubuntu18.10编译libevent源代码时,按照github中使用cmake方式: $ mkdir build && cd build $ ...
- 编译PHP并与Ngnix整合
nginx本身不能处理PHP,它只是个web服务器,当接收到请求后,如果是php请求,则发给php解释器处理,并把结果返回给客户端. nginx一般是把请求发fastcgi管理进程处理,fascgi管 ...
随机推荐
- 处理SQL Server 异常常用步骤
处理SQL Server 异常常用步骤 SQL Server常见的问题主要是SQL问题造成,常见的主要是CPU过高和阻塞. 一.CPU过高的问题 1.查询系统动态视图查询执行时间长的sql语句 WIT ...
- 在linux中使用shell来分析统计日志中的信息
在运维工作中,要经常分析后台系统的日志,通过抓取日志中的关键字信息,对抓取结果进行统计,从而为监控结果提供基础数据.下面的shell演示了如何从大量的日志中取得想要的统计结果.其中展示了各种有趣的命令 ...
- 监听Documents文件夹内文件发生改变
// 当Documents内文件发生改变时,启动计时器,每秒计算一次大小,当大小不发生改变时说明传输完毕,就开始刷新. @property (nonatomic, strong) NSTimer *t ...
- 在vue项目中正确的引入jquery和bootstrap
<script>标签引入jquery在vue脚手架里并不适用,需要利用webpack引入jquery 一.第一种方法 1:因为已经安装了vue脚手架,所以需要在webpack中全局引入jq ...
- 两种方式创建Maven项目【方式一】
经常使用maven进行项目的管理,今天整理两种方式创建maven项目及创建过程中碰到的问题怎么解决: 方式一: 1.新建maven项目,点击下一步. 2.勾选Create a simple proje ...
- poj1011---DFS
题目的大意是给了你有限个棍子以及每个棍子的长度,而且所有的棍子都是由有限个长度相同的棍子截断得到的,让你求被截棍子的最小长度 搜索剪枝神题,做的我够呛 提供一个比较好的解题报告 http://www ...
- 用xshell-ssh连接服务器被经常意外中断
xshell突然中断报错 Socket error Event: 32 Error: 10053.Connection closing...Socket close. Connection close ...
- ror中间一些单复数的规则
基于rails generate生成的东西里面,有一些单复数的规则刚开始很不理解,觉得很复杂,容易弄错,特此记录 model 实际是对于数据库数据的对象化,只体现单个对象,比如模型user有name和 ...
- nextSibling VS nextElementSibling
2. nextSibling vs nextElementSibling { //FF { 在Firefox中,link2的nextSibling并不是link3,因为两者之间有一个换行符. 这被认为 ...
- 使用Spring和Tomcat发布CXF SOAP WebService
上一节中使用代理工厂JaxWsProxyFactoryBean来发布WebService, 这种方式必须指定运行的端口,如果端口被占用,就会发布失败. cxf的WebService也可利用Tomcat ...