網上的不少 Linux 操做系統下安裝 Nginx + PHP 的教程都很老, 並且各類依賴, 對於初學者來講比較容易混淆, 因此, 我從新寫了此篇博客, 用於介紹最簡單的 Linux 下安裝 Nginx + PHP 的方法.php
此文會常常更新, 保持與時俱進. 若是你不是在 ideawu.net 網站看到本文, 請訪問 ideawu.net, 閱讀最新的版本.html
你可能聽過別的 Linux 發行版, 但若是你是初學者, 而且對 Nginx + PHP 安裝不瞭解, 我建議你安裝 Ubuntu Server. 請到 Ubuntu 的官網下載最新版本的 ISO 文件, 我用的是 12.04.3-server-amd64.iso.nginx
在 Ubuntu 下安裝軟件, 能夠用 sudo aptitude 命令. 這是一個相似圖形界面的軟件, 啓動後, 按 「/」 輸入軟件名進行搜索, 選中後按 「+」, 再按 「g」 便可安裝.ubuntu
須要安裝的依賴軟件包是: libpcre3-dev, libxml2-dev, zlib1g-dev.瀏覽器
到 Nginx 的官網下載最新版本的 Nginx 源碼, 當前(2013-11-11)的最新版本是 1.5.6, 將來會有升級, 因此下載的 wget 只是一個示例, 你應該替換成最新的版本.服務器
wget http://nginx.org/download/nginx-1.6.0.tar.gz tar xzf nginx-1.6.0.tar.gz cd nginx-1.6.0 ./configure make sudo make install
Nginx 會被安裝在 /usr/local/nginx 目錄下.socket
sudo /usr/local/nginx/sbin/nginx
sudo /usr/local/nginx/sbin/nginx -s stop
打開瀏覽器, 訪問 http://127.0.0.1/ 看看網頁是否能打開. 若是你在另外一臺機器上訪問, 把 127.0.0.1 換成 Ubuntu 服務器的 IP 地址便可. 以下圖ide
更多的 Nginx 配置文件的修改, 等咱們安裝完 PHP 以後再關心, 先使用默認的配置文件運行起來. 默認的配置文件在 /usr/local/nginx/conf/nginx.conf 文件.模塊化
一樣, 到 PHP 的官網下載最新版本的 PHP 源碼.php-fpm
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 -v
上面的命令應該有版本信息輸出.
sudo cp php.ini-production /usr/local/lib/php.ini
不過, 如今你還用不上, 等用的時候再修改這個文件.
編譯 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 進程.
/usr/local/bin/php-cgi -b 9000
首先, 你須要建立一個 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 的信息, 以下圖
剛纔的一行命令雖然啓動了 php-cgi, Nginx + PHP 也正常工做了, 但這不是正式環境的作法, 只是一種臨時方法. 正式的生產環境通常用 fpm 方式啓動 php-cgi 爲守護進程.
php-fpm 程序安裝在 /usr/local/sbin/php-fpm.
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
前面的分號(註釋)去掉.
sudo groupadd nobody sudo useradd -g nobody nobody
# 啓動 sudo /usr/local/sbin/php-fpm # 中止 sudo kill `cat /usr/local/var/run/php-fpm.pid`
這時候, php-cgi 已經做爲守護進程啓動了.
上面編譯的 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 模塊就已經安裝成功了.