了解概念
nginx fastcgi php-fpm的關系梳理 - talk_is_cheap - 博客園CGI(Common Gateway Interface)CGI全稱是“公共網關介面”(Common Gateway Interface),HTTP服務器與你的或其它機器上的程式進行“交談”的一種工具https://www.cnblogs.com/smallrookie/p/5634054.html
安裝Nginx
## 更新yum
sudo yum update
sudo yum autoremove apache
sudo yum autoremove apache2
sudo yum autoremove apache-server
## nginx原始碼編譯需要gcc支持
sudo yum -y install gcc
gcc -v
## 依賴包:nginx 的 http 模塊使用 pcre 來決議正則運算式
## 依賴包:nginx 使用zlib對http包的內容進行gzip
## 依賴包:使用openssl開啟https支持
sudo yum -y install pcre pcre-devel
sudo yum -y install zlib zlib-devel
sudo yum -y install openssl openssl-devel
## 安裝wget工具
sudo yum -y install wget
## 接下來,要訪問nginx官網 https://nginx.org/en/download.html
## 找到穩定版Stable version的 類似nginx-1.20.1的鏈接,復制好
## 例如 https://nginx.org/download/nginx-1.20.1.tar.gz
mkdir tmp
cd tmp
## 這里要修改為最新的下載鏈接
wget https://nginx.org/download/nginx-1.20.1.tar.gz
tar -zxvf nginx-1.20.1.tar.gz
ls
cd nginx-1.20.1/
./configure
make
sudo make install
## 安裝完畢,看看nginx放在哪
whereis nginx
## 默認的啟動、停止方式
啟動) sudo /usr/local/nginx/sbin/nginx
停止) sudo /usr/local/nginx/sbin/nginx -s stop
啟動后再檢查) curl 'http://localhost'
## 即可看到Welcome to Nginx! 開啟成功!
## 推薦以下更方便的管理方式 + Nginx自啟動:
sudo /usr/local/nginx/sbin/nginx -s stop
sudo touch /etc/init.d/nginx
sudo vi /etc/init.d/nginx
===== 添加以下內容(共108行) ========================================
#!/bin/bash
#
# Startup script for Nginx - this script starts and stops the nginx daemon
#
# chkconfig: - 85 15
# description: Nginx is an HTTP(S) server, HTTP(S) reverse proxy and IMAP/POP3 proxy server
# processname: nginx
# config: /usr/local/nginx/conf/nginx.conf
# pidfile: /usr/local/nginx/logs/nginx.pid
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0
nginx="/usr/local/nginx/sbin/nginx"
prog=$(basename $nginx)
NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"
[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
lockfile=/var/lock/subsys/nginx
start() {
[ -x $nginx ] || exit 5
[ -f $NGINX_CONF_FILE ] || exit 6
echo -n $"Starting $prog: "
daemon $nginx -c $NGINX_CONF_FILE
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}
stop() {
echo -n $"Stopping $prog: "
killproc $prog -QUIT
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}
restart() {
configtest || return $?
stop
sleep 1
start
}
reload() {
configtest || return $?
echo -n $"Reloading $prog: "
killproc $nginx -HUP
RETVAL=$?
echo
}
force_reload() {
restart
}
configtest() {
$nginx -t -c $NGINX_CONF_FILE
}
rh_status() {
status $prog
}
rh_status_q() {
rh_status >/dev/null 2>&1
}
case "$1" in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart|configtest)
$1
;;
reload)
rh_status_q || exit 7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q || exit 0
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
exit 2
esac
===========================================================
## 以上內容來自 https://blog.csdn.net/weixin_34144848/article/details/92748920,感謝!
## 設定腳本權限
sudo chmod 755 /etc/init.d/nginx
sudo chmod +x /etc/init.d/nginx
## 設定系統服務
sudo chkconfig --add nginx
sudo chkconfig nginx on
## 方便的nginx管理命令
sudo service nginx start
sudo service nginx stop
sudo service nginx status
## 再次檢查是否ok
sudo service nginx start
curl 'http://localhost'
## 即可看到Welcome to Nginx!
配置Nginx
cd /usr/local/nginx/conf/
sudo cp -p nginx.conf nginx.conf.origin-backup
## 配置nginx虛擬機串列
sudo vi nginx.conf
====== 在http{}里面為不同的網站添加不同的server ========
server {
listen 80;
server_name zzzzz.com;
access_log /var/log/nginx/access/zzzzz.com.log;
location / {
root /var/www/sites/zzzzz.com/;
index index.php index.html index.htm;
}
}
=====================================================
sudo mkdir -p /var/log/nginx/access/
sudo touch /var/log/nginx/access/zzzzz.com.log
## 重啟nginx
sudo service nginx restart
## 修改HOSTS
sudo vi /etc/hosts
========= 把zzzzz.com追加到"127.0.0.1"那行 ============
127.0.0.1 localhost localhost.localdomain zzzzz.com
======================================================
## 測驗內容
sudo mkdir -p /var/www/sites/zzzzz.com/
sudo vi /var/www/sites/zzzzz.com/index.html
## 隨便插入點內容
## 訪問瀏覽器,檢查zzzzz.com是否可用
安裝配置FastCGI
感謝 centos7下的基于nginx的fastcgi環境搭建及樣例測驗_chuanglan的專欄-CSDN博客_centos7 fastcgi1. 下載nginx安裝包wgethttp://nginx.org/download/nginx-1.11.12.tar.gz2.解壓,gunzipnginx-1.11.12.tar.gztar -xfnginx-1.11.12.tar.gz3.進入nginx-1.11.12檔案夾cd nginx-1.11.124. 執行命令 ./configurehttps://blog.csdn.net/chuanglan/article/details/69063624
## 部署fastcgi
## 1. 安裝fastcgi行程管理器spawn-cgi
wget http://good-good-study.rudon.cn/download/spawn-fcgi-1.6.3.tar.bz2
tar -jxf spawn-fcgi-1.6.3.tar.bz2
cd spawn-fcgi-1.6.3
./configure
make
sudo make install
spawn-fcgi -v
## 進行檢測是否安裝成功
## 2. 安裝fcgi庫
wget http://good-good-study.rudon.cn/download/fcgi-2.4.0.tar.gz
tar -xf fcgi-2.4.0.tar.gz
cd fcgi-2.4.0
./configure
make
sudo make install
## 查看9000埠(FastCGI、php-npm)
sudo netstat -anp | grep 9000
題外話:lighttpd.net上面找不到spawn-fcgi下載鏈接了
安裝PHP
默認的yum -y install php會安裝老版本的php5,需要用以下命令
## 參考 https://www.jianshu.com/p/1e23aba0a164
## 清空
php -v
sudo yum -y remove php*
## 設定php的源
## Remi 軟體源:主要提供最新版的 PHP 軟體包和其他一些 PHP 擴展工具包,它是針對 Fedora 和 RHEL 系分支變體 (包括:RHEL、CentOS、Oracle Linux 等等) 要安裝 PHP,推薦使用 Remi 軟體源,Remi 對 PHP 的支持和更新都很積極,可以在第一時間獲得新版本的支持,
sudo yum install epel-release -y
sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
## 查看有什么版本可用
yum list php*
yum list php* | grep php7
## 目標PHP 7.4
sudo yum --enablerepo=remi-php74 -y install php php-fpm
## ======= 自動安裝的依賴 ========
## Dependencies Resolved
## php x86_64 7.4.25-1.el7.remi
## libsodium x86_64 1.0.18-1.el7
## php-cli x86_64 7.4.25-1.el7.remi
## php-common x86_64 7.4.25-1.el7.remi
## php-json x86_64 7.4.25-1.el7.remi
## php-sodium x86_64 7.4.25-1.el7.remi
##
php -v
## PHP 7.4.25 (cli) (built: Oct 19 2021 15:18:10) ( NTS )
## Copyright (c) The PHP Group
## Zend Engine v3.4.0, Copyright (c) Zend Technologies
激活php-fpm(大坑)
[rudon@localhost ~]$ sudo systemctl status php-fpm.service
[sudo] password for rudon:
● php-fpm.service - The PHP FastCGI Process Manager
Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; disabled; vendor preset: disabled)
Active: inactive (dead)
[rudon@localhost ~]$ locate php-fpm
locate: can not stat () `/var/lib/mlocate/mlocate.db': No such file or directory
[rudon@localhost ~]$
[rudon@localhost ~]$ sudo updatedb
[rudon@localhost ~]$ locate php-fpm
/etc/php-fpm.conf
/etc/php-fpm.d
/etc/logrotate.d/php-fpm
/etc/php-fpm.d/www.conf
/etc/sysconfig/php-fpm
/etc/systemd/system/php-fpm.service.d
/usr/lib/systemd/system/php-fpm.service
/usr/sbin/php-fpm
/usr/share/doc/php-fpm-7.4.25
/usr/share/doc/php-fpm-7.4.25/README
/usr/share/doc/php-fpm-7.4.25/httpd-php.conf
/usr/share/doc/php-fpm-7.4.25/nginx-fpm.conf
/usr/share/doc/php-fpm-7.4.25/nginx-php.conf
/usr/share/doc/php-fpm-7.4.25/php-fpm.conf.default
/usr/share/doc/php-fpm-7.4.25/www.conf.default
/usr/share/licenses/php-fpm-7.4.25
/usr/share/licenses/php-fpm-7.4.25/fpm_LICENSE
/usr/share/man/man8/php-fpm.8.gz
/var/log/php-fpm
[rudon@localhost ~]$
[rudon@localhost ~]$
[rudon@localhost ~]$ sudo /usr/sbin/php-fpm
[04-Nov-2021 08:12:06] ERROR: Unable to create the PID file (/run/php-fpm/php-fpm.pid).: No such file or directory (2)
[04-Nov-2021 08:12:06] ERROR: FPM initialization failed
[rudon@localhost ~]$
[rudon@localhost ~]$
[rudon@localhost ~]$ sudo touch /run/php-fpm/php-fpm.pid
touch: cannot touch ‘/run/php-fpm/php-fpm.pid’: No such file or directory
[rudon@localhost ~]$
[rudon@localhost ~]$ ll /run/php-fpm/php-fpm.pid
ls: cannot access /run/php-fpm/php-fpm.pid: No such file or directory
[rudon@localhost ~]$ ll /run/php-fpm/
ls: cannot access /run/php-fpm/: No such file or directory
[rudon@localhost ~]$ ll /run/
total 56
drwxr-xr-x. 2 root root 100 Nov 4 08:09 abrt
-rw-------. 1 root root 11 Nov 4 08:09 alsactl.pid
.....
.....
[rudon@localhost ~]$ sudo mkdir -p /run/php-fpm/
[rudon@localhost ~]$
[rudon@localhost ~]$ sudo /usr/sbin/php-fpm
[rudon@localhost ~]$
[rudon@localhost ~]$ sudo systemctl status php-fpm.service
[sudo] password for rudon:
● php-fpm.service - The PHP FastCGI Process Manager
Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; disabled; vendor preset: disabled)
Active: inactive (dead)
[rudon@localhost ~]$
[rudon@localhost ~]$
沒有報錯就先這樣吧,
配置PHP + Nginx
php -r 'phpinfo();' | grep 'php.ini'
## 查看php.ini的位置
sudo vi /etc/php.ini
## 該修改的修改,例如短標簽的支持,記憶體大小等
## 開始修改nginx配置,使其支持php
cd /usr/local/nginx/conf/
sudo vi nginx.conf
## 每個站點的server{}配置,都要增加一段 location ~ \.php$ {}設定,如下:
================ 例子 ================
server {
listen 80;
server_name zzzzz.com;
access_log /var/log/nginx/access/zzzzz.com.log;
location / {
root /var/www/sites/zzzzz.com/;
index index.php index.html index.htm;
}
location ~ \.php$ {
root /var/www/sites/zzzzz.com/;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
=======================================
## 修改完畢,保存,重啟nginx
sudo service nginx restart
## 訪問 http://zzzzz.com/index.php(其內容為<?php phpinfo(); )
## OK!
## 如果是5xx錯誤,請看nginx錯誤日志
tail -f /usr/local/nginx/logs/error.log
特別鳴謝
https://segmentfault.com/a/1190000017789890
https://segmentfault.com/a/1190000017789890

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/348327.html
標籤:其他
上一篇:Spring架構及原始碼分析(一)Spring整體架構和容器基本實作
下一篇:Nginx學習八:虛擬主機
