树莓派搭建web服务器的方法:使用Nginx和PHP7.3-f
在树莓派上搭建一个web服务器,用户可通过树莓派的Ip地址进行访问。
Nginx
是一个高速支持高并发的HTTP的web服务器,还支持反向代理(反向代理的意思差不多是说反向代理服务器位于用户和真正的服务器之间,用户访问反向代理服务器,反向代理代替用户访问目标服务器)。
Nginx的安装
使用命令:sudo apt-get install nginx
安装Nginx;
使用命令:sudo /etc/init.d/nginx start
启动Nginx;
Nginx配置文件位于:/etc/nginx/nginx.conf
,
PHP
PHP即“超文本预处理器”,是一种通用脚本语言。PHP是用于创建动态交互性站点在服务器端执行的脚本语言。
1. PHP-fpm(FastCGI Process Manager:FastCGI进程管理器)
PHP-fpm可以看做是php和Nginx的一个接口。
1.1 CGI:common gateway interface (公共网关接口)
公共网关接口(Common Gateway Interface,CGI)是Web 服务器运行时外部程序的规范
用户浏览器访问web服务器请求网页时,某些动态生成的内容是需要web服务器调用符合CGI规范的第三方程序来生成的。
每当客户请求CGI的时候,WEB服务器就请求操作系统生成一个新的CGI解释器进程(如php-cgi.exe)。CGI 的一个进程则处理完一个请求后退出,下一个请求来时再创建新进程。当访问量增大,并发存在,这种方式就不适合了。
1.2 FastCGI
像是一个常驻(long-live)型的CGI,它可以一直执行着,只要激活后,
不会每次都要花费时间去fork一次(这是CGI最为人诟病的fork-and-execute 模式)。
一般情况下,FastCGI的整个工作流程是这样的:
- Web Server启动时载入FastCGI进程管理器(IIS ISAPI或Apache Module)
- FastCGI进程管理器自身初始化,启动多个CGI解释器进程(可见多个php-cgi)并等待来自Web Server的连接。
- 当客户端请求到达Web Server时,FastCGI进程管理器选择并连接到一个CGI解释器。 Web server将CGI环境变量和标准输入发送到FastCGI子进程php-cgi。
- FastCGI 子进程完成处理后将标准输出和错误信息从同一连接返回Web Server。
当FastCGI子进程关闭连接时, 请求便告处理完成。
FastCGI子进程接着等待并处理来自FastCGI进程管理器(运行在Web Server中)的下一个连接。
1.3 PHP-fpm
php-fpm是 FastCGI 的实现,并提供了进程管理的功能。
进程包含 master 进程和 worker 进程两种进程。
master 进程只有一个,负责监听端口,接收来自 Web Server 的请求,而 worker 进程则一般有多个(具体数量根据实际需要配置),
每个进程内部都嵌入了一个 PHP 解释器,是 PHP 代码真正执行的地方。
2. PHP-fpm安装
安装命令:sudo apt-get install php-fpm
启动服务:sudo service php7.3-fpm restart
为Nginx配置php-fpm作为fastCGI,修改配置文件:/etc/nginx/sites-available/default
修改location相关内容为:
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
#try_files $uri $uri/ =404;
index index.html index.htm index.php default.html default.htm default.php;
}
location ~\.php$ {
fastcgi_pass unix:/run/php/php7.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
重启Nginx:sudo service nginx restart
访问网页
网页目录位于var/www/html
,经过上节的修改,默认访问的网页以index开头,如index.html、index.php
直接在浏览器访问树莓派IP即可。