树莓派使用日记3·vsftpd,JDK

下午睡了一觉,醒来决定找出尘封已久的树莓派,在上面配置一些开发环境。下文是关于所做之事的总结。

配置vsftpd

在树莓派上使用wget下载文件速度奇慢,不知为何,于是决定配置vsftpd,通过ftp将笔记本上下载好的压缩文件传送至树莓派上。

1
2
3
4
5
6
7
8
9
service vsftpd status #检查vsftpd状态,发现并没有安装vsftpd。
yum -y update #许久没有使用过树莓派,先通过yum进行全局更新。
yum -y install vsftpd #安装vsftpd软件。
vim /etc/vsftpd/vsftpd.conf #打开配置文件
anonymous_enable=NO # 禁用匿名登录
chroot_local_user=YES # 启用限定用户在其主目录下
firewall-cmd --permanent --add-port=21/tcp #允许默认ftp端口21通过防火墙(Firewalld,i.e. firewall-cmd)
firewall-cmd --reload #重载防火墙
service vsftpd status #检查vsftpd状态,安装成功

参考博客文章:How to Install and Configure vsftpd on CentOS 7

这里并没有仔细配置,关于PASV模式,chroot_local_user配置项没启用等(后面发现这个选项限制ftp用户操作的目录,但我贪图方便直接注释了这一项)

2017.12.17更新: 当防火墙策略封掉大多数端口时,用FlashFXP软件连接,会提示Error: Failed to retrieve directory listing,原因是默认使用passive mode(PASV),而其会尝试打开服务端的随机端口用来传输数据,所以在大多数端口不可用时会报错。解决方法之一是配置vsftpd和防火墙来开放一些端口给PASV使用。

配置vsftpd的passive mode

设置vsftpd.conf中的一些参数:

1
2
3
pasv_enable=Yes     #启动pasv
pasv_max_port=10100 #对应可用的最大端口
pasv_min_port=10090 #对应可用的最小端口

配置防火墙

开放相应端口即可。

添加ftp用户

1
2
3
useraddd -g root -M -d /usr/ftpdatafolder -s /sbin/nologin ftpusername #创建新用户并指定-d HOME_DIR,-g GROUP,-M no-create-home,-s SHELL
passwd ftpusername #设置用户密码
chown -R ftpusername /usr/ftpdatafolder #使ftpusername拥有ftpdatafolder的所有权

JDK与相关环境变量的配置

通过ftp将笔记本上下载好的压缩文件传送至树莓派并解压至/opt中创建好的文件夹中。
tar -xvzf xx.tgz -C /opt/folder

然后进入对应目录下的bin路径,执行命令,提示未找到命令。google后发现,不同于Windows的cmd,在shell中执行命令并不会查找当前路径,需要明确指明可执行程序的绝对路径。

最新版的scala需要jdk1.8,暂时不兼容jdk1.9,所以得先配置环境变量path。

注意:树莓派需要使用arm版的jdk,不然会提示无法执行程序。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
vim ~/.bashrc #配置bashrc
# .bashrc

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi

PATH=$PATH:/opt/jdk8/jdk1.8.0_121/bin:/opt/scala/scala-2.12.1/bin
export PATH
. ~/.bashrc #重载bashrc

这时候测试一下

1
2
3
java -version #查看java版本
scala #进入scala交互式命令行
/opt/jdk9ea/jdk9/bin/jshell #进入jshell(Java9的交互式命令行)

没问题,完成~

配置文件内容和命令,行与行之间以空格为缩进。