1. 程式人生 > >使用樹莓派打造遠端WEB伺服器

使用樹莓派打造遠端WEB伺服器

簡介:基於樹莓派3B打造個人的遠端Web伺服器完全教程,主要是各個帖子內容的集合,並非原創但經過實踐驗證保證其在最新的系統環境上有效。

系統配置: Raspberry Pi 3B + Raspbian + 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 [email protected]

用以下方法也可以啟用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官網下載(貌似還要註冊)

選擇合適的版本:

用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個包:

例舉其中一個包的下載方法:

選擇合適的體系結構,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

使用Nginx反向代理Tomcat。

使用Nginx代理多個伺服器實現均衡負載。

搞了很久一直有問題,搞清楚了再更,不過一個Tomcat用反向代理沒意義。

 

五、網路配置篇

(內網透傳)

學校還沒開學,路由器用不了,開學配置好後再更。

六、其他

1.vim安裝錯誤:

 

解決方法:

sudo apt autoremove vim-common

sudo apt install vim

2.JavaWeb專案部署

Eclipse中右鍵Web專案工程,匯出war包到電腦桌面

 

通過FTP上傳到樹莓派Tomcat web應用目錄,Tomcat執行狀態會自動解壓:

登陸瀏覽器測試:

 

3.有時間再寫 如何搭載Windows IoT建立居家環境監控系統,並將資料傳輸到雲