[教學] 在 CentOS 中使用 Nginx 來架設 Web 伺服器
文章轉載http://yenpai.idis.com.tw/archives/336-%E6%95%99%E5%AD%B8-%E5%9C%A8-centos-%E4%B8%AD%E4%BD%BF%E7%94%A8-nginx-%E4%BE%86%E6%9E%B6%E8%A8%AD-web-%E4%BC%BA%E6%9C%8D%E5%99%A8
在過去,我們會習慣使用 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)來手動編譯安裝。
nginx download(官方提供的原始碼打包檔、Windows版本的安裝檔)
nginx download rpm(官方還有提供 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
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 中,或許你可以手動建立一個檔案來試試看。
留言列表