@mritd
2015-11-29T12:23:50.000000Z
字数 9884
阅读 2433
Linux
Raspberry
初次使用pi用户登录后,首先应该搞开Root用户,和Debian系列一样(我特么只用过基于Debian的,如Ubuntu,还没玩过纯血统Debian),默认树莓派Root用户是未启用的,密码每次开机都变,执行以下命令开启Root用户,并更改密码:
sudo passwd root
# 然后输两次密码,可以su过去了,不过这时你会发现
# 仍然无法远程以root登录,修改如下配置中的 PermitRootLogin 参数即可
vi /etc/ssh/sshd_config
# 该参数码值如下
# 允许root用户以任何认证方式登录
PermitRootLogin yes
# 只允许root用public key认证方式登录
PermitRootLogin without-password
# 不允许root远程登录
PermitRootLogin no
以下相关设置大部分在root权限下进行
# 直接编辑vim配置文件,注意先调整到要改的位置,再编辑
# 因为一旦进入Insert模式 方向键是不好使的
vi /ect/vim/vimrc.tiny
# 修改后如下
set nocompatible
set backspace=2
- 执行命令
apt-get install source-highlight
- 加入环境变量(更详细参考 这里)
export LESSOPEN='| /usr/share/source-highlight/src-hilite-lesspipe.sh %s'
export LESS=' -R -N '
一般只有一个无线网卡的话默认为 wlan0,修改
iface wlan0 inet manual
为iface wlan0 inet dhcp
,因为考虑到网络环境,频繁切换网络不适合设置静态IP,所以使用 DHCP 分配,样例配置文件如下:
# Please note that this file is written to be used with dhcpcd.
# For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf'.
auto lo
iface lo inet loopback
# 自动连接有线网卡
auto eth0
allow-hotplug eth0
iface eth0 inet manual
# 自动连接 无线网卡
auto wlan0
# 允许热插拔
allow-hotplug wlan0
# IP采用 DHCP 分配
iface wlan0 inet dhcp
# SSID 等相关设置(wifi密码啥的)
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
auto wlan1
allow-hotplug wlan1
iface wlan1 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
该文件主要存储无线网络连接的相关设置,包括SSID、密码、加密方式等,配置样例如下
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
# Wifi SSID
ssid="mritd"
# Wifi Password
psk="12345678"
# 网络优先级, network块可以有多个,也就是可以设置多个无线链接及密码,
# 当有多个Wifi都存在时,根据这个值选择优先链接,越大优先级越高,不可为负数
priority=5
}
执行
ifup wlan0
启动 wlan0 并连接,执行ifdown wlan0
关闭并断开链接,如下图:
链接成功后可执行
ifconfig
或iwconfig
查看网络连接状况,如下图:
Linxu命令提示符由 PS1变量控制,所以更改命令提示符样式也就是更改PS1变量,以下为相关码值:
\d :#代表日期,格式为weekday month date,例如:"Mon Aug 1"
\H :#完整的主机名称。
\h :#仅取主机的第一个名字,如上例,则为fc4,.linux则被省略
\t :#显示时间为24小时格式,如:HH:MM:SS
\T :#显示时间为12小时格式
\A :#显示时间为24小时格式:HH:MM
\u :#当前用户的账号名称
\v :#BASH的版本信息
\w :#完整的工作目录名称。家目录会以 ~代替
\W :#利用basename取得工作目录名称,所以只会列出最后一个目录
\# :#下达的第几个命令
\$ :#提示字符,如果是root时,提示符为:# ,普通用户则为:$
颜色及效果控制码值
前景 背景 颜色
------------------------
30 40 黑色
31 41 红色
32 42 绿色
33 43 黄色
34 44 蓝色
35 45 紫红色
36 46 青蓝色
37 47 白色
代码 意义
-------------------------
0 OFF
1 高亮显示
4 underline
5 闪烁
7 反白显示
8 不可见
设置PS1变量时,
\[\e[F;Bm]
代表颜色开始,F为前景色,B为背景色,\e[m]
为颜色结束符,不写的话会造成整个命令行都是最后一种颜色,以下为我的PS1样式
PS1='\[\e[1;32m\][\u@\h\[\e[m\] \[\e[1;34m\]\W\[\e[m\]\[\e[1;32m\]]$\[\e[m\] '
众所周知树莓派不加扩展板的情况下 没有硬件RTC时钟,也就意味着每次开机都要设置时钟,这特么可万万不能够啊,以下为设置开机自动同步时间的方法:
apt-get install ntpdate
# 执行如下命令
dpkg-reconfigure tzdata
# 选择 Asia(亚洲) 然后选择 ShanHai(上海)
# 一般上面设置完市区就应该已经自动同步时间了
# 执行以下命令可能会报socket占用,可忽略
# 210.72.145.44 国家授时中心服务器IP
ntpdate 210.72.145.44
编辑
/ect/rc.local
文件 执行vim /etc/rc.local
,加入htpdate -t -s 210.72.145.44
这条命令,注意要放在exit 0
前面,样例配置如下:
#!/bin/sh -e
# 此处省略1000行注释.....
# Sync Time
htpdate -t -s 210.72.145.44
# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
printf "My IP address is %s\n" "$_IP"
fi
exit 0
默认树莓派安装系统后并不会占用所有SD卡空间,一般只会使用4G左右,对于大内存卡来说剩下的空间属于未分配状态,即未分区无法使用,我们可以使用
fdisk
来合并后面的分区加以利用
# 进入fdisk
fdisk /dev/mmcblk0
# 按 P 显示分区信息,并记录 Type 为Linux的分区起始柱面(122880),打印如下:
Device Boot Start End Sectors Size Id Type
/dev/mmcblk0p1 8192 122879 114688 56M c W95 FAT32 (LBA)
/dev/mmcblk0p2 122880 8447999 8325120 4G 83 Linux
# 按D 并选择删除分区2,再按P 查看分区信息,打印如下:
Command (m for help): d
Partition number (1,2, default 2): 2
Partition 2 has been deleted.
Command (m for help): p
Disk /dev/mmcblk0: 28.8 GiB, 30908350464 bytes, 60367872 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xba2edfb9
Device Boot Start End Sectors Size Id Type
/dev/mmcblk0p1 8192 122879 114688 56M c W95 FAT32 (LBA)
# 按N 执行新建分区,再按P 选择增加主分区,并输入起始柱面(122880),打印如下:
Command (m for help): n
Partition type
p primary (1 primary, 0 extended, 3 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (2-4, default 2): 2
First sector (2048-60367871, default 2048): 122880
Last sector, +sectors or +size{K,M,G,T,P} (122880-60367871, default 60367871):
Created a new partition 2 of type 'Linux' and of size 28.7 GiB.
# 首先按P 查看一下,确认分区增加无误,然后按W 执行分区操作,打印如下:
Command (m for help): p
Disk /dev/mmcblk0: 28.8 GiB, 30908350464 bytes, 60367872 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xba2edfb9
Device Boot Start End Sectors Size Id Type
/dev/mmcblk0p1 8192 122879 114688 56M c W95 FAT32 (LBA)
/dev/mmcblk0p2 122880 60367871 60244992 28.7G 83 Linux
Command (m for help): w
The partition table has been altered.
# 此处说明 设备忙碌,新的分区表将在下次重启生效
Calling ioctl() to re-read partition table.
Re-reading the partition table failed.: Device or resource busy
The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8).
# 由于上面已经提示了重启生效,所以执行重启命令
reboot
# 重启后需要进行一次分区修复,否则df查看磁盘占用是不变的,执行如下命令修复分区
resize2fs /dev/mmcblk0p2
# 执行成功后使用df查看分区占用情况,打印如下:
[root@raspberrypi ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/root 29586708 3255252 25069844 12% /
devtmpfs 469756 0 469756 0% /dev
tmpfs 474060 0 474060 0% /dev/shm
tmpfs 474060 6412 467648 2% /run
tmpfs 5120 4 5116 1% /run/lock
tmpfs 474060 0 474060 0% /sys/fs/cgroup
/dev/mmcblk0p1 57288 20232 37056 36% /boot
tmpfs 94812 0 94812 0% /run/user/1000
操作简单,但大有用处,执行一条命令
apt-get install lrzsz
就安装成功了;作用就是在使用xShell通过ssh连接到树莓派后,上传文件只需要敲rz
命令就会弹出文件选择对话框,选择文件后就直接上传到当前shell显示的目录下了,也可以直接将文件拖向命令行,也会直接将文件上传到当前目录;下载的话直接敲sz FILENAME
就会马上弹出下载选择框,选择到哪就会下载到那个目录,奏是这么吊!
由于做J2EE开发,想搞个Nginx,so 鼓捣吧......
Nginx 编译安装需要 如下支持
gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel
默认gcc树莓派已经自带了,剩下的 pcre、zlib、openssl 需要自己下载,下载地址: pcre、zlib、openssl、Nginx
# 下载下来想办法搞到树莓派上,然后解压
tar -zxvf openssl-1.0.2d.tar.gz
tar -zxvf pcre-8.37.tar.gz
tar -zxvf zlib-1.2.8.tar.gz
tar -zxvf nginx-1.8.0.tar.gz
# 首先进入到 nginx目录
cd nginx-1.8.0
# 执行编译,编译参数如下:
./configure
--sbin-path=/usr/local/nginx/nginx
--conf-path=/usr/local/nginx/nginx.conf
--pid-path=/usr/local/nginx/nginx.pid
--with-http_ssl_module
--with-pcre=../pcre-8.37
--with-zlib=../zlib-1.2.8
--with-openssl=../openssl-1.0.2d
# 最后安装(时间有点长......)
make && make install
作为一名 Java Web狗,Nginx、Tomcat已经搞起了,只能内网访问怎么可以;所以必须搞一个 花生壳做内网映射,使之通过域名可直接从外网访问到内网下的树莓派中部署的项目。
花生壳树莓派版下载地址: 点击下载
下载后上传到树莓派,执行tar -zxvf phddns_raspberry.tgz
解压文件
解压后会生成
phddns2
目录,cd
进去,执行./oraynewph start
命令进行安装,安装完成后屏幕上会显示几行信息,其中一个是 SN码,记录下这个 SN码,一般是一串复杂的类似于md5的字符串
然后进入 b.oray.com ,选择使用 SN码 登录,默认密码是admin,注意:此时树莓派必须成功连接外网,否则无法登陆,登录如下图所示:登陆后首先选择 动态域名解析 ,然后 注册一个壳域名 ,再回到首页选择 内网映射 ,配置一个域名内网映射即可,映射配置如下图:
其他关于更详细的花生壳使用教程请谷歌,安装教程参考 这里,最后附上一张装好逼的截图:
由于现在项目都使用Maven,所以也想搞一个私服Nexus,无奈Nexus官方二进制包中并不提供 arm平台支持,主要是wrapper 没有arm平台的可执行文件和动态链接库,故需要自己编译wrapper,所以有了 "编译安装Nexus" 这一说法。
登录 Nexus官网 选择 TGZ 格式下载,上传到 树莓派并解压,然后 mv 到你想要放置的目录。配置一个环境变量,样例如下 :
export NEXUS_HOME='/usr/local/java/nexus/nexus-2.11.4-01'
,并将$NEXUS_HOME/bin
加入到PATH
中。
为何需要下载
wrapper
:nexus
本身确实自带了wrapper
,但wrapper
这玩意是跟平台结合的,目前Nexus
不支持arm
平台,所以需要我们手动编译一个替换Nexu
中的wrapper
。
- 目前下载的最新版 Nexus-2.11.4-01 依赖的是 wrapper3.2.3,下载地址 点这里 (注意我们下载的事3.5.9版本)。
- 下载完 src 源码包后上传到树莓派并解压,在开始编译前,需要正确的配置
JAVA_HOME
和PATH
,这里有个小问题,树莓派2自带了JDK8,但JAVA_HOME
啥的没配置,所以会有问题;但直接卸载的话apt-get
会自动给你安装open-jdk7
,可执行apt-cache rdepends oracle-java8-jdk
查看依赖jdk
的相关软件包,并执行apt-get purge xxxxx
卸载他们,基本这些软件包都是教学用的,可以删掉;然后自己下载arm
平台的jdk7
(感觉8太新了怕不稳定) 安装、配置环境。
- 配置完
JAVA_HOME
、PATH
变量以后还需要下载一个Ant
,因为wrapper
是基于Ant
构建的,基本步骤也是。 下载Ant 然后解压到指定目录,配置一下ANT_HOME
,方法自查。- 在正式编译前需要
cp src/c/Makefile-linux-x86-32.make
tosrc/c/Makefile-linux-arm-32.make
(老外的原文,说来了就是copy
一份到当前目录并重命名一下)。- 进入到
wrapper
解压后的目录执行./build32.sh
进行编译,如果JAVA_HOME
、PATH
、Ant
、.make 文件
没问题的话编译一般不会出错。- 编译完成后在
nexus-2.11.4-01/bin/jsw
下新建一个linux-armv7l-32
文件夹,复制编译好的wrapper_3.5.9_src/bin/wrapper
文件到 刚刚新建的linux-armv7l-32
目录下,由于使用了高版本wrapper
,wrapper.jar
复制过去后需要先删掉原来的wrapper-3.2.3.jar
并将wrapper.jar
重命名为wrapper-3.2.3.jar
。
- 新建用户
nexus
:adduser nexus
(别用useradd
我一直以为这两个命令一样,但你在树莓派2下可以试试)- 改密码 :
passwd nexus
- 改两个配置文件 :
nexus-2.11.4-01/bin/nexus
、nexus-2.11.4-01/bin/jsw/conf/wrapper.conf
,两个配置要改的地方贴出来如下 (更详细的参见 Nexus 2.11 CentOS搭建教程) :
###############################
## nexus-2.11.4-01/bin/nexus ##
###############################
#
# Set the JVM executable
# (modify this to absolute path if you need a Java that is not on the OS path)
# 配置 jdk中 java 可执行文件的位置(其实我感觉jre就可以,没测试,有兴趣的测试一下)
wrapper.java.command=/usr/local/java/jdk1.7.0_79/bin/java
##############################################
## nexus-2.11.4-01/bin/jsw/conf/wrapper.con ##
##############################################
#
# Set this to the root of the Nexus installation
# 设置 nexus 主目录,就是解压后的那个 nexus目录绝对路径
NEXUS_HOME="/usr/local/java/nexus-2.11.4-01"
- 先切换到
nexus
用户,因为官方不推荐以root
用户运行,执行 :su - nexus
,然后启动nexus
,执行nexus start
启动,时间比较长,大约2分钟,使用tail -f nexus-2.11.4-01/logs/wrapper.log
查看进度,启动成功后访问IP:8081/nexus
即可,默认用户admin
,密码admin123
;到此结束。
执行
apt-get install screen
安装screen,用于后台运行编译任务,防止断网等原因造成的编译失败。
可去官网下载,百度云分享 点击这里 密码: g2ab
下载完成后上传到树莓派并解压
编译前需要做以下操作:
# 新建mysql用户
adduser mysql
# 创建MySQL安装目录
cd /usr/local
mkdir mysql
cd /usr/local/mysql
mkdir data
# 首先升级软件源(如果改过非官方源必须改回来)
apt-get update
# 升级已安装软件包
apt-get upgrade
# 安装mysql编译时依赖
apt-get isntall cmake make bison bzr libncurses5-dev g++ libtinfo5 ncurses-bin libncurses5 libtinfo-dev
# 进入源码目录
cd mysql-5.6.27/
# 开启screen session 防止断网等造成的免疫中断
screen -S mysqlinstall
# 执行 cmake 预编译(最少一小时)
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/usr/local/mysql/data/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_DATADIR=/usr/local/mysql/data -DMYSQL_USER=mysql -DWITH_DEBUG=0
关于cmake预编译参数设置参考 这里
make && make install
# 更改所有者
cd /usr/local/
chown -R mysql.mysql mysql
# 创建配置文件
cd /usr/local/mysql/support-files
cp my-default.cnf /etc/my.cnf
# 初始化数据库
cd /usr/local/mysql
./scripts/mysql_install_db --user=mysql
# 安全启动(后台)
/usr/local/mysql/bin/mysqld_safe --user=mysql --port=3306 --sock=/usr/local/mysql/data/mysql.sock &
# 开机自启动
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
chkconfig --add mysql
mysql5.6的默认参数设置问题,更改my.cnf,调整以下参数
performance_schema_max_table_instances=600
table_definition_cache=400
table_open_cache=256
这时mysql启动后内存就只占用40--60M内存了
其实树莓派感觉没必要买显示器,因为直接可以安装远程桌面,执行
apt-get install xrdp
安装,在Windows
下可直接使用远程桌面连接,按Win+R
键输入mstsc
,再输入树莓派地址和用户名密码 就可以,截图如下: