close

[教學] 在 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 中,或許你可以手動建立一個檔案來試試看。
 

arrow
arrow
    創作者介紹
    創作者 Johnson峰 的頭像
    Johnson峰

    Johnson峰的部落格

    Johnson峰 發表在 痞客邦 留言(0) 人氣()