简介:基于树莓派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服务器的更多相关文章

  1. 树莓派变成一个Web服务器: nginx + php + sqlite

    将树莓派变成一个Web服务器,通过访问网页,就可以控制树莓派,比如:查看摄像头\开灯等等. 一想到Linux Web服务器,我们首先想到的是,Apache + MySql + Php. 树莓派可以安装 ...

  2. 树莓派(raspberry pi)学习11: 将树莓派变成一个Web服务器(转)

    将树莓派变成一个Web服务器,通过访问网页,就可以控制树莓派,比如:查看摄像头\开灯等等. 一想到Linux Web服务器,我们首先想到的是,Apache + MySql + Php. 树莓派可以安装 ...

  3. 将树莓派变成一个web服务器(2):Nginx+Flask+uWSGI部署全过程

    1)安装Flask,uwsgi,nginx sudo apt-get update sudo apt-get install python-flask #Flask sudo apt-get inst ...

  4. 使WebDev.WebServer.exe 当web服务器

    Vs自带的Visual Studio Development_server非常好用.比XP的IIS强多了. XP的IIS经常报访问数过多. 但是, WebDev.WebServer.exe 有个限制就 ...

  5. Visual Studio中用于ASP.NET Web项目的Web服务器

    当您在 Visual Studio 中开发 Web 项目时,需要 Web 服务器才能测试或运行它们. 利用 Visual Studio,您可以使用不同的 Web 服务器进行测试,包括 IIS Expr ...

  6. HTTP协议图--与 HTTP 协作的 Web 服务器

    HTTP 通信时,除客户端和服务器外,还有一些用于协助通信的应用程序.如下列出比较重要的几个:代理.缓存.网关.隧道.Agent 代理. 1.代理   代理 HTTP 代理服务器是 Web 安全.应用 ...

  7. Windows2008 r2“Web服务器HTTP头信息泄露”漏洞修复

    一.漏洞名称 漏洞名称 漏洞摘要 修复建议 Web服务器HTTP头信息泄露 远程Web服务器通过HTTP头公开信息. 修改Web服务器的HTTP头以不公开有关底层Web服务器的详细信息. 说明:在ii ...

  8. 【转】用树莓派搭建web服务器

    本文将详细介绍如何在树莓派上配置服务器,和<教你在Xubuntu上搭建LAMP服务器>有些类似,多了一些介绍在树莓派上的不同步骤的地方. 这种服务器的配置被称为LAMP,是最流行的服务器配 ...

  9. 树莓派做下载机+Web服务器(Aria2下载+yaaw做UI+nginx)

    今天收到了小派,UK产的绿板子,还配了个透明盒子,装在里面闪亮亮的很好看,而且只有卡片大小,寻思着用它做什么好呢?想来想去,看到人家拿小派作家庭媒体中心,还有人拿它当下载机,于是就萌生了一个家庭媒体中 ...

随机推荐

  1. PHP输出缓冲及其应用

    缓冲(buffer)是为了协调吞吐速度相差很大的设备之间数据传送而采用的技术,用来存放缓冲数据的区域叫缓冲区,在计算机科学领域,当数据从一个地方传送到另一个地方时,缓冲区被用来临时存储数据.与缓冲相似 ...

  2. JRebel的优势与使用(基于IDEA)

    在平时的工作产出中,代码出现问题时往往要不停的修改测试其正确性,每次修改一部分代码都需要重启项目,这十分的耗时,对于企业大型项目来说你重启的时间够你去喝杯咖啡了,本篇博文主要就减少重启项目时间为目的来 ...

  3. 模块(二)os hashlib

    模块(二)os hashlib 1.序列化模块 1.1 json 将满足条件的数据结构转化成特殊的字符串,并且可以反序列化转回去 # 两对方法 # 1 dumps() loads() ## 多用于网络 ...

  4. HDU 2795:Billboard(线段树)

    http://acm.hdu.edu.cn/showproblem.php?pid=2795 Billboard Problem Description   At the entrance to th ...

  5. Azkaban Flow 2.0 使用简介

    官方建议使用Flow 2.0来创建Azkaban工作流,且Flow 1.0将被弃用 目录 目录 一.简单的Flow 1. 新建 flow20.project 文件 2. 新建 .flow 文件 3. ...

  6. 利用os模块生成 文件夹和文件

    需求: 使用os模块创建如下目录结构 glance/ ├── __init__.py ├── api │ ├── __init__.py │ ├── policy.py │ └── versions. ...

  7. Nginx运行报错unknown directive ""

    使用文本编辑器把编码格式修改为UTF-8即可. 推荐文本编辑器:notepad++,自行百度搜索即可下载

  8. 和朱晔一起复习Java并发(一):线程池

    和我之前的Spring系列文章一样,我们会以做一些Demo做实验的方式来复习一些知识点. 本文我们先从Java并发中最最常用的线程池开始. 从一个线程池实验开始 首先我们写一个方法来每秒一次定时输出线 ...

  9. tomcat一键发布

    1. 场景描述 linux下tomcat一键发布,包含停用服务.删除war包.拷贝war包及备份.重启服务等,以前的版本还包含svn更新及打包,后来在生产上怕出问题,改成本地打war包后,ftp上传到 ...

  10. CDQZ集训DAY8 日记

    又一次翻车…… 先提一句昨晚的事.昨天晚上身后一帮成都七中的人用十分戏谑的语气交出了达哥的名字,看着NOI2017的获奖名单,如果他们真的是在嘲笑的话,真的挺想上去干他们一顿的…… 上午考试第一题一脸 ...