[教學] 在 CentOS 中使用 Nginx 來架設 Web 伺服器
在過去,我們會習慣使用 Apache 來架設 Linux 平台下的 Web Server,主要因為牌子老、資源多、模組多、相容性、跨平台,至今,Apache 仍在市場中佔有極大席次的使用率。LAMP(Linux + Apache + MySQL + PHP) 一詞幾乎變成大眾入門的首選。
Lighttpd 的出現,開始不少人討論輕量型的伺服器需求,主因在於發現 Apache 為了多方功能的完整,載入過多的模組功能,對於一般小型的網站程式需求(或是靜態請求)而言,大部份的模組都是毫無幫助,相對的耗費太多的硬體資源。
直到最近,LNMP(Linux + Nginx + MySQL + PHP) 似乎是更多人的選擇,因為 Nginx 對於請求的吞吐能力,內存消耗,反向代理等等特性,都比 Apache 還來的合適,尤其是作為外部 Web 代理請求的 Server,因此 Nginx 在服務提供上,就有明確的定位,甚至也不少人認為 LNAMP (Linux + Nginx + Apache + MySQL + PHP) 的作法,將會是最完善的組合。
我並不建議就這三者誰好誰壞多加評論,其實是毫無意義的,在不同的設計需求、硬體環境條件,自然就應當會有最適的解決方案。因此,了解三者的特性與差異性,在既有的環境中做出適當的配置,遠比一切都來的重要。不多說,就直接安裝 Nginx 來體驗看看吧。
如果您仍不知道它們的差異,或許可以這樣區分:
Apache – 對於 PHP 的相容性最佳,處理能力強,模組支援多。
Nginx – 反向代理、靜態文件、吞吐量較佳,但 PHP 需額外靠 PHP-FPM 運作
一、安裝 Nginx
在 CentOS 6.3 中,Nginx 並沒有被 yum 正式收錄,因此我們需要手動的添加 Nginx 的 Repo 檔(官方提供的範例),來進行 yum 安裝。首先我們先到官方網頁逛逛,了解一下目前最新提供的版本與安裝方法。
Nginx 官方頁面 : http://nginx.org/
Nginx 下載頁面 : http://nginx.org/en/download.html
Nginx 穩定版本 : 1.2.4
在 Nginx 的下載頁面中可以發現不同版本以及安裝方式,除了安裝 rpm-release 包後再 yum 安裝之外,你也可以直接下載 source 檔(tar.gz)來手動編譯安裝。
(官方提供的原始碼打包檔、Windows版本的安裝檔)
(官方還有提供 rpm 包,裝完就可以直接 yum 安裝 nginx)
在這裡我將選擇使用手動加入 repo 設定,並直接透過 yum 安裝。
# 讓 yum 能找到 nginx vi /etc/yum.repos.d/nginx.repo [nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/6/$basearch/ gpgcheck=0 enabled=1
建立 nginx.repo 檔後(或安裝官方 rpm 包),就可以直接使用 yum 來安裝 Nginx
yum install nginx
這樣就裝好 Nginx 了呀,是不是很方便呢~
二、設定 Nginx 設定檔
在安裝完 Nginx 後,其實所有的設定檔都已經配置妥當,你可以直接啟用服務,就能夠運作了。但我們還是來了解一下 Nginx 是如何配置的吧。
主要設定檔 /etc/nginx/nginx.conf
############################################# # 這是 Nginx 服務的主要設定檔 # 檔案位置預設為 /etc/nginx/nginx.conf ############################################# # 啟用程序的 Linux 帳戶 user nginx; # 啟用的執行緒數量(建議為你的 CPU 核心數 x 2) worker_processes 2; # Error Log 檔的位置 error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { # 允許同一時間連線總數量 worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; # 預設的 log 記錄格式 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; # Access log 檔的位置 access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; # 預設不會自動啟動 gzip 壓縮 #gzip on; # 載入 /etc/nginx/conf.d/ 下的所有設定檔 # 通常都是各個虛擬主機的配置 include /etc/nginx/conf.d/*.conf; }
其他配置檔位置(虛擬主機) /etc/nginx/conf.d/*.conf
預設會自動產生兩個範例設定檔,其中 default.conf 為一般虛擬主機設定檔,example_ssl.conf 為 SSL 的虛擬主機設定檔。
預設主機的配置 /etc/nginx/conf.d/default.conf
server { # 這個虛擬主機的 Port 和名稱 listen 80; server_name localhost; # 預設編碼,但通常不建議開啟,讓網頁中的 meta 或 header 自行定義 #charset koi8-r; # 可以額外針對這個站台修改 log 的存放位置 #access_log /var/log/nginx/log/host.access.log main; # 根目錄的設定 location / { # 實際的檔案位置 root /usr/share/nginx/html; # 預設首頁檔名 index index.html index.htm; } # 如果發生 404 可以指定到特定的頁面來顯示 #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # 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_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$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 服務
如同大部份的服務,你只要透過 service 指令就可以啟動 Nginx
# 啟動服務 service nginx start chkconfig nginx on
查看 Port 80 是否已經開啟
[root@NGINX conf.d]# netstat -ant | grep :80 tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
如果你有開啟防火牆(iptables),請記得開啟 Port 80 許可喔。
### nginx 全部開放 ### iptables -A INPUT -p tcp --dport 80 -j ACCEPT
四、驗收
直接開啟瀏覽器,當你正確的看到 Welcome 字眼時,恭喜你已經完成 Nginx 的安裝並上線。
在預設設定,你可以將你的 html 直接放到 /usr/share/nginx/html 中,或許你可以手動建立一個檔案來試試看。
您可以延伸閱讀這些文章:
友站鏈結
標籤
Cache CentOS Convert Image Convert Photo DISK ESX Firewall FTP Highlighter htop HTTP iftop ImageMagick iotop IPTABLES LinkWithin Linux Manager Tools Memory Network Network Setting Nginx OS PHP PHP-FPM Proftpd Security Server Service SSH Syntax VMDK VMware VMware Tools vSphere Web Windows Live Write WLW WordPress WordPress Plugin XmlRpc 資訊安全 防火牆免責聲明
本網站對於任何使用或引用本網站網頁資料,引致之損失或損害,概不負責。 本網站亦有權隨時刪除、暫停或編輯本網站所登載之各項資料,以維護本網站之權益。