第一步当然是先把树莓派的硬件装起来
然后第二步就不知道干啥了
简单分析一下,这个项目可以分成两个相对独立的部分,第一部分是在本地先把网站的大多数功能实现,(不同类型用户登录、即时文件共享、WebSocket下发文件、Canvas绘图、视频推流、弹幕、人脸识别签到等等),第二部分是通过树莓派热点,作为网站的服务器,使得连接热点的设备能够访问网站。
这样来看其实树莓派占的比重是很小的,核心业务逻辑还是体现在网站本身(emm大概)。
那么就先从可能比较简单但是非常陌生的树莓派环境配置开始吧。
可能是没有现成代码可以抄的原因,第二个项目的方向感明显弱了很多。但是总归要先做些什么,才有机会让想法自己浮现出来吧。
我们的硬件条件大概是这样的:
寄过来的时候老师已经提前把系统烧好,并且设置了固定的ip,可以直接通过VNC访问。
但是因为经过我一些乱七八糟的设置(后面会提到),后来它就连不上了。于是正好自己重新装一遍系统。由于我没有合适的显示器(其实有,但是觉得太麻烦了),这里介绍的是只需要用一根网线的方法。
当然,方法有很多。。就是因为方法太多,细节也太多了,所以很容易走弯路。以下是我自己这两天摸索出来的一个方法,也不一定对每个人都通用。
下载Raspbian系统映像文件
https://www.raspberrypi.org/downloads/raspberry-pi-os/
安装etcher,通过读卡器烧录
在root中创建一个名为ssh(无拓展名)的空文件。(开启ssh功能,默认关闭)
弹出读卡器,将TF卡插入树莓派,用网线连接电脑
在命令行中输入arp -a,查看树莓派动态分配的ip
上图中192.168.137.20就是树莓派的ip,一个特征是它的物理地址肯定和其他几项不一样。
在putty中输入sudo raspi-config进行设置
选项5.Interfacing Options中开始SSH和VNC功能
选项7.Advanced Options->A5 Resolution->Mode 85设置分辨率(否则VNC中无法显示桌面)
ps:一开始就是因为乱改了dhcpcd.conf中的配置信息,导致静态ip和网关不匹配,于是就无法连接了。
sudo ln -s /home/pi/node/bin/express /usr/bin/express
安装完成后,创建文件夹并用express -e生成脚手架。效果如图
接下来只要安装依赖项就可以了。
为了检验服务器能否联通,我们做一个简单的index.html放在public下。
终端搭建web服务器
node /home/pi/website/bin/www
在电脑浏览器中输入树莓派ip+:3000(192.168.137.20:3000),可以查看到该网页,同时可以看到后端的反应
以上实现了树莓派本地web服务器的搭建,接下来要将树莓派作为一个Wifi热点,给连接的设备分配ip地址,并能够连接到自建的网站。
其实看这个就好了https://www.qter.org/portal.php?mod=view&aid=5516
sudo apt install hostapd
sudo systemctl stop hostapd
interface=wlan0
driver=nl80211
ssid=Raspberrypi
hw_mode=g
channel=7
wmm_enabled=0
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=12345678
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
修改/etc/default/hostapd
,将DAEMON_CONF的注释去掉并修改为
此时wifi已经建立好,但是还不能连接,因为还没有设置分配的ip。修改wlan0端口为静态。方法类似修改eth0。应该只要改ip就可以了。值得一提,这里设置的ip不能和eth0产生冲突。(前三位不能都一样)
安装dnsmasq
这个是用来分配ip的
sudo apt install dnsmasq
sudo systemctl stop dnsmasq
interface=wlan0
dhcp-range=192.168.4.2,192.168.4.20,255.255.255.0,24h
sudo systemctl start hostapd
node /home/pi/website/bin/www
用手机测试一下Wifi,再看看能不能连接192.168.4.1:3000
ok,可以看到树莓派给手机分配了一个ip地址,手机也能访问到我们自建的网站。那么可以说就达到预期的目标了,接下来只需要专注于制作网站本身,并将做好的网站连同框架整个发送给树莓派就可以了。
虽然这个过程看起来挺流畅的,其实坑很多。。有时需要通过路由器获取树莓派的ip,再远程连接控制,有时连路由器都找不到ip,只能重装系统从头搞一遍。。很多问题都要一点点排查,稍微走偏一点都会浪费很多时间。。虽然这些实质上都是因为对计算机网络本身的了解还不够充分,但是还是想说,搞硬件搞配置真的太夭寿了。。。
好在暂时应该不用管树莓派的事了,后续就只要想办法把网页做好就行了。当然,因为现在没代码抄了,看来只能把之前第一个项目逃过的课补起来了。