一、初始设置
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 更新
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