2020年3月11日 星期三

CentOS 7 安裝 Nginx 及設定 PHP 7.x

前言概述
Nginx 網站服務是今幾年熱門的一種網站套件, 其實 Nginx 已行運多, 只是少有人知道, 多數在 Unix Linux 較為耳熟的多數為 Apache, 可是為什麼已多數應用多年的 Apache 後會出現 Nginx ,也不是代表 Apache 要退出 Web 服務, 只是 Nginx 有其優點是 Apache 所沒有, 可是其實 Apache 也是有 Nginx 沒有的優勢, Apache 多年技術成熟, 所以擁有多種擴充套件, 使得 Apache 可以做更多元性的調整. 可是反觀 Nginx 晚了幾年的它, 在早期非熱門的 Web 服務主套件, 所以也沒有因需求維護開發多項套件, 只是在伺服器上架設的是 Nginx 為主服務, 在眾多網路分享數據分析, 運行速度上為 Nginx 勝 Apache, 依據 Google 在網路不斷提述給於瀏覽者好的體感, 那網頁畫面呈現速度故然就是其一.

也因為這樣使得 Nginx 這幾年下來, 越來越多在開放式的瀏覽網站服務以 Nginx 為主, 可是在約 2016 年前, 其實安裝 Nginx 是非常麻煩的, 因為還不熱門的它, 並沒有所為的 rpm 套件, 也尚未被眾多擴充源看重而開放至可應用 YUM 安裝, 如果再加上 PHP 合併應用時, 還真讓管理者很費力. 而到了現在 CentOS 7 的以後同類型 Unix Linux, 或更新版本, 因 Nginx 的熱門因素下, 除 Nginx 官方提供簡易快速安裝外, 部份擴充源也更新至可以便於管理者透過 YUM 安裝, 其中 EPEL 多數管理者常用的 YUM 擴充套件源已包含此套件, 後續的操作記錄也將依據 EPEL 的方式進行.

PS. 開放式的瀏覽網站 : 前端 End User 瀏覽介面. 有關 EPEL 會於另外篇章中再做介紹. 並且該篇章記錄只以基礎安裝為主, 各項如 php 設定調整或 Nginx 虛擬網站等將不在此做記錄.

安裝 YUM 擴充套件源
分別可以由 Nginx 官方的源或 EPEL 源安裝 Nginx 服務套件, 以下各別記錄
● Nginx 官方版
Ⅰ. 開啟新的編輯 Nginx 官方 YUM 設定檔, 記錄是依據目前的版本為主, 如非此版本的狀況下, 建議可先參考 Nginx 官方發佈技術文件為主(Nginx 官方技術文件連結)
vi /etc/yum.repos.d/nginx.repo

Ⅱ. Nginx 官方 YUM 設定檔內容

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0

● EPEL 安裝 YUM 設定檔

yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
安裝 Nginx
因已完成簡便的 YUM 安裝, 所以接續的安裝程序可以簡便如下操作.
yum install nginx
安裝 PHP 7.x
有關於安裝 PHP 7.x 版, 請參考 「安裝 PHP 7.x 版本 for CentOS 或 Red Hat」記錄篇章.

PS.雖然本記錄是依 PHP 7.x 版本為主, 但如果有管理者依此記錄進行調整舊版本 PHP 者, 可略過此安裝 PHP 7.x 版, 不過請注意在管理者的主機中是否已安裝 php-fpm 套件, 後續 Nginx 與 PHP 合併應用設定, 需要此套件.

yum install nginx
設定 php-fpm
為能提供 Nginx 可以解譯 PHP 所以必須設定 php-fpm , 透過 php-fpm 的設定後, Nginx 可以透過定義的協定進行解譯 PHP, 而進一步的輸出畫面.

vi /etc/php-fpm.d/www.conf

在此範例為當下記錄時的檔案內行數, 但瀏覽管理者, 安裝的版本不與 Baymax 有所不同時, 會有少許不同, 但都是改成為相同值即可.

24 user = nginx ## 將等於值改為 nginx
26 group = nginx ## 將等於值改為 nginx
38 listen = 127.0.0.1:9000 ## 如前方有 ; 該符號, 請將其刪除
48 listen.owner = nginx ## 將等於值改為 nginx
49 listen.group = nginx ## 將等於值改為 nginx
修改 Nginx 預設網站設定檔
為能讓 Nginx 可以編輯 PHP 語言, 所以必須進行設定檔修改。 Ⅰ. 開啟預設網站設定檔案
vi /etc/nginx/nginx.conf

Ⅱ. 修改檔案內容
基本上在這預設網站設定檔中, 可分為兩個區域 events 及 http 等, events 即是特定需定強制定義環境參數, http 即是網站定義區段為主, 但在此不追述細項說明, 只針對在 http 中的預設網站(server 區段)進行調整, 便於全數安裝完成後, 測試是否可以正常運行網站及解譯 PHP.

server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /usr/share/nginx/html;

# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;

location / {
}
# 此區段啟點, 為追加定義網站與 .php 檔案解譯 PHP 設定
location ~ \.php$ {
try_files $uri =404;
#fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# 此區段結點, 為追加定義網站與 .php 檔案解譯 PHP 設定

error_page 404 /404.html;
location = /40x.html {
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
啟動所有服務及設定預設啟動
完成以上的設定後, 剩下就是讓才服務啟動, 分別要啟動服務有 Nginx 及 php-fpm, 請如下操作

systemctl start nginx
systemctl start php-fpm

在正常的狀況下, 會先看到的只有靜態的 Nginx 預設首頁畫面, 如下圖示.

接著為確認是否 PHP 也可以正常運作, 所以必須如下操作新增一個 php 檔案確認

vi /usr/share/nginx/html/index.php

在開啟的檔案裡請輸入以下內容, 然後存檔離開, 並再次透過瀏覽測試.

<?php
phpinfo();
?>

假使可以看到相似的 php 資訊, 代表 php 也正常運作

在一切測試正常後, 為能使下一次重新開機時, 可以自動就開啟服務, 所以需再設定預設啟動服務

systemctl enable nginx
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
systemctl enable php-fpm
Created symlink from /etc/systemd/system/multi-user.target.wants/php-fpm.service to /usr/lib/systemd/system/php-fpm.service.

測試文章

1 of 2 2 of 2 1 of 3 2 of 3 3 of 3