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管 ...
随机推荐
- 随想录(skyeye中的soc仿真)
[ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 想学好soc,再怎么看芯片手册和linux kernel都不为过.但是要学习好kernel,那再 ...
- Visual Studio编辑类模板的位置
VS的版本一直在不断更新,每个版本的安装目录都是有一点变化,所以模板文件的位置也是不一样的,下面是从StackOverflow看到的一个大合集,转发记录一下: Extract, edit and re ...
- 2018下C程序设计(上)第0次作业
1.翻阅邹欣老师博客关于师生关系博客,并回答下列问题: (1)大学和高中最大的不同是什么?请看大学理想的师生关系是?有何感想? 我认为大学和高中最大的不同在于我们(包括老师)对学习的态度.在高中,学生 ...
- 前端之HTML补充
一.列表 (1).无序列表<ul> <body> <ul type="disc"> <li>属性一</li> <l ...
- POJ1251 Jungle Roads
解题思路:看懂题意是关键,Kruskal算法,最小生成树模板. 上代码: #include<cstdio> #include<cstring> #include<algo ...
- #503. 「LibreOJ β Round」ZQC 的课堂 容斥原理+Treap
题目: 题解: 比较容易发现 : \(x,y\) 的贡献是独立的. 所以可以分开考虑. 假设我们考虑 \(x\).向量在 \(x\) 方向的投影依次是 : \(\{a_1,a_2, ... ,a_n\ ...
- WPF 自定义绕圈进度条(转)
在设计界面时,有时会遇到进度条,本次讲解如何设计自定义的绕圈进度条,直接上代码: 1.控件界面 <UserControl x:Class="ProgressBarControl&quo ...
- bzoj 3456 城市规划——分治FFT / 多项式求逆 / 多项式求ln
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3456 分治FFT: 设 dp[ i ] 表示 i 个点时连通的方案数. 考虑算补集:连通的方 ...
- web 面试题、简单题、复习题
1. 概述MVC体系结构,各个部分都有那些技术来实现? M即model(模型,bean(domain)层)由javabean或EJB实现:V即view(视图,显示层)由jsp实现:C即controll ...
- 使用VS2017 编写Linux系统上的Opencv程序
背景 之前写图像算法的程序都是在window10下使用VS编写,VS这个IDE结合“ImageWatch.vsix“插件,用于调试opencv相关的图像算法程序十分方便.后因项目需要,需将相关程序移植 ...