树莓派跑php,在树莓派4上部署nginx+php
本試驗是基于樹莓派的?buster?版本。
一、安裝 nginx
apt install nginx -y
完成安裝之后,可以使用 dpkg -l | grep nginx?找到相關的安裝包:
通過分析 /var/lib/dpkg/status?可以得到 nginx?安裝包的依賴關系:
nginx --> nginx-full --> libnginx-mod-http-xxxx
--> nginx-common --> lsb-base, debconf
--> libc6, libpcre3, libssl1.1, zlib1g
安裝完成后,我們可以看一下 nginx?的版本:
nginx?的配置文件全在 /etc/nginx/?路徑下。
其中 /etc/nginx/nginx.conf?為總的配置入口。
其大概的結構如下:
user www-data;
worker_processes auto;
include /etc/nginx/modules-enabled/*.conf
events {
worker_connections 768;
}
http {
# Basic Settings
...
# SSL Settings
...
# Logging Settings
...
# Gzip Settings
...
# Virtual Host Configs
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
虛擬主機的定議在 /etc/nginx/sites-enable/?路徑下。
目前該路徑下只有 default?一個文件。它在里面定義了一個 80?端口的服務,根目標在 /var/www/html?路徑下。
二、安裝 php?與 php-fpm
使用 apt search?搜一下有沒有對應的安裝包。發現有:
執行安裝的時候,發現已經有了。
那就不用再安裝了。
2.1 php
試了一下 php?命令,也是有的,且可以正常使用。
寫一個最簡單的php程序試一下:
echo "Hello World!"
?>
執行:php test.php
說明 php?是可用的。
2.2 php-fpm
能找到 php-fpm?相關的命令:
另外還在 /etc/init.d?下找到對應的啟動項:
通過執行上述的指定,php-fpm?服務就已經啟動了。
通過 ps?可以看到對應的服務進程:
可以看到有一個 master?與兩個 woker。
在網上的資料說,php-fpm?是綁的 127.0.0.1:9000?端口。我們實際看:
是 unix:/run/php/php7.3-fpm.sock
與 php?相關的配置文件在 /etc/php/?路徑下。
三、配置 nginx + php-fpm
3.1 FastCGI?的工作原理
http的請求處理流程:
要將 nginx?與 php?的 fastcgi?進行組裝,就要告訴 nginx? php-fpm?的 unix domain socket?或 ip socket。
3.2?在nginx中添加新的服務
在 /etc/nginx/sites-enabled/?路徑下創建文件 mytest?作為一個新的服務,內容如下:
server {
listen 8000; # 這個 http 服務綁定在 8000 TCP端口上。
server_name localhost;
root /tmp/http; # 指定 root ,表示Web頁面的路徑。
location / {
index index.php;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php7.3-fpm.sock; # 指定與 php-fpm 的通信 socket
include /etc/nginx/fastcgi.conf; # 通過導入文件,來指定FastCGI的參數與內容格式
}
}
每個 location?都是路由設置,表示對應的路徑該怎么處理。
這里,我們定義了兩個 location:
/? 如果沒有指定資源路徑,就去 root?路徑下去找 index.htm, index.html, index.php?作為頁面。
~ \.php$? 如果匹配到以 .php?結尾的資源,那么就使用?fastcgi?交給第三方的模塊去處理。
我們重點分析 ~ \.php 的 location。
這里,我們使用的就是 php?的 fastcgi。由于 php-fpm?綁定的是域 socket unix:/run/php/php7.3-fpm.sock
unix:/run/php/php7.3-fpm.sock是通過以下方法找到的。
首先,找出 php-fpm?的進程號
查 1410?進程所占的資源有就有:
況且,在 /etc/php/7.3/fpm/pool.d/www.conf?中有:
所以 L38,fastcgi_pass?填寫的就是unix:/run/php/php7.3-fpm.sock
完成了nginx的配置文件編寫之后,使用 nginx -t -c /etc/nginx/nginx.conf?檢查一下配置文件的語法是否有問題。
如果有錯,則糾正,直止沒錯誤為止。
3.3 編寫測試Web頁面
我們到 /tmp/http?路徑下,創建?index.php?與 test.php?兩個文件:
/tmp/http/index.php
echo phpinfo();
?>
/tmp/http/test.php
echo phpinfo();
?>
3.4?測試
使用命令重新加載配置:
nginx -s reload
然后使用瀏覽器嘗試訪問:http://192.168.0.139:8000
嘗試一下:curl -v http://192.168.0.139:8000/test.php
成功了。
總結
以上是生活随笔為你收集整理的树莓派跑php,在树莓派4上部署nginx+php的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux连接xshell时连不上的问题
- 下一篇: php怎样传数据到html代码,传递数据