nginx php配置_在树莓派4上部署nginx+php

一、安装 nginx

apt install nginx -y

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

dcf2a884faae98a323d848d946edb2da.png

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

nginx --> nginx-full --> libnginx-mod-http-xxxx                     --> nginx-common --> lsb-base, debconf                     --> libc6, libpcre3, libssl1.1, zlib1g

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

8fd9b71186ed79651ca4fec69565fff7.png

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

02d765f4f19eecb4514ffe7fe61eb426.png

其中 /etc/nginx/nginx.conf 为总的配置入口。

其大概的结构如下:

user www-data;worker_processes auto;include /etc/nginx/modules-enabled/*.confevents {    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

官网:https://php-fpm.org/

使用 apt search 搜一下有没有对应的安装包。发现有:

3bfbddad8aac42006904ad756f2503f6.png

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

那就不用再安装了。

2.1 php

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

7c59e3cfec48cd8b8a4dc8732e0f08de.png

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

<?php echo "Hello World!"?>

执行:php test.php

071c0ad1e6e3581790f9a0e8c2e78133.png

说明 php 是可用的。

2.2 php-fpm

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

fb593455ce0b7376fe1e6335b93babd2.png

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

7af0dd8848e6ea9967a39d14db41f1da.png

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

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

3d5b26d00e0799c6c891799e6800bfc6.png

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

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

e36b905a5f8afcdeae20f7a9da820ae4.png

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

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

fde6dbc00fd363205d637fd1b0ad250f.png

三、配置 nginx + php-fpm

3.1 FastCGI 的工作原理

http的请求处理流程:

4daeef48f3607ccf9418eb934c0c6313.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 的进程号

6a8451ddc7b89a1ffa47a03240262b3a.png

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

e57ba3caecf829c42228512d660145d8.png

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

a468c456d2d3d23d01a8fd15745faeff.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

<?php echo phpinfo();?>

/tmp/http/test.php

<?php echo "Hello\n";?>

3.4 测试

使用命令重新加载配置:

nginx -s reload

然后使用浏览器尝试访问:http://192.168.0.139:8000

c62bba0b8c618fc534169e3e1aede33c.png

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

成功了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值