2015年3月30日 星期一

用 Nginx 來安裝 WordPress - 改用 LNMP 取代 Apache 吧

自從學習 Linux 以來都是使用 Apache 來當 Web Server,Apache 確實非常的方便,也很容易上手運用廣泛

由於新工作採用 Nginx 來部屬大訪問量,以及常常在書籍中看到 Nginx 這款輕量級 Web 的種種好處,花了一些時間研究了 Nginx

在 Linux,Nginx採用異步處理 I/O 的 epoll / Kqueue 在處理大量訪問的時候,Nginx 耗費的資源少而且處理速度快!

而 Apache 適合在處理系統,使用的是 select 機制,屬於比較舊型的處理方式,基於底層目前 Apache 還未針對這個方向做改進

Nginx 還有一個好處就是,大家通常都會拿它來當 Reverse Proxy Server ,簡直就是碰到就蹦得出來的快

目前 Apache 可以佔有的優勢就是用的人多,文件多; 其他 Nginx 還是大勝許多。

在這裡拿 wordpress 當範例,因為他是標準 LNMP 的架構,也適合在多數環境中使用

此篇主要會是將原有的 LAMP 的架構改為 LNMP 為主

詳細的 WordPress 設定可以參考另一篇 WordPress 部落格 架設



 

 

安裝 LNMP 架構環境

step1. 安裝套件

要安裝 Nginx 必須要擁有 EPEL
$ rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm 
$ yum install mysql mysql-server php php-mysql php-fpm nginx


step2. 設定 /etc/nginx/nginx.conf
user  nginx; 
worker_processes 4;
worker_cpu_affinity 0001 0010 0100 1000;
worker_rlimit_nofile 1024;
events {
use epoll;
worker_connections 1024;
}


  • user : Nginx 執行的使用者權限

  • worker_processes : 可執行的程序數量,就是 CPU core

  • worker_cpu_affinity : processes 的 core 執行邏輯,4 核心可設定 1000 0100 0010 0001

  • worker_rlimit_nofile : 每個程序可開啟的最多檔案數量

  • use epoll : 這就是 Nginx 最強的東西,開了飛快!

  • worker_connections : 每個程序最多連線數


 

step3. 設定 /etc/nginx/conf.d/default.conf

其實 Nginx 設定非常的簡單,但跟 Apache 不同的概念是若要執行程式還是要透過 fastcgi,在這邊就是要跟 php-fpm 來進行 cgi 串接
server { 
server_name shazi.twbbs.org;
root /usr/share/nginx/wordpress;
index index.html index.php index.htm;

access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
server_tokens off;
location ~* \.php$ {
try_files $uri = 404;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}


  • server_name : VirtualHost 名稱

  • root : Web 位置

  • server_tokens : 移除版本資訊

  • location ~* \.php$ : 代表所有 .php 都交由 php-fpm 處理


在這邊必須先提醒各位,php-fpm 可以 Listen TCP Socket 或者是 UNIX Kernel Socket,效能上多數都是採用 UNIX Kernel Socket

 

step4. 設定 php-fpm,/etc/php-fpm.d/www.conf

處理好 nginx 的 fastcgi 連線,就要設定 php-fpm 的串接設定
[www] 
listen = /var/run/php-fpm/php-fpm.sock
user = nginx
group = nginx
request_terminate_timeout = 600s


  • listen : 預設是 127.0.0.1:9000 , 但採用 UNIX Kernel Socket 比較快

  • request_terminate_timeout : 有關於 php 可以執行最久的時間,超過就 timeout


 

step5. 將 wordpress 程式放入 root 路徑
$ mv wordpress /usr/share/nginx/ 
$ chown -R nginx.nginx /usr/share/nginx/wordpress

 

step6. 啟動服務
$ service nginx start 
$ service php-fpm start

看到 WordPress 畫面就 OK 囉!!

雖然 Nginx 非常簡單,但更代表必須花更多心思進行調校。

 

Orignal From: 用 Nginx 來安裝 WordPress - 改用 LNMP 取代 Apache 吧

沒有留言:

張貼留言