1. 程式人生 > >centos7下安裝php+nginx日常筆記

centos7下安裝php+nginx日常筆記

    由於之前的開發環境比較亂,自己大部分時間放在寫程式碼上,基礎環境的搭建過程在記憶中變得模糊,現在開始把安裝過程記錄下。之前一直在contos6.x下面搞東西,貌似6已經停止更新,所以跟上潮流在contos7上安裝。

   1.安裝centos7

     我從centos官網下的版本是minimal版本CentOS-7-x86_64-Minimal-1708.iso,虛擬機器安裝就好

    網路的話選擇橋接,簡單方便。但是由於種種原因,我的網路環境不能用橋接,所以用了NAT模式用來連線外網,但是主機和虛擬機器無法通訊,所有又加一個host-only網路用來主機和虛擬機器通訊,至於設定細節就不多說了。網路配好後就用xshell連線了,之後就沒虛擬機器什麼事情了。

    為了方便管理服務,打算所有的相關軟體都用yum安裝,因為yum安裝後可以直接有systemctl配套,start,stop,status,enable,disable等,省的你自己去配置了。如果要自己配置,去/lib/systemd/system拷貝一個service檔案改改就行。

  2.安裝php

   安裝: yum install php

    安裝完成之後用php -v檢視版本,yum安裝的軟體配置檔案一般都在/etc下,php.ini配置檔案就在etc下/etc/php.ini,有什麼需要自己修改。

安裝php-fpm:yum install php-fpm

    安裝完成後配置檔案在/etc/php-fpm.conf,配置引用了/etc/php-fpm.d/*.conf,預設有一個www.conf,修改www.conf,找到使用者、使用者組設定:

; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
; RPM: apache Choosed to be able to access some dir as httpd
;user = apache
; RPM: Keep a group allowed to write in log dir.
;group = apache

user = www
group = www

印象中cgi.fix_pathinfo需要關閉,否則有安全漏洞,具體可以網上搜,所以生產環境的話php.ini中找到它修改。

; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI.  PHP's
; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok
; what PATH_INFO is.  For more information on PATH_INFO, see the cgi specs.  Setting
; this to 1 will cause PHP CGI to fix its paths to conform to the spec.  A setting
; of zero causes PHP to behave as before.  Default is 1.  You should fix your scripts
; to use SCRIPT_FILENAME rather than PATH_TRANSLATED.
; http://php.net/cgi.fix-pathinfo
;cgi.fix_pathinfo=1
cgi.fix_pathinfo=0

註釋掉apache使用者,使用自己的使用者和組比如www,nginx等等(前提你得有指定的使用者)。

啟動php-fpm服務,systemctl start php-fpm.service   (.service可以省略)

如果要設定開機自啟動 systemctl enable php-fpm.service 就可以了

[[email protected] ~]# ss -tln | grep 9000
LISTEN     0      128    127.0.0.1:9000                     *:*

用ss命令檢視9000埠已經啟用,當然也可以用systemctl status php-fpm檢視啟動狀態

3.安裝nginx

    本來以為yum install nginx可以直接安裝的,沒想到這個版本的contos7還沒有支援。沒辦到nginx官網上下載,結果官網還是推薦用yum來安裝(地址:http://nginx.org/en/linux_packages.html),只不過要修改yum設定

建立檔案/etc/yum.repos.d/nginx.repo,內容如下:

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

把baseurl中的“OS改成centos, “OSRELEASE改成7(根據自己的系統版本設定),即baseurl=http://nginx.org/packages/centos/7/$basearch/。檔案建立好後yum install nginx

安裝好後/etc目錄下出現nginx資料夾,主配置檔案/etc/nginx/nginx.conf,裡面引用/etc/nginx/conf.d/*.conf

nginx.conf開頭設定nginx的使用者

user www;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

拷貝一份/etc/nginx/conf.d/default.conf,修改nginx的server配置,然後儲存檔案/etc/nginx/conf.d/my.test.com.conf(隨意),下面是最簡單的配置一份:

server {
    listen       80;
    server_name  my.test.com;
    root           /site/my.test.com;

    location / {
        index  index.html index.htm;
    }

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

配置完成,啟動服務systemctl start nginx.service

在站點根目錄下建立index.php列印phpinfo(),訪問虛擬機器http://my.test.com/index.php(如果沒有配置虛擬host,也可以用ip訪問),結果報file not found,我以為是php-fpm配置錯了,結果檢查多變沒有問題。於是再建立一個index.html試試,訪問http://my.test.com/index.html結果報403許可權問題,檢測檔案使用者和使用者組沒有問題,賦777許可權也沒有用。網上找到說是SELinux問題(http://www.shuchengxian.com/article/658.html)

於是按照文章說的把SELinux關掉。

vi /etc/selinux/config

#SELINUX=enforcing
SELINUX=disabled

關掉後要重啟機器reboot。

如果之前沒有把php-fpm以及nginx設定為開機自啟動(systemctl enable xxxx.service)的話要手動起服務

systemctl start php-fpm

systemctl start nginx

繼續訪問http://my.test.com/index.php,沒有問題

後續我下了composer來建立Yii框架專案結果報錯缺擴充套件mbstring,檢視php預設只開啟了幾個,每一個擴充套件都是單獨的配置檔案放在/etc/php.d下面:


    /etc/php.d/curl.ini
    /etc/php.d/fileinfo.ini
    /etc/php.d/json.ini
    /etc/php.d/phar.ini
    /etc/php.d/zip.ini

於是把幾個常用的擴充套件安裝下

yum install php-mbstring

yum install php-dom

yum install php-pdo

yum install php-mysql

其他的等用到在安裝吧