Centos7 Nginx+PHP7 配置


Centos7 Nginx+PHP7 配置

內容:

  • 源碼編譯安裝Nginx和PHP
  • 配置PHP和Nginx,實現Nginx轉發到PHP處理
  • 測試
  • 設置Nginx、PHP開機自啟

安裝的版本:

  • Nginx:1.18.0 讀音engine x
  • PHP:7.4.8
1. 源碼編譯安裝Nginx和PHP

  安裝是執行源碼編譯安裝,需要有對應的庫工具,如gcc編譯和zlib壓縮這些,執行命令安裝:

shell> yum install -y openssl openssl-devel zlib zlib-devel pcre pcre-devel gcc gcc-c++ libxml2-devel libsqlite3x-devel

  如果執行配置時,./configure提示缺少某些庫時,可以再復制搜索查詢所需的庫。

  過程:下載->解壓->配置->編譯->安裝

shell> wget http://nginx.org/download/nginx-1.18.0.tar.gz #wget下載nginx源碼包,或者使用curl下載:curl -O http://nginx.org/download/nginx-1.18.0.tar.gz -O是--remote-name   Write output to a file named as the remote file
shell> tar -zxvf nginx-1.18.0.tar.gz	#解壓下載的源碼壓縮包 -z(--gzip)針對gzip的壓縮,-x(--extract)是提取,-f保留原有壓縮包的文件結構,-v打印詳情
shell> cd nginx-1.18.0 #進入目錄
shell> ./configure --prefix=/usr/local/nginx --with-http_ssl_module #執行configure會檢查所需的庫,成功后會生成一個Makefile文件,--prefix是執行安裝的路徑,--with-http_ssl_module是添加ssl模塊支持,這里不會用到
shell> make -j 8 #編譯,-j為--job,開啟8個工作任務
shell> make install #執行安裝,這里會把編譯生成的程序文件拷貝到安裝目錄下並創建相關的文件夾

  過程:下載->解壓->配置->編譯->安裝

shell> wget https://www.php.net/distributions/php-7.4.8.tar.gz #如果下載慢的話,可以用迅雷粘貼url下載,應該會比這樣下載快點
shell> tar -zxvf php-7.4.7.tar.gz	#解壓
shell> cd cd php-7.4.7/	#進入解壓目錄
shell> ./configure --prefix=/usr/local/php -with-config-file-path=/usr/local/php/etc --enable-fpm #執行配置檢查,--enable-fpm是開啟PHP的fpm資源管理,關於fpm可以查閱資料了解一下
shell> make -j 8	#編譯,-j為--job,開啟8個工作任務
shell> make install #執行安裝
shell> cp php.ini-development /usr/local/php/php.ini #拷貝php初始化配置文件,this file is responsible for configuring many of the aspects of PHP's behavior.
2. 配置PHP和nginx,實現Nginx轉發到PHP處理
  • nginx
shell> cd /usr/local/nginx #進入編譯安裝的nginx目錄
shell> vim conf/nginx.conf #修改nginx的配置文件

  修改默認的location塊:

location / {
	root   html;
        index  index.html index.htm index.php;	#添加PHP的index首頁
}

  再添加處理以.php結尾的location塊:

location ~* \.php$ {
        fastcgi_index   index.php;		        #PHP index頁面
        fastcgi_pass    127.0.0.1:9000;			#配置fastcgi服務器,請求會轉發到fastcgi服務器(可以理解為PHP解析器),IP和端口在php中配置
        include         fastcgi_params;			#加入fastcgi_params,如下面的fastcgi_param參數
        fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;
        fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;
}
  • php
shell> cd /usr/local/php #進入編譯安裝的php目錄
shell> cp etc/php-fpm.d/www.conf{.default,} #拷貝默認的的配置文件,相當於執行了cp etc/php-fpm.d/www.conf.default etc/php-fpm.d/www.conf,配置包括了php解析器的IP和端口,用戶和用戶組等配置
shell> cp etc/php-fpm.conf.default /usr/local/etc/php-fpm.conf #拷貝默認的php-fpm的啟動配置文件
shell> groupadd www-data #創建www-data用戶組
shell> useradd -g www-data -s /sbin/nologin www-data #創建www-data用戶,屬於www-data用戶組(-g --group),類型為不可登錄(-s --shell) 

  再修改php www的用戶和用戶組,設置為www-data,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.
user = www-data
group = www-data

  再修改php-fpm的配置文件,設置啟動的進程pid文件存儲位置,后面設置服務需要用到進程運行IDpidphp-fpm.conf文件:

[global]
; Pid file
; Note: the default prefix is /usr/local/php/var
; Default Value: none
 pid = /usr/local/php/var/run/php-fpm.pid
3. 測試

  編寫測試的php頁面

shell> rm /usr/local/nginx/html/index.html  #刪除nginx默認的首頁文件
shell> echo "<?php phpinfo(); ?>" >> /usr/local/nginx/html/index.php #創建測試文件,使用php的信息函數顯示信息

  啟動php和nginx

shell> /usr/local/php/sbin/php-fpm	#啟動php-fpm 
shell> /usr/local/nginx/sbin/nginx	#啟動nginx

  接着,就可以瀏覽器輸入nginx的服務器ip進行http訪問了,我的這里是輸入http://172.16.11.141:80,如下圖所示:

  至此,nginx+php的安裝和測試成功。

4. 設置Nginx、PHP開機自啟
  • nginx

  在centos7中,服務都是使用systemdctl命令而不是service了,即使是使用service命令其實也是鏈接到systemdctl命令,關於systemd的介紹可以參考阮一峰老師的:Systemd 入門教程:命令篇

shell> cd /lib/systemd/system/	#切換目錄到關於系統進程的目錄
shell> vim nginx.service	#在目錄下新建nginx.service文件,填入以下內容

nginx.service文件

[Unit]
Description=nginx service
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true

[Install]
WantedBy=multi-user.target

  [Unit]塊是這個服務單元的描述;[Service]塊是服務的配置,如啟動命令,停止命令,其中的Type=forking表示后台執行;[Install]塊是安裝的配置,multi-user.target是運行級別為3,Linux有0-6歌運行級別。最后,執行命令執行開啟開機自啟:

shell> systemctl enalbe nginx.service	#開啟nginx開機自啟服務,關閉對應dsiable

  關於systemctl的詳細使用介紹可以查閱這篇文章:How To Use Systemctl to Manage Systemd Services and Units

  • php

  php的服務也差不多,不過php在5.3.3以后的版本不再支持 (start|stop|reload) 等命令,需要使用Linux的信號量:INT,USR1,USR2,QUIT等。

shell> cd /lib/systemd/system/	#切換目錄到關於系統進程的目錄
shell> vim php-fpm.service	#在multi-user.target.wants目錄下新建php-fpm.service文件,填入以下內容

php-fpm文件:

[Unit]
Description=php-fpm service
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/php/sbin/php-fpm
ExecReload=kill -USR2 $(cat /usr/local/php/var/run/php-fpm.pid)
ExecStop=kill -INT $(cat /usr/local/php/var/run/php-fpm.pid)
PrivateTmp=true

[Install]
WantedBy=multi-user.target

  關於Linux的信號量,可以查閱這篇文章介紹:Signals in Linux ,最后開啟php-fpm服務:

shell> systemctl enable php-fpm.service	#開啟php-fpm開機自啟服務,關閉對應dsiable
5. 最后

  最后重啟進行測試:

shell> reboot		#重啟
shell> ps aux | grep php-fpm	#查看php-fpm相關進程是否運行
shell> ps aux | grep nginx		#查看nginx相關進程是否運行


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM