树莓派搭建web服务器

一、初始设置

1.软件源更换为国内源

sudo nano /ect/apt/sources.list 进入软件源列表编辑
注释原来的deb开头内容(官方软件源,粘贴下面内容)
deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ wheezy main contrib non-free rpi
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ wheezy main contrib non-free rpi

一定要注意这个坑(wheezy-->buster),查看自己树莓派的版本:
lsb_release -c
deb http://mirrors.aliyun.com/raspbian/raspbian/ buster main contrib non-free rpi
deb-src http://mirrors.aliyun.com/raspbian/raspbian/ buster main contrib non-free rpi
deb http://mirrors.ustc.edu.cn/raspbian/raspbian/ buster main contrib non-free rpi
deb-src http://mirrors.ustc.edu.cn/raspbian/raspbian/ buster main contrib non-free rpi

sudo reboot 重启
sudo apt-get update 更新

image.png

2.设置时区

sudo dpkg-reconfigure tzdata 进入configuring tzdata界面选择Asia,Shanghai,回车确认
date 查看现在的时间

二、服务器搭建

1.安装nginx服务器、php

传统LAMP组合对raspberry显得较为笨重,为了保证服务器的高效运行,
这里选择LNMP(linux+nginx+MariaDB+php)

sudo apt-get install nginx 安装nginx服务器
(安装完会自动开启nginx,默认开机启动Nginx,如果不想开机启动Nginx,修改/etc/init.d/nginx文件)
sudo /etc/init.d/nginx start 启动nginx

sudo apt-get install php5-fpm php5-sqlite 树莓派4不支持php5,我们来安装php7
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) 安装PHP7.3

php -v 查看php版本号
php -i|grep "Loaded Configuration File" 查看php.ini配置文件位置
Loaded Configuration File => /etc/php/7.3/cli/php.ini 显示配置文件位置(通过命令行调用php时使用此位置)
配置文件有两个,另外一个在/etc/php/7.3/fpm/php.ini(通过fpm调用php(例如nginx)使用)

在浏览器输入树莓派的IP地址,可以看到“Welcome to nginx!”。
或者使用命令行:
curl 127.0.0.1

<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
.....

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

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 编辑php-fpm配置文件

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

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

2.配置nginx解析php

sudo vi /etc/nginx/sites-enabled/default 编辑配置nginx文件
index index.php index.html index.htm index.nginx-debian.html; 添加index.php

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;
}

sudo systemctl restart nginx 保存后重启nginx
sudo vi /var/www/html/index.php 在网站根目录创建一个php文件

<?php
phpinfo();  写入以下代码并保存,在浏览器中输入树莓派的IP地址即可看到phpinfo

3.安装Mairadb数据库

sudo apt-get install mariadb-server mariadb-client 安装mariadb
sudo mysql_secure_installation 数据库安全/初始化设置(根据提示设置数据库root用户密码-pi、是否允许外网访问等)

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; #刷新mysql的系统权限相关表,保证在不重启mysql服务器下直接生效
exit; #退出数据库

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

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

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

4.配置数据库MariaDB、远程连接

默认情况下MariaDB安装好后都没有配置访问用户的密码,因此如果需要远程连接时会无法连接。
因此需要先对root用户设置密码。

数据库,设置root密码
sudo mysql -u root -p 回车进入数据库,常规操作需要输入密码
use mysql; 切换到mysql数据库
UPDATE user SET password=password('root') WHERE user='root'; 用户root密码设置为root
UPDATE user SET plugin='mysql_native_password' WHERE user = 'root'; 重启mysql必须输入正确密码才能进入
flush privileges; 刷新
exit

sudo cat /etc/mysql/debian.cnf 查看默认密码,一开始为空
sudo systemctl restart mariadb 重启数据库
mysql -u root -p 测试一下:密码登录mariadb,验证是否修改成功

允许远程登录
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf 数据库MariaDB默认只监听127.0.0.1这个IP地址
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
# bind-address = 127.0.0.1 只监听了127.0.0.1这个IP,注释起来就监听所有IP
sudo /etc/init.d/mysql restart 重启服务

设置账号权限,远程登录
此时从外部连不上,先用mysql命令连接到MariaDB,授予主机访问权限
mysql -u root -p
use mysql;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION; 授予任意主机(%)访问数据库的所有权限,密码root
#GRANT ALL PRIVILEGES ON *.* TO 'user'@'remoteip' IDENTIFIED BY 'password' WITH GRANT OPTION; 如果需要指定访问主机,可以把%替换为主机的IP或者主机名
#update user set host='%' where user='root' and host='localhost'; 上一条在user表中增加一条记录,若只想访问而不想增加记录可用此行
FLUSH PRIVILEGES; --更新权限
不能远程的,尝试打开数据库服务器防火墙(CentOS7)

exit 退出数据库 mysql
#sudo service mysql restart 重启数据库,配置生效

树莓派数据库基本指令---注意分号

update user set password=password(”xueok654123″) where user=’root’; 修改数据库的密码
show databases; 查看当前已经建立的数据库
create database xxx; 新建一个数据库和表单(完成后使用show databases查看有没有新建成功)
drop database xxx; 删除xxx的数据库
create table xx(id int(10),name varchar(10)); 新建一个table名字叫xx,和他的两个域
show tables; 查看表单
describe xx; 查看表单有什么域
select * from xx; 查看相关表单信息
insert into xx(id,name) values (%d,%s)",[“1”,“sss”]) 插入数据

5.p上传下载

生成一个网站管理员用户,用于ftp上下载网站文件
sudo useradd webadmin 增加一个用户,用户名为webadmin
sudo passwd webadmin 修改用户webadmin的密码(密码:webadmin)
sudo chown -R webadmin /var/www/html 让用户webadmin拥有www根目录的所有权
sudo usermod -d /var/www/html webadmin 将用户webadmin的登录目录更改为www根目录

sudo apt-get install vsftpd 安装vsftpd服务器 (约400KB)
sudo service vsftpd start 启动ftp服务
sudo vi /etc/vsftpd.conf 编辑vsftdp的配置文件

找到以下行,定义一下
anonymous_enable=NO 表示:不允许匿名访问
local_enable=YES 设定本地用户可以访问。
write_enable=YES 设定可以进行写操作
local_umask=022 设定上传后文件的权限掩码。

sudo service vsftpd restart 重启vsftpd
OK,配置完成,用户webadmin登录ftp后,将直接进入www根目录,并可上下载文件\创建目录\删除文件等等.

存盘退出

测试一下:
使用Xftp,输入主机IP,用户名pi,密码pi,FTP的路径:/home/pi
主机IP,用户名webadmin,密码webadmin,FTP的路经:/var/www/html

三、排错

nginx故障

配置好服务器重启,nginx无法启动,打不开php

nginx -t 检测所修改的配置文件是否有语法错误。排错先确定问题再逐一验证,重点关注[emerg]
sudo service nginx restart 重启nginx
sudo service nginx status 查看nginx的状态

可通过xftp登录查看/比较内容

参考链接
https://www.notion.so/web-03acaa94022d476fbdadeda1436e7a2b#66912ad2180f4d01822df0773571ec33
https://www.notion.so/web-03acaa94022d476fbdadeda1436e7a2b#a357ea1719794d5cb7ce4e43165ac2af
https://www.notion.so/web-03acaa94022d476fbdadeda1436e7a2b#38d15c18982a47558c87c7f3d58cbb4a
https://www.notion.so/web-03acaa94022d476fbdadeda1436e7a2b#d92c6f05c3c2440ab6a900f9f63395b5
https://www.notion.so/web-03acaa94022d476fbdadeda1436e7a2b#4b037432315e4adca491d70b3cf7446c

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,826评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,968评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,234评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,562评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,611评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,482评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,271评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,166评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,608评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,814评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,926评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,644评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,249评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,866评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,991评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,063评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,871评论 2 354