Home  >  Article  >  php教程  >  初学者的 Linux 安装 Nginx PHP fpm 配置教程

初学者的 Linux 安装 Nginx PHP fpm 配置教程

WBOY
WBOYOriginal
2016-06-06 20:11:291218browse

网上的很多 Linux 操作系统下安装 Nginx + PHP 的教程都很老, 而且各种依赖, 对于初学者来说比较容易混淆, 所以, 我重新写了此篇博客, 用于介绍最简单的 Linux 下安装 Nginx + PHP 的方法. 此文会经常更新, 保持与时俱进. 如果你不是在 ideawu.net 网站看到

网上的很多 Linux 操作系统下安装 Nginx + PHP 的教程都很老, 而且各种依赖, 对于初学者来说比较容易混淆, 所以, 我重新写了此篇博客, 用于介绍最简单的 Linux 下安装 Nginx + PHP 的方法.

此文会经常更新, 保持与时俱进. 如果你不是在 ideawu.net 网站看到本文, 请访问 ideawu.net, 阅读最新的版本.

安装 Ubuntu Server

你可能听过别的 Linux 发行版, 但如果你是初学者, 并且对 Nginx + PHP 安装不了解, 我建议你安装 Ubuntu Server. 请到 Ubuntu 的官网下载最新版本的 ISO 文件, 我用的是 12.04.3-server-amd64.iso.

安装依赖软件

在 Ubuntu 下安装软件, 可以用 sudo aptitude 命令. 这是一个类似图形界面的软件, 启动后, 按 “/” 输入软件名进行搜索, 选中后按 “+”, 再按 “g” 即可安装.

需要安装的依赖软件包是: libpcre3-dev, libxml2-dev, zlib1g-dev.

源码安装 Nginx

编译 Nginx

到 Nginx 的官网下载最新版本的 Nginx 源码, 当前(2013-11-11)的最新版本是 1.5.6, 未来会有升级, 所以下载的 wget 只是一个示例, 你应该替换成最新的版本.

wget http://nginx.org/download/nginx-1.5.6.tar.gz
tar xzf nginx-1.5.6.tar.gz
cd nginx-1.5.6
./configure
make
sudo make install

Nginx 会被安装在 /usr/local/nginx 目录下.

启动 Nginx

sudo /usr/local/nginx/sbin/nginx

停止 Nginx

sudo /usr/local/nginx/sbin/nginx -s stop

验证 Nginx 是否已经启动

打开浏览器, 访问 http://127.0.0.1/ 看看网页是否能打开. 如果你在另一台机器上访问, 把 127.0.0.1 换成 Ubuntu 服务器的 IP 地址即可. 如下图

图

更多的 Nginx 配置文件的修改, 等我们安装完 PHP 之后再关心, 先使用默认的配置文件运行起来. 默认的配置文件在 /usr/local/nginx/conf/nginx.conf 文件.

源码安装 PHP fpm fastcgi

编译 PHP

同样, 到 PHP 的官网下载最新版本的 PHP 源码.

wget http://us1.php.net/get/php-5.5.5.tar.bz2/from/cn2.php.net/mirror
tar xjf mirror
cd php-5.5.5
./configure --enable-fpm
make
sudo make install

PHP 的可执行文件(php, php-cgi)会被安装到 /usr/local/bin 目录下. 配置文件是 /usr/local/lib/php.ini, 这个文件并不存储, 你需要自己创建.

验证 PHP 是否已经安装成功

php -v

上面的命令应该有版本信息输出.

创建 php.ini 配置文件

sudo cp php.ini-production /usr/local/lib/php.ini

不过, 现在你还用不上, 等用的时候再修改这个文件.

修改 Nginx 配置文件支持 PHP

编译 Nginx 的配置文件 /usr/local/nginx/conf/nginx.conf, 加入下面的内容. 原配置文件里有类似的内容, 你加在那段内容的紧跟后面即可.

location ~ \.php$ {
    root           html;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include        fastcgi_params;
}

然后重启 Nginx

sudo /usr/local/nginx/sbin/nginx -s reload

这时候, Nginx + PHP 还不能工作, 你还需要启动 php-cgi 进程.

启动 php-cgi

/usr/local/bin/php-cgi -b 9000

验证 Nginx + PHP 已经正常工作

首先, 你需要创建一个 PHP 脚本, 新建一个文件 /usr/local/nginx/html/index.php, 这个文件的内容只有一行:

<?php phpinfo();

然后修改它的文件属性

sudo chmod ugo+rwx -R /usr/local/nginx/html

然后, 用浏览器访问 http://127.0.0.1/index.php 你应该能看到 PHP 的信息, 如下图

图

用 fpm 方式启动 php-cgi 进程

刚才的一行命令虽然启动了 php-cgi, Nginx + PHP 也正常工作了, 但这不是正式环境的做法, 只是一种临时方法. 正式的生产环境一般用 fpm 方式启动 php-cgi 为守护进程.

php-fpm 程序安装在 /usr/local/sbin/php-fpm.

创建 php-fpm.conf

PHP 默认安装了一个 php-fpm.conf.default 的模板文件, 需要将它改名:

sudo cp /usr/local/etc/php-fpm.conf.default /usr/local/etc/php-fpm.conf

然后修改 /usr/local/etc/php-fpm.conf, 将

;pid = run/php-fpm.pid

前面的分号(注释)去掉.

创建 nobody 用户

sudo groupadd nobody
sudo useradd -g nobody nobody

启动和停止 php-fpm

# 启动
sudo /usr/local/sbin/php-fpm
# 停止
sudo kill `cat /usr/local/var/run/php-fpm.pid`

这时候, php-cgi 已经作为守护进程启动了.

单独编译安装 PHP 模块

上面编译的 PHP 可能没有包含一些你需要的模块, 不过别担心, 你可以不必重新编译整个 PHP, 而是只编译和安装缺少的那个模块. 这也是 PHP 模块化的好处. 下面以单独安装 PHP 的 sockets 模块为例.

进入你的 PHP 源码的 ext/sockets 目录. ext 目录是所有模块的总目录. 然后执行

/usr/local/bin/phpize
./configure
make
sudo cp modules/sockets.so /usr/local/lib/php/extensions/no-debug-non-zts-20121212/

然后修改 php.ini 配置文件, 找到

;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions ;
;;;;;;;;;;;;;;;;;;;;;;

在其后面加上

extension=sockets.so

然后重启 php-fpm. 这样, sockets 模块就已经安装成功了.

Related posts:

  1. Nginx + PHP 配置和启动脚本
  2. Nginx 499 错误码以及 AJAX 调用失败
  3. Linux+Keepalived双机互备
  4. nginx-push-stream-module 笔记
  5. HBase 在 Linux 下安装和配置

初学者的 Linux 安装 Nginx PHP fpm 配置教程 你现在看的文章是: 初学者的 Linux 安装 Nginx PHP fpm 配置教程

Linode VPS - 美国虚拟主机 | IT牛人博客聚合网站

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn