用 Nginx 取代 Apache 吧 – WordPress 實務操作 Round1

2015-03-30 CentOS

自從學習 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 {
  listen 80;
  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 / { 
        root /home/wordpress/; 
        index index.php index.html index.htm; 
        try_files $uri $uri/ /index.php?$args; 
  }

  rewrite /wp-admin$ $scheme://$host$uri/ permanent;

  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 非常簡單,但更代表必須花更多心思進行調校。

 

2 Replies to “用 Nginx 取代 Apache 吧 – WordPress 實務操作 Round1”

  1. G先生表示:

    站長您好

    請問下假如 wordpress 更新顯示需要FTP,該從哪邊做設定呢?

    • shazi7804表示:

      Dear Mr. G

      想必您應該是使用 手動上傳更新吧!?
      如果是使用手動上傳更新,必須安裝 FTP Server!建議可以使用線上更新的方式進行更新。
      WordPress 會自動 wget 安裝包後解壓到 pluging 資料夾。

給 Mr. 沙先生一點建議

彙整

分類

展開全部 | 收合全部

License

訂閱 Mr. 沙先生 的文章

輸入你的 email 用於訂閱