树莓派搭建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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。