快轉到主要內容
  1. 技術/

CentOS 7 上安裝與設定 Nginx + PHP7

·2 分鐘

之前在工作上幾乎都是採用 Apache,前一陣子常聽到同事說 Nginx,但我卻沒有實際用過,趁這這次試用 GCP,也來試試看 Nginx

注:以下的環境是在 GCE (Google Compute Engine) + CentOS7 上完成。

安裝 Nginx
#

要在 yum 中增加 Nginx,需手動加入 repo 設定,這樣就可以透過 yum 安裝了

# 讓 yum 能找到 nginx
$ vim /etc/yum.repos.d/nginx.repo

不同的 OS 有不一樣的設定,以下是我的設定 (CentOS7),其中的 $releasever 改成 7

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

設定好了以後確認版本 (我的版本是 1.12.1)

$ yum info nginx

安裝 nginx

$ sudo yum install -y nginx

啟用 nginx & 設定開機時啟動

$ sudo systemctl start nginx
$ sudo systemctl enable nginx

再來就可以試試看可不可以連線啦~成功的話就會看到以下畫面

Nginx 歡迎頁面

安裝 PHP7
#

因 CentOS 裡的 yum 沒有收錄 PHP,所以自行加入 PHP 7.1 的套件源,這裡就先安裝 webtatic 的 repo,再透過 yum 安裝 PHP

# epel
$ sudo rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
# webtatic
$ sudo rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
# PHP
$ sudo yum install -y php71w-cli php71w-fpm php71w-common php71w-pdo php71w-mbstring

啟用 php & 設定開機時啟動

$ sudo systemctl start php-fpm 
$ sudo systemctl enable php-fpm

確認安裝 & 查詢版本

$ php -v

設定 Nginx 和 PHP7
#

設定 Nginx 可支援 PHP,在需要的服務中加上以下片段,以我的需求是希望全部都支援 PHP,故加在全域的 server 區塊中:

$ sudo vim /etc/nginx/nginx.conf
location ~* \.php$ {
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_split_path_info ^(.+\.php)(.*)$;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

再來就是設定 PHP-FPM

$ vim /etc/php-fpm.d/www.conf
user = nginx
group = nginx

Nginx Server 啟動所使用的使用者 CentOS 預設用 nginx

都設定完成後就可以重啟啦~

$ sudo systemctl restart php-fpm
$ sudo systemctl restart nginx

Nginx 的預設目錄是 /usr/share/nginx/html,在目錄下建一個 index.php 測試是否可以正常運行

Nginx PHP Info

Virtual Host
#

Virtual Host 設定放在 /etc/nginx/conf.d/*.conf

troubleshooting
#

2017-07-21 在建置新的 GCE 時遇到 html & php 都可以正常執行,但是讀取 mp4 檔時會吐出 13: Permission denied 後來查到是因為 SELinux,但我是測試用的就先果斷關閉了

$ vim /etc/sysconfig/selinux 

SELINUX=enforcing 改成 SELINUX=disabled,改完以後重開就可以了

相關文章

刪除 .DS_Store 隱藏檔

·1 分鐘
最近新買了一台 NAS,在連線的時候常常會發現多了 .DS_Store 這個隱藏檔,平常在 Mac 上倒是無所謂,但是出現在 NAS 裡就覺得煩人了 DS_Store # .DS_Store (Desktop Services Store) 是一種 Mac OS X 作業系統所創造的隱藏文件,目的在於存貯目錄的自定義屬性,例如文件們的圖標位置或者是背景色的選擇。

雲端 PK - AWS & GCP

·2 分鐘
近年來雲端平台的服務應該大家都不陌生吧~它讓我們可以將維護與建置的工作交付給雲端平台去處理;雲端化以後 IT 維護改由雲端供應商負責,讓我們能花更多的專注力在創新研發上,還能加速部署與模型的建置,使得產品業務更靈活。

簡介 HTTP & HTTPS & HTTP2 協定

科技來自於人性,知識的傳遞原本是透過書本或口述,但是當網路出現後,人們想要在上傳遞資訊,就得要制定出一些規則,經過不斷修改,最後總結成了一個協定,把它命名為 HyperText Transfer Protocol。

Hexo 草稿

·1 分鐘
在寫部落格的時候常常會因為篇幅過大沒辦法一次編寫完成,或是同時編寫多篇文章,這時候就會希望不要把這些文章發佈出去。 建立草稿 # $ hexo new draft <title> Hexo 建立草稿後會產生檔案在 source/_drafts 下,在這目錄之下的文件不會被發佈出去。