2013年8月9日 星期五

Ubuntu 12.04.2 LTS server 版安裝 LNMP

LNMP is Linux + Nginx + MySQL + PHP 的暱稱啦,仿效 LAMP is Linux + Apache + MySQL + PHP,不過在 Ubuntu 下 LAMP 有可安裝的模組,但 LNMP 就得自己一步步動手,下面是建置過程,另外會加上 phpmyadmin 的安裝!

1. 首先安裝好 Ubuntu 12.04.2 LTS 版後,先不急著 update 系統,因為內建安裝的 nginx 是 1.1.19 版,先加入來源 source 後,可以升級到 1.4.2 版,參考來源

將下面這行文字加入到 /etc/apt/sources.list 最後一行即可
deb http://nginx.org/packages/ubuntu/ precise nginx



2. 加入 Ubuntu source 來源的 public key,有兩種方式。
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys ABF5BD827BD9BF62

或是下載 nginx signing key (按右鍵另存),參考來源
sudo apt-key add nginx_signing.key

3. 接著就進行系統 update & upgrade 的步驟
sudo apt-get update

sudo apt-get upgrade

4. 更新完畢後,就可以直接安裝 Nginx 了,安裝完畢後,就是 1.4.2-1 版
sudo apt-get install nginx

nginx-07如果想看是否安裝成功,執行下列指令。
service nginx start

看到這個畫面就表示OK,簡單吧!

nginx-085. 接著安裝 MySQL + php5,這裡主要是以安裝 php5-fpm 當作 php 服務,參考來源,一併安裝包括 XCACHE 加速等。
sudo apt-get install  mysql-server libapache2-mod-auth-mysql php5-mysql fcgiwrap php5-fpm php5-xcache php5-pgsql php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

上面的  mysql-server libapache2-mod-auth-mysql php5-mysql 部分是安裝 MySQL,其餘就是 php5-fpm XCACHE 以及需要的相關模組,安裝過程中會問到 MySQL root 的密碼,記得要輸入。

nginx-09

nginx-10

nginx-11
6. 安裝 phpmyadmin 以及建立連結
sudo apt-get install phpmyadmin

建立連結到 /var/www 下。
ln -s /usr/share/phpmyadmin/ phpmyadmin

7. 修改 php5-fpm 的 php.ini 資料
sudo nano /etc/php5/fpm/php.ini

找到類似下面的資料,把前面的 ";" 取消,並將數值改為 0
cgi.fix_pathinfo=0

同時也可依照需求修改下列數值

upload_max_filesize = 2M ---> 上傳大小限制

post_max_size = 8M ---> 發表檔案大小限制

default_socket_timeout = 60 ---> 等待時間,最好加大以免連線失敗

修改 www.conf 資料
sudo nano /etc/php5/fpm/pool.d/www.conf

找到  listen = 127.0.0.1:9000 的字樣,改成下列資料,使用 php5-fpm 服務
listen = /var/run/php5-fpm.sock

7. 修改 nginx 定義檔,把預設的 www 路徑設定到 /var/www 下,以及改為 php5-fpm 服務等資料,檔案內容大致如下,紅色粗體是有更動過的內容,請自行參考。其中 lister [::]80 的確可以支援 IPv6 的瀏覽,各位可以自行試試。
server {
listen 80; ## listen for ipv4; this line is default and implied
listen [::]:80 default ipv6only=on; ## listen for ipv6

server_name localhost;

root /var/www;
index index.php index.html index.htm;

#charset koi8-r;
#access_log /var/log/nginx/log/host.access.log main;

location / {
try_files $uri $uri/ /index.html;
}

error_page 404 /index.html;

# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www;
}

# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}

nginx-19nginx-18nginx-20

8. 重新啟動相關服務即可
sudo service php5-fpm restart

sudo service nginx restart

9. 其他相關參考來源

How to Install Linux, nginx, MySQL, PHP (LEMP) stack on Ubuntu 12.04

在Ubuntu 12.04 安裝Nginx

How to get the latest nginx on Ubuntu 12.04.2 LTS

4 則留言:

  1. ubuntu 的官網怎麼沒辦法下載iso檔...

    回覆刪除
  2. 可以喔!不過台灣的網點下載比較快,可以到國家高速網路與計算中心下載 12.04.3,網址: ftp://ftp.twaren.net/Linux/Ubuntu/ubuntu-cd/

    回覆刪除
  3. 請問,我做到安裝phpmyadmin後,要建立連結到 /var/www 下,但會出現底下的訊息
    ln: failed to create symbolic link ‘./phpmyadmin’: 拒絕不符權限的操作
    ln -s /usr/share/phpmyadmin/ phpmyadmin ->這樣不是會建在使用者家目錄下嗎?
    還是我應該先到/var/www/底下再執行?

    另外,安裝的過程,有一步要你選 apache2 或 lighttpd ,要選什麼啊?

    回覆刪除
  4. fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    這行我無法抓到 $document_root 的路徑
    因為這樣設定開啟 php 檔,只會出現 No input file specified.
    所以我改成 fastcgi_param SCRIPT_FILENAME /var/www/$fastcgi_script_name;
    這樣就能正常顯示
    請教一下,$document_root 的路徑是在那邊設定啊?

    回覆刪除