Linux 安装 Nginx PHP fpm
网上的很多 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 下安装软件, 可以用 aptitude 命令. 这是一个类似图形界面的软件, 启动后, 按 “/” 输入软件名进行搜索, 选中后按 “+”, 再按 “g” 即可安装.
需要安装的依赖软件包是: libxml2-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 --without-http_gzip_module 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();
然后, 用浏览器访问 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
然后将
user = nobody group = nobody
修改成
user = work group = work
work 是你的用户名, 你应该改成实际的用户名. 然后启动 php-fpm
sudo /usr/local/sbin/php-fpm
这时候, 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 模块就已经安装成功了.
建议继续学习:
- 配置Nginx+uwsgi更方便地部署python应用 (阅读:105405)
- Linux 下 PHP 5.2.x 连接 SQL Server 数据库 FreeTDS 配置笔记 (阅读:10104)
- nginx的配置文件 (阅读:8832)
- Emacs安装配置 (阅读:7308)
- 如何查看Linux 硬件配置信息 (阅读:5866)
- Centos yum 安装nginx+PHP-FPM+eAccelerator+mysql (阅读:5614)
- Apache2中俩种设置PHP的异同 (阅读:5301)
- Linux(Ubuntu 10.04)上安装配置apache+php+mysql+phpmyadmin (阅读:5007)
- 在FreeNAS/BSD搭建基于Nginx+FastCGI+MySQL+PHP的WebServer (阅读:4758)
- 在Mac OS X中运行Apache + PHP + MySQL (阅读:4366)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:ideawu 来源: idea's blog
- 标签: fpm 配置
- 发布时间:2014-12-02 23:34:15
- 配置Nginx+uwsgi更方便地部署python应用
- Linux 下 PHP 5.2.x 连接 SQL Server 数据库 FreeTDS 配置笔记
- nginx的配置文件
- Emacs安装配置
- 如何查看Linux 硬件配置信息
- Centos yum 安装nginx+PHP-FPM+eAccelerator+mysql
- Apache2中俩种设置PHP的异同
- Linux(Ubuntu 10.04)上安装配置apache+php+mysql+phpmyadmin
- 在FreeNAS/BSD搭建基于Nginx+FastCGI+MySQL+PHP的WebServer
- 在Mac OS X中运行Apache + PHP + MySQL
- [53] IOS安全–浅谈关于IOS加固的几种方法
- [52] 如何拿下简短的域名
- [52] Oracle MTS模式下 进程地址与会话信
- [50] android 开发入门
- [50] 图书馆的世界纪录
- [48] 【社会化设计】自我(self)部分――欢迎区
- [45] 读书笔记-壹百度:百度十年千倍的29条法则
- [45] Go Reflect 性能
- [42] 视觉调整-设计师 vs. 逻辑
- [40] 界面设计速成