ubuntu11.04安裝nginx+php - Linux

Liam avatar
By Liam
at 2011-06-14T01:58

Table of Contents

網頁版: http://carl830.pixnet.net/blog/post/63576511


弄了好久 參考了幾篇教學 應該算是能跑了吧囧a

話說有幾篇教學講得都不太一樣 害我也不知道該看哪篇才好

後來是找了這一篇
(http://library.linode.com/web-servers/nginx/php-fastcgi/ubuntu-10.04-lucid)

來作看看


首先先抓套件來安裝吧~

apt-get install nginx php5-cli php5-cgi spawn-fcgi psmisc



接著在/etc/nginx/sites-available/ 底下應該會有個default

直接來修改這個檔案

--------------------------------------------------------------------
server {
listen 80 default;
server_name localhost;

access_log /var/log/nginx/localhost.access.log;

location / {
root /var/www/nginx-default;
index index.php;
}
location /phpmyadmin {
root /usr/share;
index index.php;
}
location ~ \.php$ {
set $php_root /var/www/nginx-default;
if ($request_uri ~* /phpmyadmin) {
set $php_root /usr/share;
}
fastcgi_pass unix:/var/run/php-fastcgi/php-fastcgi.socket;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME
$php_root$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
}
---------------------------------------------------------------------------

listen指定port

location / 的root位置這邊 安裝完nginx之後通常網頁目錄會是這個位置

另外我還有安裝phpmyadmin 所以這邊有phpmyadmin的設定

至於在最後面的location設定 需要用if來判斷是在/var/www/nginx-default還是

/usr/share來設定SCRIPT_FILENAME 不然phpmyadmin會有錯誤




接著在/usr/bin底下新增一個檔案叫做php-fastcgi

將以下內容複製進去
----------------------------------------------------------------------------

#!/bin/bash

FASTCGI_USER=www-data
FASTCGI_GROUP=www-data
SOCKET=/var/run/php-fastcgi/php-fastcgi.socket
PIDFILE=/var/run/php-fastcgi/php-fastcgi.pid
CHILDREN=6
PHP5=/usr/bin/php5-cgi

/usr/bin/spawn-fcgi -s $SOCKET -P $PIDFILE -C $CHILDREN -u $FASTCGI_USER -g
$FASTCGI_GROUP -f $PHP5

-----------------------------------------------------------------------------

然後修改權限

chmod +x /usr/bin/php-fastcgi



接著在site-enabled底下建立一個到sites-available底下default的連結

cd /etc/nginx/sites-enabled/
ln -s /etc/nginx/sites-available/default



接下來到/etc/init.d/底下建立一個php-fastcgi的檔案

以下是內容

----------------------------------------------------------------------
#!/bin/bash

PHP_SCRIPT=/usr/bin/php-fastcgi
FASTCGI_USER=www-data
FASTCGI_GROUP=www-data
PID_DIR=/var/run/php-fastcgi
PID_FILE=/var/run/php-fastcgi/php-fastcgi.pid
RET_VAL=0

case "$1" in
start)
if [[ ! -d $PID_DIR ]]
then
mkdir $PID_DIR
chown $FASTCGI_USER:$FASTCGI_GROUP $PID_DIR
chmod 0770 $PID_DIR
fi
if [[ -r $PID_FILE ]]
then
echo "php-fastcgi already running with PID `cat $PID_FILE`"
RET_VAL=1
else
$PHP_SCRIPT
RET_VAL=$?
fi
;;
stop)
if [[ -r $PID_FILE ]]
then
kill `cat $PID_FILE`
rm $PID_FILE
RET_VAL=$?
else
echo "Could not find PID file $PID_FILE"
RET_VAL=1
fi
;;
restart)
if [[ -r $PID_FILE ]]
then
kill `cat $PID_FILE`
rm $PID_FILE
RET_VAL=$?
else
echo "Could not find PID file $PID_FILE"
fi
$PHP_SCRIPT
RET_VAL=$?
;;
status)
if [[ -r $PID_FILE ]]
then
echo "php-fastcgi running with PID `cat $PID_FILE`"
RET_VAL=$?
else
echo "Could not find PID file $PID_FILE, php-fastcgi does not appear
to be running"
fi
;;
*)
echo "Usage: php-fastcgi {start|stop|restart|status}"
RET_VAL=1
;;
esac
exit $RET_VAL

-----------------------------------------------------------------------------

最後就是設定並啟動服務啦

chmod +x /etc/init.d/php-fastcgi
update-rc.d php-fastcgi defaults
/etc/init.d/php-fastcgi start
/etc/init.d/nginx start

第一行是將這個檔案加上執行權限

update-rc.d將這個檔案加入預設開機就會執行的服務

後面兩行就是執行這兩個服務了



接下來可以在/var/www/nginx-default底下建立一個index.php

裡面可以加上以下的內容來驗證是否正確

<?php phpinfo(); ?>





大致差不多就是這樣

安裝比我想得還有要麻煩一點 不懂為啥還要自己寫script orz




1.
根據我個人的經驗 好像是只要改到一些設定的話

nginx和php-fastcgi都要重啟才會生效的樣子(?)

2.
另外教學網頁中有講的unix socket和tcp socket的設定也不太一樣

實際執行上不知道有沒有差= =a

3.
php-fastcgi好像速度會比較快 不知道還有什麼其他的優點..




參考網址

http://arnisoft.com/253/nginx-phpmyadmin-configuration/

http://i.laoer.com/nginx-alias-php.html


--
Tags: Linux

All Comments

Iris avatar
By Iris
at 2011-06-15T00:49
超有用的分享!

LVM問題

Megan avatar
By Megan
at 2011-06-13T21:04
各位前輩大家好,我想請問各位的問題是.. 在灌系統完成後的條件下,要如何把 / 整個變成LVM? 請各位前輩給予指點,這個問題卡了我好久.. 感謝 BR, - ...

請問磁區加密的方式

Joseph avatar
By Joseph
at 2011-06-13T20:53
小弟也來獻醜一下,剛好兩個月前也玩過。 http://dodgelin.blogspot.com/2011/04/ubuntudebian-ecryptfs-encrypted-file.html Ubuntu/Debian 設定使用加密檔案系統 主要參考文件: http://www.ubuntug ...

請問台大開的課能上嗎?

Hedwig avatar
By Hedwig
at 2011-06-13T20:47
想請問一下 台大資工系有開LINUX作業系統班 http://www.csie.ntu.edu.tw/train/course_display.php?num=447 講師:許照賢 本人對LINUX不熟 只是在工作未來也許會碰到 但可能都只是碰檔案系統架構這部分 想說去學習學習 對自己也有幫助 ...

ubuntu 10.10沒得下載

Caitlin avatar
By Caitlin
at 2011-06-13T20:36
我昨天買了thinkpad e420s 想要灌ubuntu 10.10 可是ubuntu的官網上竟然只有 10.04 and 11.04可以下載 為何沒有 10.10能下載呢? 有人用過thinkpad e420s灌ubuntu嗎? 會不會有啥問題呢? 謝謝! - ...

Ubuntu底下VirtualBox Port Forwarding問題

Megan avatar
By Megan
at 2011-06-13T17:00
問題是這樣,小弟在Ubuntu 11.04下安裝了VirtualBox 想要利用VirtualBox + Port Forwarding方式建立幾個特別用途的VM 以下是所遇到的問題。首先我在VM中利用XAMPP架設一個網頁伺服器 XAMPP( http://www.apachefriends.org/z ...