树莓派跑php,在树莓派4上部署nginx+php

本试验是基于树莓派的 buster 版本。

一、安装 nginx

apt install nginx -y

完成安装之后,可以使用 dpkg -l | grep nginx 找到相关的安装包:

6b5dc7ea7765c561c4e4d1151ac49d7b.png

通过分析 /var/lib/dpkg/status 可以得到 nginx 安装包的依赖关系:

nginx --> nginx-full --> libnginx-mod-http-xxxx

--> nginx-common --> lsb-base, debconf

--> libc6, libpcre3, libssl1.1, zlib1g

安装完成后,我们可以看一下 nginx 的版本:

84a232a86dde7679d0a8db92bd3f6f34.png

nginx 的配置文件全在 /etc/nginx/ 路径下。

0bcdd0b49d2185ddbfe6079db6d99089.png

其中 /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 搜一下有没有对应的安装包。发现有:

8dad2e0f0a05904cfc147d338ec64a3a.png

执行安装的时候,发现已经有了。

那就不用再安装了。

2.1 php

试了一下 php 命令,也是有的,且可以正常使用。

0b2669f1527a632fe9af98d2db586dbe.png

写一个最简单的php程序试一下:

echo "Hello World!"

?>

执行:php test.php

5636a1362fba37d5a29447249c591b80.png

说明 php 是可用的。

2.2 php-fpm

能找到 php-fpm 相关的命令:

97de39322045aebf4f61da011967e95c.png

另外还在 /etc/init.d 下找到对应的启动项:

2ab2f81d14e7b485141b6cff949bcbfb.png

通过执行上述的指定,php-fpm 服务就已经启动了。

通过 ps 可以看到对应的服务进程:

84d87ce39e467f7633f42cf1f897c118.png

可以看到有一个 master 与两个 woker。

在网上的资料说,php-fpm 是绑的 127.0.0.1:9000 端口。我们实际看:

b4b098fe856e00a64e5ae616e7b797d7.png

是 unix:/run/php/php7.3-fpm.sock

与 php 相关的配置文件在 /etc/php/ 路径下。

f363ce6759f33753f18942affbc568f7.png

三、配置 nginx + php-fpm

3.1 FastCGI 的工作原理

http的请求处理流程:

1ebef3d397c59cd6b1f3329482c6d2b2.png

要将 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 的进程号

eb3870c8181db725924fda9ecf5fea9c.png

查 1410 进程所占的资源有就有:

419fce92247613824f26c7941fc02278.png

况且,在 /etc/php/7.3/fpm/pool.d/www.conf 中有:

dd300262080eca32767328d24ddf73bb.png

所以 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

759325a80cfd2448bf9c9229c469ca75.png

尝试一下:curl -v http://192.168.0.139:8000/test.php

成功了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值