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 = apacheuser = 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
其他的等用到在安裝吧