基於ubuntu 14搭建nginx+php+mysql環境

基於最新的Ubuntu 14.04(2014年9月)搭建nginx、php、mysql環境,

如下所有命令行操做:

1 因爲須要大量的權限操做,方便起見臨時提高權限,使用root帳號

sudo suphp

2 安裝apt源管理工具、添加nginx和php的安裝源

apt-get install python-software-properties
add-apt-repository ppa:nginx/stable
add-apt-repository ppa:ondrej/php5

3,更新系統軟件

apt-get update

四、安裝mysql

apt-get install mysql-server

注:在安裝過程當中,會要求你輸入MySQL的root帳號的密碼。html

五、安裝php及對mysql的支持

apt-get install php5 php5-fpm php5-mysql php-apc

若是mysqli擴展安裝不上,執行以下命令:python

aptitude install php5-mysql

登錄mysqlmysql

mysql -u root -p

六、根據實際須要,選擇性的安裝php的各種功能模塊(具體請自行百度)

apt-get install php-pear php5-dev php5-curl apt-get install php5-gd php5-intl php5-imagick apt-get install php5-imap php5-mcrypt php5-memcache apt-get install php5-ming php5-ps php5-pspell apt-get install php5-recode php5-snmp php5-sqlite apt-get install php5-tidy php5-xmlrpc php5-xsllinux

七、安裝nginx

apt-get install nginxnginx

八、配置php

vi /etc/php5/fpm/php.ini 找到:;cgi.fixpathinfo=1 改成:cgi.fixpathinfo=0sql

九、配置nginx

mkdir /www chmod 755 /www 建立一個 /www 目錄設置爲 755 權限 vi /etc/nginx/sites-enabled/default 找到:root /usr/share/nginx/html; 改成:root /www; 說明:將網站根目錄設置到/www 目錄下,注意不要寫成 /www/ 這種格式, 這個習慣性的小小潔癖給我帶來了意想不到的困擾,後面細說。 找到:index index.html index.htm; 改成:index index.php index.html index.htm; 說明:在默認索引文件中增長 index.php 找到:location ~ .php$ { * } 區塊 作以下調整(改動之處於行末有註釋): location ~ .php$ { tryfiles $uri =404; #增長 fastcgisplitpathinfo ^(.+.php)(/.+)$; #反註釋ubuntu

NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini

With php5-cgi alone:

fastcgi_pass 127.0.0.1:9000;

With php5-fpm:

fastcgipass unix:/var/run/php5-fpm.sock; #反註釋 fastcgiindex index.php; #反註釋 include fastcgi_params; #反註釋 }segmentfault

十、解決php-fpm與nginx的小bug

按上述步驟操做後,因爲nginx與php-fpm之間的一個小bug,會致使這樣的現象: 網站中的靜態頁面 *.html 都能正常訪問,而 *.php 文件雖然會返回200狀態碼, 但實際輸出給瀏覽器的頁面內容倒是空白。 簡而言之,緣由是nginx沒法正確的將 *.php 文件的地址傳遞給php-fpm去解析, 至關於php-fpm接受到了請求,但這請求卻指向一個不存在的文件,因而返回空結果。 爲了解決這個問題,須要改動nginx默認的fastcgiparams配置文件: vi /etc/nginx/fastcgiparams 在文件的最後增長一行: fastcgiparam SCRIPTFILENAME $documentroot$fastcgiscriptname; 關於這行的內容,多說幾句,其中有兩個參數: $documentroot 便是指網站的根目錄,也就是咱們在前面剛設置的 root /www; $fastcgiscriptname 則是指網站上的各個 *.php 文件名(實際上是文件的相對路徑) 這兩個合在一塊兒造成完整的 php file path,好比你的網站有個 /test/script.php 文件, nginx傳遞給php-fpm的完整路徑就是:/www/test/script.php 我在前面說配置nginx時,寫成了 root /www/; 這種寫法,對於nginx不成問題, 但它在向php-fpm傳遞php文件路徑時,會造成:/www//test/script.php 這樣的文件地址無效(獲取不到正確的php文件),因而出現返回空白的問題。 這個問題是如此之隱蔽,以致於我花了大量時間在查看LOG、尋找資料和調整設置上。瀏覽器

11,重啓各項服務

service php5-fpm reload service nginx reload 從新加載各項配置改動。

十二、測試

vi /www/index.php 內容: <?php echo phpinfo(); ?> 請打開你的瀏覽器訪問:http://localhost 若一切正常,將輸出php環境信息,效果如: http://image.baidu.com/i?word=phpinfo%28%29 附錄: 1,一些編輯修改工做涉及到 vi 的使用,若是不會操做,請訪問這個連接: http://linux.vbird.org/linux_basic/0310vi.php 2,我參考的全部資料中,最有價值的兩篇,感謝前輩做者們: http://blog.segmentfault.com/ipanda/1190000000477401 http://imcn.me/html/y2014/20291.html 3,Ubuntu是個好玩具,自06年以後,再度推薦下: http://www.ubuntu.com 注意:別去用那個集成了一堆垃圾軟件的所謂中國版。 若是你是爲了搭建網站(而非平常家用),建議選用ubuntu server英文版。 limingx.com / 2014-09-13

相關文章
相關標籤/搜索