树莓派4B安装PHP7.3 Nginx MySQL 教程

2023-05-16

非原创  感谢作者

https://web-security.cn/rapberry_pi_4b_install_php7.3_nginx_mysql/

 

 

在树莓派4B上搭建Web服务器环境:PHP7.3 + Nginx + Mariadb。数据库Mariadb是MySQL的一个分支,API和命令行兼容MySQL。

安装PHP7.3

目前官方源已经有PHP7.3的版本,不用添加其它下载源就能安装。首先更新软件列表:


sudo apt-get update
  

安装PHP7.3:


sudo apt install -y -t buster php7.3-fpm php7.3-curl php7.3-gd php7.3-intl php7.3-mbstring php7.3-mysql php7.3-imap php7.3-opcache php7.3-sqlite3 php7.3-xml php7.3-xmlrpc php7.3-zip
  

通过命令php -v能够看到PHP版本号7.3,说明安装完成:


pi@raspberrypi:~ $ php -v
PHP 7.3.4-2 (cli) (built: Apr 13 2019 19:05:48) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.4, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.3.4-2, Copyright (c) 1999-2018, by Zend Technologies
  

查看php.ini配置文件位置:


pi@raspberrypi:~ $ php -i|grep "Loaded Configuration File"
Loaded Configuration File => /etc/php/7.3/cli/php.ini
  

输出显示配置文件在/etc/php/7.3/cli/php.ini。注意,实际上配置文件有两个,另外一个在/etc/php/7.3/fpm/php.ini。通过命令行调用php时,会使用第一个配置文件;通过fpm调用php(例如nginx)会使用第二个配置文件。

php-fpm常用管理命令:
开启php-fpm: sudo systemctl start php7.3-fpm
关闭php-fpm: sudo systemctl stop php7.3-fpm
重启php-fpm: sudo systemctl restart php7.3-fpm
编辑php-fpm配置文件: vi /etc/php/7.3/fpm/php-fpm.ini

安装Nginx

安装nginx:
sudo apt-get install nginx

安装完成后,会自动开启nginx。在浏览器输入树莓派的IP地址,可以看到“Welcome to nginx!”。
或者使用命令行:


pi@raspberrypi:~ $ curl 127.0.0.1
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
.....
  

能够输出html说明nginx安装成功。

默认的网站根目录:/var/www/html
nginx配置文件目录:/etc/nginx/
nginx主配置文件位置:/etc/nginx/nginx.conf

nginx常用管理命令:
启动nginx: sudo systemctl start nginx
关闭nginx:sudo systemctl stop nginx
设置nginx开机启动:sudo systemctl enable nginx

配置nginx解析php

编辑配置nginx文件:
sudo vi /etc/nginx/sites-enabled/default

找到index指令,添加index.php。修改后:


index index.php index.html index.htm index.nginx-debian.html;
  

找到# pass PHP scripts to FastCGI server后面的location,删除注释。修改后如下:


location ~ \.php$ {
		include snippets/fastcgi-php.conf;
	#
	#	# With php-fpm (or other unix sockets):
		fastcgi_pass unix:/run/php/php7.3-fpm.sock;
	#	# With php-cgi (or other tcp sockets):
		#fastcgi_pass 127.0.0.1:9000;
}
  

保存后重启nginx:


sudo systemctl restart nginx
  

在网站根目录创建一个php文件:


sudo vi /var/www/html/index.php
  

写入以下php代码并保存:


<?php
phpinfo();
  

在浏览器中输入树莓派的IP地址即可看到phpinfo。

安装Mairadb数据库

使用以下命令安装mariadb:


sudo apt-get install mariadb-server mariadb-client
  

执行数据库初始化安装:


sudo mysql_secure_installation
  

根据提示设置数据库root用户密码、是否允许外网访问等。

尝试登录数据库:


mysql -u root -p
  

输入上一步设置的密码,发现无法登录,错误提示如下:

ERROR 1698 (28000): Access denied for user ‘root’@’localhost’

原因: 数据库默认使用系统用户登录,需要修改为使用密码登录。
解决方案: sudo mysql -u root ,登入数据库后,依次执行以下SQL:

use mysql #切换到mysql数据库
update user set plugin='mysql_native_password'; #修改plugin字段
flush privileges; #刷新权限
exit; #退出数据库

再次使用mysql -u root -p即可通过密码登录数据库,无需root权限执行。

mariadb配置文件保存在多个位置:
/etc/mysql/mariadb.cnf
/etc/mysql/mariadb.conf.d/
/etc/mysql/conf.d/

mariadb常用命令:
启动mariadb: sudo systemctl start mariadb
关闭mariadb:systemctl stop mariadb
设置mariadb开机启动:sudo systemctl enable mariadb

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

树莓派4B安装PHP7.3 Nginx MySQL 教程 的相关文章

  • PDO 多查询“SQLSTATE[HY000]:一般错误”

    我仍在学习 PDO 所以我可能会错过一些东西 但基本上我正在尝试将一行插入表中 然后选择生成的 id 我不确定它是否喜欢一个 pdo 语句中的两个查询 这是我用来执行 SQL 的代码 public function ExecuteQuery
  • 如何在没有脚本 (PHP) 或服务器配置 (Nginx) 的情况下检测移动设备(和/或移动 cookie)?

    我们很快就会推出网站的移动版本 我们的完整网站和移动网站仅在主题上有所不同 即网址相同 唯一的区别在于前端 当用户访问我们的网站时 我们需要能够执行以下操作 1 检查 cookie 移动 true 或 false 以确定是否已定义完整与移动
  • 动态表单字段验证的数据库设计

    在我的应用程序中 我允许用户创建一个包含他们想要的任何 HTML 表单字段 例如文本输入 文本区域 选择等 的表单 我想让用户能够为每个字段定义 0 个或多个累积验证规则 最多可能有 25 个不同的验证规则 我应该如何建模 这是一个潜在的解
  • 抽象 PHP 类中的返回类型“self”

    尝试创建一个抽象类来部分实现其子类的功能并强制执行此实现所需的契约 我使用以下构造 abstract class Parent public static function fromDB string name instance new s
  • MySQL 启动错误 - 根元素丢失

    我在 Windows Server 2003 R2 上安装 MySQL 大约两个月了 启动时 我们会看到一个错误 显示 高严重性错误 根元素丢失 然后是另一个高严重性错误 显示 在调用 WriteToLog 方法之前必须定义日志文件路径 任
  • mysql 将 varchar 字段排序为整数

    我的表中有一个 varchar 字段 我想对其进行排序 但我需要将此字段作为整数处理 意思是如果按文本排序 顺序是 19 2 20 但我想得到正确的顺序 2 19 20 谁能帮我 我不知何故没有设法运行查询CAST 我总是得到Error C
  • MySql 5.7 函数 UUID() 默认排序规则 - 非法混合排序规则

    Problem MySQL uuid 默认排序规则与配置连接排序规则不进行比较 我有一个使用字符集创建的数据库 表 字段 utf 8和排序规则utf8 polish ci my cnf 如下 init connect SET NAMES u
  • MySQL Workbench 深色主题

    我刚刚开始学习 SQL 课程 并且一直在尝试不同的 GUI 我喜欢使用 MySQL Workbench 但白色背景刺瞎了我的眼睛 我已经搜索并找到了一些其他讨论编辑 xml 文件的相关帖子 我尝试用几种不同的方式对其进行编辑 但无济于事 我
  • SELECT COUNT() 与 mysql_num_rows();

    我有一个大表 60 数百万条记录 我正在使用 PHP 脚本来浏览该表 PHP 脚本 带分页 加载速度非常快 因为 表引擎是InnoDB因此SELECT COUNT 非常慢并且mysql num rows 不是一个选项 所以我将总行数 我用来
  • 是否可以使用 LOAD DATA INFILE 类型命令来更新数据库中的行?

    伪表 primary key first name last name date of birth 1 John Smith 07 04 1982 眼下名包含多行的用户全名 期望的结果是分割数据 因此first name包含 John la
  • 删除 ibdata1 后 MySQL 表消失了

    几天前 经过一番谷歌搜索后 我发现了这篇文章 我无法再让 mysql 运行了 xampp XAMPP MySQL 意外关闭 https stackoverflow com questions 18022809 xampp mysql shu
  • mysql 准备好的语句错误:MySQLSyntaxErrorException

    我使用准备好的语句编写了选择语句 每次尝试运行都会出现此错误 我如何克服这个错误 我的jdbc连接器是mysql connector java 5 1 13 bin jar 我的代码 public Main add ad to getAdD
  • 如何在 laravel 中查询 json 列?

    我用的是 Laravel 5 6 我有一块田地 字段的数据类型为json 字段 desc 字段 的值如下所示 code 1 club CHE country ENGLAND code 2 club BAY country GERMANY c
  • MySQL 错误 1264:列的值超出范围

    As I SETMySQL 中的 cust fax 表如下所示 cust fax integer 10 NOT NULL 然后我插入这样的值 INSERT INTO database values 3172978990 但随后它说 错误 1
  • Laravel Eloquent with()-> 返回 null

    我正在尝试使用 Eloquent 来获取具有以下功能的特定产品 brand id映射到a的列brands表 该brand数组返回空 这里有什么明显需要改变的地方吗 product Product with images gt with br
  • 使用 Java 连接到 MySql - SSL 连接

    我一直在尝试连接到 MySql 数据库 该数据库使用 ssl 连接与 java 并遇到麻烦 如果任何人可以帮助我 将会有很大的帮助 手动连接MySql 我们使用MySQL Workbench 参数 主机名 test db1 ro xxxxx
  • 如何在每次运行 python 程序时添加新列

    我希望我的表的第一列作为卷号 第二列作为名称 每当我运行 python 程序时 我想在表中添加一列日期 在这个新列中 我想填充从 user list 获得的列表将包含值 P A P P 等 如何处理 我尝试首先通过 alter 命令添加一列
  • golang sql 驱动程序的准备语句

    关于golang的sql driver 下面两条语句有什么区别 store DB is sql DB type rows err store DB Query SQL args err nil defer rows Close and st
  • Join 表(关联表)有主键吗?多对多关系

    Join 表 关联表 有主键吗 多对多的关系 我见过一些带有主键的连接表 一些没有 有人可以解释一下连接表中何时会有主键吗 为什么 先感谢您 在纯 联接 或联结表中 所有字段都将成为主键的一部分 例如 让我们考虑下表 CREATE TABL
  • 选择具有按两列分组的最大值的行

    我见过很多关于此类问题的解决方案 尤其是这个SQL 仅选择列上具有最大值的行 https stackoverflow com questions 7745609 sql select only rows with max value on

随机推荐

  • 不吹不黑,逛GitHub没看过这10个开源项目,绝对血亏

    今天的分享 xff0c 也算是一次简单的复盘 xff0c 我们花了点时间梳理了一下 xff0c 以便诸位在空余时间可以研究学习 下面开始进入正题 xff1a 1 Build Your Own X GitHub Star xff1a 61 3
  • 快速精准的人头检测,代码已开源

    昨天arXiv一篇新上论文 FCHD A fast and accurate head detector xff0c 来自江森自控 xff08 Johnson Controls Inc xff09 的软件工程师Aditya Vora分享了一
  • UDP 用户数据报协议

    UDP 用户数据报协议 引言 UDP是一种保留消息边界 xff08 不合并 xff0c 不拆分 xff09 的简单的面向数据报的传输层协议 使用UDP协议的时候 xff0c 一般来说 xff0c 每个被应用程序请求的UDP输出操作只生产一个
  • 有新家了

    我在CSDN有个小窝了 我是一个JAVA初学者 虽然不是从事IT业 但对计算机有着浓厚的兴趣 希望在CSDN这个大家庭里 能得到朋友们的帮助 当然 我也会力所能及的帮助其它初学者解决一些简单问题的 以后我会把每天学习的内容 来这里发表一下
  • 动态绑定和多态

    class Animal private String name Animal String name this name 61 name public void enjoy System out println 34 叫声 34 clas
  • 离线安装gitlab

    1 下载跟Linux版本相关的 rpm包 地址 xff1a https packages gitlab com gitlab gitlab ce 2 将下载的rpm包上传到机器 3 解压 rpm ivh gitlab ce 15 6 2 c
  • windows子系统 WSL 的根目录位置

    根目录对应位置 我安装的子系统是 Ubuntu18 04 xff0c 根目录对应的位置是 xff1a C Users Administrator AppData Local Packages CanonicalGroupLimited Ub
  • 2020阿里云学生服务器操作步骤!

    前言 年龄在12岁 24岁之间的大陆个人实名认证用户 和 大陆全日制在校大学生在学生认证有效期内 xff0c 满足上述任一条件即可享受优惠价格 xff0c 同一用户只能保有一台学生优惠弹性计算产品 xff0c 一台数据库RDS产品 xff0
  • python用Selenium爬取携程网机票信息

    一 问题说明 1 selenium库是爬虫过程中比较讨巧的一个第三方库 xff0c 它能够跳过js ajax等交互 xff0c 上手比较容易 2 基础代码是根据其他博主参考而来 xff0c 但携程网站不断变化 xff0c 除ID等不变的信息
  • Docker---Docker-compose安装部署Samba服务

    Docker compose安装部署Samba服务 目录 Docker compose安装部署Samba服务一 环境准备二 创建docker compose yaml文件三 测试服务 一 环境准备 1 拉取samba镜像 xff1a doc
  • 金山词霸2005专业版序列号,绝对正确 JQ7M7-XCD38-834H2-TRTWJ-J7BG4

    金山词霸2005专业版序列号 xff0c 绝对正确 JQ7M7 XCD38 834H2 TRTWJ J7BG4
  • Java数据结构——用顺序表编写一个简易通讯录

    Java数据结构 用顺序表编写一个简易通讯录 1 定义线性表的抽象数据类型 xff08 接口 xff09 2 编写顺序表 xff08 类 xff09 3 编写测试程序 xff08 main方法所在的可运行类 xff09 Java数据结构 用
  • sprintf和snprintf用法

    1 sprintf 函数 sprintf 函数原型为 intsprintf char str const char format 其中的格式控制字符串与 printf 的格式控制字符串的作用是一样的 xff0c 表示的是参数的格式 xff0
  • 官网的订阅发布节点

    发布话题 1 usr bin env python 2 license removed for brevity 3 import rospy 4 from std msgs msg import String 5 6 def talker
  • Tkinter教程之Pack篇

    39 39 39 Tkinter教程之Pack篇 39 39 39 Pack为一布局管理器 xff0c 可将它视为一个弹性的容器 39 39 39 1 一个空的widget 39 39 39 不使用pack coding cp936 fro
  • Sqlserver中解析JSON

    参考 xff1a https www red gate com simple talk sql t sql programming consuming json strings in sql server 主要的过程代码单独贴出来 xff1
  • 解决逃离塔科夫0.12.9离线版修改商人可回收所有物品的问题

    复制这里的代码替换 xff0c 不会出现问题 span class token string property property 34 sell category 34 span span class token operator span
  • 手把手教你一套完善且高效的k8s离线部署方案

    作者 xff1a 郝建伟 背景 面对更多项目现场交付 xff0c 偶而会遇到客户环境不具备公网条件 xff0c 完全内网部署 xff0c 这就需要有一套完善且高效的离线部署方案 系统资源 编号主机名称IP资源类型CPU内存磁盘01k8s m
  • 好日子1/6啦啦啦

    今天我直接开搞把作业搞定 xff0c 上题目 题目背景 小明在 A 公司工作 xff0c 小红在 B 公司工作 题目描述 这两个公司的员工有一个特点 xff1a 一个公司的员工都是同性 A 公司有 NN 名员工 xff0c 其中有 PP 对
  • 树莓派4B安装PHP7.3 Nginx MySQL 教程

    非原创 感谢作者 https web security cn rapberry pi 4b install php7 3 nginx mysql 在树莓派4B上搭建Web服务器环境 xff1a PHP7 3 43 Nginx 43 Mari