树莓派搭建服务器

jdk tomcat mysql nginx php

连接树莓派 ssh 192.168.0.112 -l pi

1. jdk安装

查看树莓派系统信息

1
uname -a

Linux armv7l GNU/Linux

https://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html#top

arm浮点运算是?

硬浮点Hard-float

编译器将代码直接编译成发射给硬件浮点协处理器(浮点运算单元FPU)去执行。FPU通常有一套额外的寄存器来完成浮点参数传递和运算。

具体:https://blog.csdn.net/songkai320/article/details/74732487

解压

1
tar zxvf jdk-7u60-linux-arm-vfp-hflt.tar.gz

放到/usr/local/jdk7

1
cp -r jdk1.7.0_60 /usr/local/jdk7

配置环境变量

1
nano /etc/profile

变量

1
2
3
4
JAVA_HOME=/usr/local/jdk7
CLASSPATH=.:$JAVA_HOME/lib/:$JRE_HOME/lib
PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH

使其生效

1
source profile

验证

1
java -v

测试

1
2
touch Main.java
vi Main.java
1
2
3
4
5
public class Main{
public static void main(String[] args){
System.out.println("Hello");
}
}
1
2
javac Main.java
java Main

2. tomcat安装

https://tomcat.apache.org/download-80.cgi

下载apache-tomcat-8.5.47.tar.gz

使用Transmit软件直接文件拷贝到树莓派文件夹中

1
2
3
4
5
tar zxvf apache-tomcat-8.5.47.tar
ls
cp -r apache-tomcat-8.5.47 /usr/local/tomcat8
cd /etc
nano profile

配置环境变量

1
2
export TOMCAT_HOME=/usr/local/tomcat8
export CATALINA_HOME=/usr/local/tomcat8

生效

1
source profile

启动

1
2
cd /usr/local/tomcat/bin
./startup.sh

开启端口

1
2
iptables -I INPUT -i eth0 -p tcp --dport 8080 -j ACCEPT
iptables -I OUTPUT -o eth0 -p tcp --sport 8080 -j ACCEPT

电脑访问192.168.0.112:8080

按Host Manager配置管理员账号

按取消后出现403 Access Denied页面

按照提示

1
2
3
cd ..
cd conf
nano tomcat-users.xml

tomcat-users.xml

1
2
<role rolename="manager-gui"/>
<user username="tomcat8" password="tomcat8" roles="manager-gui,manager-script"/>

ctrl+x Y

重启tomcat

1
2
3
4
cd ..
cd bin
./shutdown.sh
./startup.sh

访问192.168.0.112:8080

输入账号密码

启动打印动态信息

1
./startup.sh & tail -f /usr/local/tomcat/logs/catalina.out

3. mysql安装 – mariadb

MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品.

1
2
3
4
5
6
7
没有可用的软件包 mysql-server,但是它被其它的软件包引用了。
这可能意味着这个缺失的软件包可能已被废弃,
或者只能在其他发布源中找到
然而下列软件包会取代它:
mariadb-server-10.0

E: 软件包 mysql-server 没有可安装候选

于是:

1
sudo apt-get install mariadb-server-10.0

☑️ 树莓派换源

软件:

1
sudo nano /etc/apt/sources.list

第一行加入:

1
deb http://mirrors.ustc.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi

注释掉其他的源

系统

1
sudo nano /etc/apt/sources.list.d/raspi.list

第一行

1
deb http://mirrors.ustc.edu.cn/archive.raspberrypi.org/debian/ stretch main ui

同样注释掉其他的源

1
2
sudo apt-get update
sudo apt-get upgrade

最终:

1
sudo apt-get install mysql-server

成功!

3.1. 配置密码

1
mysql -uroot -p

直接回车

出现以下内容即为成功

1
2
3
4
5
6
7
8
9
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 44
Server version: 10.1.38-MariaDB-0+deb9u1 Raspbian 9.0

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

设置root密码:

1
2
3
4
5
user mysql;
UPDATE user SET password=password('mysql123//') WHERE user='root';
UPDATE user SET plugin='mysql_native_password' WHERE user = 'root';
flush privileges;
exit;

重启mysql

1
sudo /etc/init.d/mysql restart

运行sql文件

1
2
MariaDB [test]> source /home/pi/Downloads/insert.sql
Query OK, 1 row affected (0.01 sec)

3.2. 配置远程服务

1
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

将bind-address 127.0.0.1改为0.0.0.0

control+o

control+x

1
sudo /etc/init.d/mysql restart

设置账号远程登录

1
mysql -uroot -p

现在需要输入刚设置的密码登录mysql

1
2
3
4
use mysql;
grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
flush privileges;
exit;

3.3. 客户端登陆-Navicat

3.4. 验证远程数据库

1
2
3
4
5
6
7
8
9
10
11
12
13
create database test;
use test;

create table test(
id int not null auto_increment,
uname varchar(20) not null,
primary key(id)
)
insert into test VALUES (default,'A');
insert into test VALUES (default,'B');
insert into test VALUES (default,'C');

select * from test;

树莓派中

Test.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package com.runaccpeted.test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class Test {

private Connection conn;
private PreparedStatement state;
private ResultSet rs;

private void init(){
try {
Class.forName("com.mysql.cj.jdbc.Driver");
conn=DriverManager.getConnection("jdbc:mysql://192.168.0.103:3306/test?useSSL=false", "root", "123456");
state = conn.prepareStatement("select * from test");
rs=state.executeQuery();

while(rs.next()) {
System.out.println(rs.getInt(1)+" "+rs.getString(2));
}

} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
rs.close();
state.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}

public static void main(String[] args) {
Test test = new Test();
test.init();
}
}

结果

4. nginx

1
2
3
4
5
6
7
8
#安装
sudo apt-get install nginx
#启动
sudo /etc/init.d/nginx start
#重启
sudo /etc/init.d/nginx restart
#停止
sudo /etc/init.d/nginx stop

启动

1
2
3
4
5
6
7
8
sudo /etc/init.d/nginx start

启动“nginx.service”需要认证。
Multiple identities can be used for authentication:
1. ,,, (pi)
2. root
Choose identity to authenticate as (1-2): 2
Password: #树莓派密码

浏览器访问 树莓派IP

nginx

4.1. 自定义网页

1
cd /var/www/html

新建文件夹test

新建文件 index.html

1
2
3
<html>
Hello World!
</html>

终端

1
2
nginx -s reload
systemctl start nginx.service

浏览器访问 树莓派IP/test

hello

5. ngrok

5.1. 开通隧道

隧道管理 -> 开通隧道 -> 选择一个服务器

隧道名称:自定义

域名类型:使用前置域名 | 使用自定义域名

前置域名:自定义

自定义域名:需要CNAME解析

http验证用户名:可以不设置

http验证密码:

本地端口:树莓派IP:80

5.2. 下载软件

隧道管理界面

software

下载解压后,得到sunny.app

终端cd到sunny.app所在文件夹备用

6. Dnspod

添加一条CNAME记录 记录值 free.idcfengye.com. 主机记录自定–> 需要跟ngrok中的自定义域名一致

7. 内网配置

7.1. 访问192.168.0.1

虚拟服务器 应用

添加映射

常用服务器 外部端口 内部端口 IP地址 协议类型
HTTP 80 80 树莓派IP TCP

7.2. 回到树莓派

1
2
cd /etc/nginx/sites-available
sudo nano default

配置监听

1
2
3
4
5
6
server {
listen 80;
server_name xx.xx.com;

ctrl+o ctrl+x 保存退出

终端

1
2
nginx -s reload
systemctl start nginx.service

7.3. sunny启动

1
./sunny clientid 隧道id  在隧道管理界面可得

ngrok

访问xx.xx.com

hello

本文结束  感谢您的阅读
  • 本文作者: Wang Ting
  • 本文链接: /zh-CN/2019/09/06/树莓派搭建服务器/
  • 发布时间: 2019-09-06 21:23
  • 更新时间: 2022-10-24 22:36
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!