• 使用树莓派打造远程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.8.0_221/ /opt/
    # 环境变量配置:
    sudo nano /etc/profile
    # 在文档末尾添加如下信息
    JAVA_HOME=/opt/jdk1.8.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.22.tar.gz
    # 移动到opt目录:
    sudo mv apache-tomcat-9.0.22 /opt/
    # 更改权限,使其访问不受限制:
    sudo chmod -R 777 /opt/apache-tomcat-9.0.22/
    # 开启Tomcat服务:
    bash /opt/apache-tomcat-9.0.22/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.996-6_armhf.deb
    sudo dpkg -i mysql-client-core-5.7_5.7.26-1_armhf.deb
    sudo dpkg -i mysql-common_5.8+1.0.5_all.deb
    sudo dpkg -i mysql-client-5.7_5.7.26-1_armhf.deb
    sudo dpkg -i mysql-server-core-5.7_5.7.26-1_armhf.deb
    sudo dpkg -i mysql-server-5.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 '123456';
    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建立居家环境监控系统,并将数据传输到云端

  • 相关阅读:
    前端 JavaScript&Dom
    前端 css续
    前端 初级篇(CSS)
    前端 初级篇(HTML)
    堡垒机
    Python操作RabbitMQ
    常用到代码片段
    关于文件上传功能的思考
    JS正则表达式将url转成json格式
    一行代码解决各种IE兼容问题,IE6,IE7,IE8,IE9,IE10
  • 原文地址:https://www.cnblogs.com/kryo/p/11296467.html
Copyright © 2020-2023  润新知