Write the Code. Change the World.

分类目录
6月 23

网络上有很多关于如何配置 Nginx + FPM 的文章,但它们更多从操作的角度出发,告诉我们怎么做,但却没有告诉我们为什么要这么做,本文从 Nginx 与 FPM 的工作机制出发,探讨配置背后的原理,让我们真正理解 Nginx 与 PHP 是如何协同工作的。

要说 Nginx 与 PHP 是如何协同工作的,首先得说 CGI (Common Gateway Interface) 和 FastCGI 这两个协议。

CGI 是 Web Server 与后台语言交互的协议,有了这个协议,开发者可以使用任何语言处理 Web Server 发来的请求,动态的生成内容。但 CGI 有一个致命的缺点,那就是每处理一个请求都需要 fork 一个全新的进程,随着 Web 的兴起,高并发越来越成为常态,这样低效的方式明显不能满足需求。就这样,FastCGI 诞生了,CGI 很快就退出了历史的舞台。FastCGI,顾名思义为更快的 CGI,它允许在一个进程内处理多个请求,而不是一个请求处理完毕就直接结束进程,性能上有了很大的提高。
继续阅读

6月 21

下载

官方地址: http://php.net/downloads.php

Nginx官网提供了三个类型的版本
1. Mainline version:Mainline 是 Nginx 目前主力在做的版本,可以说是开发版
2. Stable version:最新稳定版,生产环境上建议使用的版本
3. Legacy versions:遗留的老版本的稳定版

打开下载页面,选择适合的版本(当前最新版本是7.1.4),进入镜像页面。找到对应的镜像地址。进入存储目录,开始下载。

cd  /usr/local/src/php
wget  http://cn2.php.net/distributions/php-7.1.4.tar.gz
tar -xzvf php-7.1.4.tar.gz
cd php-7.1.4

下载完成后,用tar解压。

准备编译环境

在编译安装php之前,需要安装一些依赖包。

yum -y install libxml2 libxml2-devel openssl openssl-devel curl-devel libjpeg-devel libpng-devel freetype-devel libmcrypt-devel bzip2 bzip2-devel libzip-devel libxslt-devel

yum跳过已经安装过的依赖包。

继续阅读

6月 19

概念

linux用户分root用户和其他用户。其他用户,如:nginxmariadbnobody等。其他用户即普通用户。linux用户的读,写,执行权限实际上是不同用户所能访问文件的不同的假象,就是用户的权限是由组来决定的。对于用户,用户组:
1. 一个用户至少要属于一个用户组。
2. 一个用户可以属于多个用户组。

用户组主要还是方便分配权限,而用户本身差别不大,各个用户之间主要不同是:
1. 是否拥有密码
2. home目录(普通用户可以有一个以自己用户名命名的home目录,存放的地址是home/username,root用户的home目录就是/root
3. shell

像nobody这样用来执行nginx的工作进程的用户,一般不分配密码和shell,甚至连home目录都没有。

为什么不分配密码?如果设置了密码,程序无法自动使用。由于不会有人使用这个用户登录系统,所以就没有必要分配shell。(备注:其实严格上说是有分配shell,只是分配的shell是/sbin/nologin这个特殊的shell,没有任何其他功能,主要功能是防止你登陆。)
继续阅读

6月 03

编译环境

在linux使用make方式安装,需要保证linux已经具备比较OK的编译环境,例如gcc等编译工具。一般而言,服务器提供商在安装的系统中已经默认集成了这些软件,但是为了保险起见,我们还是通过一些较为基础的方式,把这些依赖包都跑一遍,以防在之后的编译中出差错。

 yum -y install gcc gcc-c++ autoconf automake libtool make cmake
 yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel  

zlib 为nginx提供gzip模块,需要zlib库支持
openssl 为nginx提供ssl功能
pcre 为支持地址重写rewrite功能

继续阅读