使用用树莓派打造远程WEB服务器
简介:基于树莓派3B打造个人的远程Web服务器完全教程,主要是各个帖子内容的集合,并非原创但经过实践验证保证其在最新的系统环境上有效。
系统配置: Raspberry Pi 3B + Raspbian 10 + MySQL5.7 + Tomcat 9 + Nginx + 公网IP。
工具:Win32DiskImager 、FileZilla(FTP客户端)、Navicat for MySQL、VNC Viewer等
一、树莓派简介
树莓派是由树莓派基金为学习计算机编程教育设计的一种微型电脑,可搭载多种Linux操作系统及Windows IoT。树莓派作为基于ARM的微型电脑主板,具有完整的外设接口,此外,还有丰富的可编程GPIO引脚,功能强大,可玩性高,操作简单。
二、安装Raspbian
Raspbian是树莓派官方的Linux操作系统,基于Debian Linux。第三方Linux操作系统还有Ubuntu META / Core / Server 等版本。
搜索Raspbian进入官网Download页面:

下载Raspbian Buster with desktop 并解压得到IMG系统镜像文件:

打开Win32DiskImager 选择IMG文件并选择SD卡设备,点击Write写入:

写入完成后将SD卡插入树莓派,连接显示屏,等待系统启动。
三、系统配置篇
系统开启后进入桌面,先完成一些偏好设置,在系统提示重启之前进行如下设置:

使能SSH和VNC(远程桌面):

可以重启树莓派了。
如果没有显示屏提供操作,把树莓派用网线连接在路由器上,打开Windows 命令提示符或者使用Xshell等SSH客户端,输入ssh pi@树莓派IP(登陆路由器可看到):
ssh pi@192.168.43.132

用以下方法也可以启用VNC:
输入sudo raspi-config
键盘上下键移动高亮Interfacing Options 回车:

选择P3 VNC Enable 使能VNC功能

重启树莓派。
电脑上安装VNC Viewer,在文本框里输入树莓派IP:

回车后输入用户名和密码:

成功连接:

FTP文件传输
打开Filezilla新建连接,选择SFTP协议,输入用户名和密码:

成功连接:

四、软件安装篇
1. apt 源配置
更换 apt 及 apt-get 的仓库源
sudo nano /etc/apt/sources.list
删除已有内容,之后复制粘贴:
deb http://mirrors.aliyun.com/raspbian/raspbian/ stretch main non-free contrib
deb-src http://mirrors.aliyun.com/raspbian/raspbian/ stretch main non-free contrib
键盘Ctrl + X,Y,Enter
更换树莓派基金会维护软件源:
sudo nano /etc/apt/sources.list.d/raspi.list
将所有行行首 # 注释掉,而后复制粘贴
deb http://mirrors.ustc.edu.cn/archive.raspberrypi.org/debian/ stretch main ui deb-src http://mirrors.ustc.edu.cn/archive.raspberrypi.org/debian/ stretch main ui
Ctrl + X,Y,Enter
2. Java环境
简单安装: sudo apt install openjdk-8-jdk
强迫症安装:进入oracle官网下载(貌似还要注册)
网盘分享链接:https://pan.baidu.com/s/1Rzg0xOMXVpZbcq889jMyTQ
提取码:1jd0
选择合适的版本:

用Filezilla 把下载的文件拖到指定目录:

# 解压文件
tar -zxf jdk-8u221-linux-arm32-vfp-hflt.tar.gz
# 移动文件到opt目录(个人习惯)
sudo mv jdk1..0_221/ /opt/
# 环境变量配置:
sudo nano /etc/profile
# 在文档末尾添加如下信息
JAVA_HOME=/opt/jdk1..0_221
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

Ctrl + X,Y,Enter
source /etc/profile 再输入java –version看到如下信息则安装成功:

3. Tomcat
简单安装:sudo apt install tomcat8 –y
开启方式:tomcat start
强迫症安装:进入Tomcat官网下载最新的版本

# 同样用FTP传到树莓派,解压:
tar zxf apache-tomcat-9.0..tar.gz
# 移动到opt目录:
sudo mv apache-tomcat-9.0. /opt/
# 更改权限,使其访问不受限制:
sudo chmod -R /opt/apache-tomcat-9.0./
# 开启Tomcat服务:
bash /opt/apache-tomcat-9.0./bin/startup.sh
在浏览器输入http://树莓派IP:8080 可以看到Tomcat服务开启。

4. MySQL
4.1 安装MySQL:
简单安装:sudo apt install mysql-server –y
不一定成功,如下图的依赖错误:

终极安装:进入debian的mysql软件包站点将mysql和其所依赖的包全部下载并逐个安装:https://packages.debian.org/sid/mysql-server-5.7,
此法是apt自动安装脚本的手动实现,这里吐槽以下apt一点都不智能,经常出现依赖问题,再有MySQL被Oracle公司收购后走向商业化,现在开源工作者力推MariaDB,它是MySQL的一个开源分支,用法和命令与MySQL完全一致。

共需下载9个包:

可以直接下载我打包好的:
链接:https://pan.baidu.com/s/1ZMBWovALd-SZZMvfmCjyRw
提取码:72h5
例举其中一个包的下载方法:
选择合适的体系结构,Raspbian是基于armhf

选择镜像站点开始下载,当然是亚洲中国的最快:

使用dpkg包管理命令安装,按顺序输入如下命令:
sudo dpkg -i libaio1_0.3.112-3_armhf.deb
sudo dpkg -i libevent-core-2.1-6_2.1.8-stable-4_armhf.deb
sudo dpkg -i libevent-extra-2.1-6_2.1.8-stable-4_armhf.deb
sudo dpkg -i libmecab2_0.-6_armhf.deb
sudo dpkg -i mysql-client-core-.7_5.7.26-1_armhf.deb
sudo dpkg -i mysql-common_5.+1.0.5_all.deb
sudo dpkg -i mysql-client-.7_5.7.26-1_armhf.deb
sudo dpkg -i mysql-server-core-.7_5.7.26-1_armhf.deb
sudo dpkg -i mysql-server-.7_5.7.26-1_armhf.deb
所有包安装完成后输入sudo mysql出现如下信息,则安装成功:

4.2 配置MySQL
最新的MySQL5.7安装后没有提示修改密码,此时密码是未知的,通过以下方式重置:
1.打开MySQL配置文件:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
如图所示加入:
skip-grant-tables
并注释:
bind-address =127.0.0.1(开启远程连接用)

Ctrl + X,Y,Enter
2. 输入mysql –u root –p 不用输密码直接回车,在MySQL输入:
use mysql;
update user set authentication_string=password("123456") where user="root";

密码已经修改,输入
select user,plugin from user;

如果信息与红框一样则依旧无法登陆,再进行如下步骤:
update user set authentication_string=password("123456"),plugin='mysql_native_password' where user='root';
grant all privileges on *.* to root@`%` identified by '';
flush privileges;
Ctrl + D 退出

重启mysql服务:
sudo service mysql restart
电脑上打开Navicat for MySQL,进行远程连接测试:

信息来源:https://www.cnblogs.com/cpl9412290130/p/9583868.html
5. Nginx
安装方法如下:
sudo apt install nginx –y
浏览器输入IP:

使用Nginx反向代理Tomcat:
sudo vim /etc/nginx/sites-available/default # 修改Nginx配置文件(/etc/nginx/nginx.conf引用了此文件)

保存退出之后 sudo nginx -s reload 重新载入配置文件。
刷新浏览器

JS、CSS、图片等静态资源未加载,再次修改配置文件:
server {
listen 80;
server_name 127.0.0.1;
location / {
proxy_pass http://127.0.0.1:8080/;
proxy_redirect http://127.0.0.1:8080/ http://127.0.0.1/;
proxy_set_header Host $host;
proxy_hide_header Server;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_connect_timeout 10;
proxy_send_timeout 10;
proxy_read_timeout 10;
proxy_intercept_errors on;
proxy_buffering off;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|css|js|eot|svg|ttf|woff|woff2|properties|json)$ {
root /opt/apache-tomcat-9.0.22/webapps/ROOT;
if (-f $request_filename) {
expires 1d;
break;
}
# proxy_pass http://127.0.0.1:8080/;
}
}
sudo nginx -s reload #重新加载配置文件
刷新浏览器,页面完整加载:

但是我的Web项目静态资源又有问题了,按照修改了N遍还是一样,还得继学习。
五、网络配置篇
(内网透传,随时随地访问,真正的远程服务器)
还没开学,路由器用不了,开学配置好后再更。
六、其他
1.vim安装错误:

解决方法:
sudo apt autoremove vim-common
sudo apt install vim
2.JavaWeb项目部署
Eclipse中右键Web项目工程,导出war包到电脑桌面


通过FTP上传到树莓派Tomcat web应用目录,Tomcat运行状态会自动解压:

登陆浏览器测试:

3.有时间再写 如何搭载Windows IoT建立居家环境监控系统,并将数据传输到云端。
使用用树莓派打造远程WEB服务器的更多相关文章
- 树莓派变成一个Web服务器: nginx + php + sqlite
将树莓派变成一个Web服务器,通过访问网页,就可以控制树莓派,比如:查看摄像头\开灯等等. 一想到Linux Web服务器,我们首先想到的是,Apache + MySql + Php. 树莓派可以安装 ...
- 树莓派(raspberry pi)学习11: 将树莓派变成一个Web服务器(转)
将树莓派变成一个Web服务器,通过访问网页,就可以控制树莓派,比如:查看摄像头\开灯等等. 一想到Linux Web服务器,我们首先想到的是,Apache + MySql + Php. 树莓派可以安装 ...
- 将树莓派变成一个web服务器(2):Nginx+Flask+uWSGI部署全过程
1)安装Flask,uwsgi,nginx sudo apt-get update sudo apt-get install python-flask #Flask sudo apt-get inst ...
- 使WebDev.WebServer.exe 当web服务器
Vs自带的Visual Studio Development_server非常好用.比XP的IIS强多了. XP的IIS经常报访问数过多. 但是, WebDev.WebServer.exe 有个限制就 ...
- Visual Studio中用于ASP.NET Web项目的Web服务器
当您在 Visual Studio 中开发 Web 项目时,需要 Web 服务器才能测试或运行它们. 利用 Visual Studio,您可以使用不同的 Web 服务器进行测试,包括 IIS Expr ...
- HTTP协议图--与 HTTP 协作的 Web 服务器
HTTP 通信时,除客户端和服务器外,还有一些用于协助通信的应用程序.如下列出比较重要的几个:代理.缓存.网关.隧道.Agent 代理. 1.代理 代理 HTTP 代理服务器是 Web 安全.应用 ...
- Windows2008 r2“Web服务器HTTP头信息泄露”漏洞修复
一.漏洞名称 漏洞名称 漏洞摘要 修复建议 Web服务器HTTP头信息泄露 远程Web服务器通过HTTP头公开信息. 修改Web服务器的HTTP头以不公开有关底层Web服务器的详细信息. 说明:在ii ...
- 【转】用树莓派搭建web服务器
本文将详细介绍如何在树莓派上配置服务器,和<教你在Xubuntu上搭建LAMP服务器>有些类似,多了一些介绍在树莓派上的不同步骤的地方. 这种服务器的配置被称为LAMP,是最流行的服务器配 ...
- 树莓派做下载机+Web服务器(Aria2下载+yaaw做UI+nginx)
今天收到了小派,UK产的绿板子,还配了个透明盒子,装在里面闪亮亮的很好看,而且只有卡片大小,寻思着用它做什么好呢?想来想去,看到人家拿小派作家庭媒体中心,还有人拿它当下载机,于是就萌生了一个家庭媒体中 ...
随机推荐
- 【设计模式】结构型04桥接模式(Bridge Pattern)
学习地址:http://www.runoob.com/design-pattern/bridge-pattern.html 桥接模式(Bridge Pattern) 桥接模式(Bridge patte ...
- Spring Boot2从入门到实战:统一异常处理
都说管理的精髓就是“制度管人,流程管事”.而所谓流程,就是对一些日常工作环节.方式方法.次序等进行标准化.规范化.且不论精不精髓,在技术团队中,对一些通用场景,统一规范是必要的,只有步调一致,才能高效 ...
- 简单的python多线程实例
今天抽时间又学了一下python的多线程,理解的又多了一些,为了利于理解,写了一段很简单的代码,如下: import threading from time import sleep def task ...
- C++ 洛谷 P2657 [SCOI2009]windy数 题解
P2657 [SCOI2009]windy数 同步数位DP 这题还是很简单的啦(差点没做出来 个位打表大佬请离开(包括记搜),我这里讲的是DP!!! 首先Cal(b+1)-Cal(a),大家都懂吧(算 ...
- 鼠标滑至某位置,在鼠标旁边出现详情弹窗div
首先效果如下: 代码如下: //这个是一个循环,循环所有name为xx的td标签(也就是给tdname为XXX的添加事件)$("td[name='strGoodsSKU']").e ...
- jacoco生成覆盖率报告
操作步骤: 1.下载git上最新的代码到本地 git clone {代码地址} 2.在服务器上打出相关服务的jar包 1) 登上服务器,切换到目标服务所在路径: cd /xx/xx/xx/xx 2) ...
- gh-ost
目录 1.简介 2.为什么不用触发器 ? 3.命名由来 4.亮点 5.使用 6.它是如何工作的? 7.工作模式 7.1.模式1 -- 连上从库,在主库上修改 7.2.模式2 -- 直接在主库上修改 7 ...
- 使用GDAL实现DEM的地貌晕渲图(一)
目录 1. 原理 1) 点法向量 2) 日照方向 (1) 太阳高度角和太阳方位角 (2) 计算过程 3) 晕渲强度 2. 实现 3. 参考 @ 1. 原理 以前一直以为对DEM的渲染就是简单的根据DE ...
- 2.秋招复习简单整理之String、StringBuffer、StringBuilder的区别和联系
String特点: 1.String是不可变对象,一旦赋值创建就不变,这意味着对String的一切修改将产生一个新的字符串,比如String的subString,replace.toUpperCase ...
- .NET Core 学习资料精选:入门
开源跨平台的.NET Core,还没上车的赶紧的,来不及解释了-- 本系列文章,主要分享一些.NET Core比较优秀的社区资料和微软官方资料.我进行了知识点归类,让大家可以更清晰的学习.NET Co ...