本文为个人实战操作,可行,记录下来供新手练习使用:
---------------------------------------------------------
1. 树莓派系统介绍
2. 安装操作系统及网络\远程控制配置
3. 安装常用软件
4. 构建web服务器(nginx + php + sqlite)
5. 构建web服务器(appach+mysql+php)
6. 构建NAS服务器
7. 其余功能环境开发
8. ……
1.1 项目介绍
1.2 硬件介绍
1.2.1 散热片安装
1.2.2 风扇安装附件1
1.2.3 屏幕安装
1.3 系统介绍
目前很对公司或组织都为树莓派开发了操作系统,常用的操作系统如下,可根据自己的具体需求烧录安装,下载地址:https://www.raspberrypi.org/downloads/
如果想下载以前版本的系统:https://downloads.raspberrypi.org/raspbian/images/
第一类树莓派原生操作系统:基于linux内核。有2种:raspbian官方的基础版本操作系基于Debian系统。PIXEL是包含桌面的版本,LITE是单纯的OS;NOOBS NewOut of Box Software,是树莓派官方发布的工具可以抛开各种复杂的网络和镜像安装软件,甚至可以抛开电脑就能让你安装上你想要的系统。NOOBS是离线安装版,LITE是网络安装版。
第二类第三方操作系统:包含了UBUNTUMATE;SNAPPY UBUNTU CORE;WINDOWS 10 IOT CORE;OSMC;RISC OS等等。
2.1 系统安装
2.1.1 下载系统的镜像,根据需要选择;我用的raspbin;下载到本地并用7zip解压出img文件。
2.1.2 下载镜像烧录工具Win32DiskImager;并格式化tf卡
2.1.3 以管理员身份运行Win32DiskImager,找到解压缩之后的系统img文件,写入……
2.1.4 写入完成之后取出tf卡,插入树莓派卡槽,上电开机。
2.1.5 通常默认情况下树莓派的系统是打开ssh的,因此在没有安装屏幕的情况下可以通过以下步骤连接上树莓派进行操作:
A. 树莓派使用网线连上路由器
B. 使用同一网段的PC段putty,直接连接树莓派,默认用户名:pi;密码:raspberry;
C. 如果能够ping通,但是无法ssh连上,那有可能是默认系统没有开启ssh;下面只需要在tf卡的boot目录下(也就是tf卡根目录)创建一个名称为SSH的文件即可;重启后就可以正常使用ssh了。
D. 链接wifi:
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
在文件末尾加以下配置信息,每一个network就是一个WiFi,可以配置多个network,ssid为WiFi名称,psk为WiFi密码,key_mgmt为加密方式
network={
ssid="mimi"
key_mgmt=WPA-PSK
psk="abcd1234" }
2.1.6 设置expand_rootfs 把整个系统的可用空间扩展到储存卡的大小(树莓派默认不使用SD卡的全部空间,有一部分保留,建议选中):
A. sudo raspi-config
B. 进入:
C. 按tab键切换到:
D. 附1:raspi-config的说明
2.1.7 开启root账户:
A. sudo passwd root
B. 系统会提示输入两遍的root密码
C. 接着输入下面命令,用来解锁root账户sudo passwd --unlock root
D. 设置ssh远程root登录:sudo nano /etc/ssh/sshd_config ///Ctrl + W 快捷键 搜索 PermitRootLoginwithout-password ///修改 PermitRootLogin without-password 为 PermitRootLogin yes;reboot重启
2.1.8 更新软件源及系统:
A. cd /etc/apt/
B. 备份原来的源:cp sources.list sources.list_back
C. 编辑新源sudo nano sources.list
D. 更改为:中国科技大学源,把wheezy 改成jessie这样大部分源是在中国。网址末尾的raspbian重复两次是必须的。因为Raspbian的仓库中除了APT软件源还包含其他代码。APT软件源不在仓库的根目录,而在raspbian/子目录下。
deb http://mirrors.ustc.edu.cn/raspbian/raspbian/ jessiemain contrib non-free rpi
deb-src http://mirrors.ustc.edu.cn/raspbian/raspbian/jessie main contrib non-free rpi
E. sudo nano /etc/apt/sources.list.d/raspi.list
deb http://mirror.tuna.tsinghua.edu.cn/raspberrypi/ stretch main ui
deb-src http://mirror.tuna.tsinghua.edu.cn/raspberrypi/ stretch main ui
E. 更新:sudo apt-get update && sudo apt-get upgrade(# 更新软件源sudoapt-get update/#更新软件sudo apt-get upgrade)
F. 附2:国内主要的源
2.2 网络及远程控制配置
2.2.1 配置及使用VNC
A. 安装sudoapt-get install tightvncserver
B. 设置密码vncpasswd
C. 下载客户端:https://www.realvnc.com/download/vnc/
D. 树莓派开启vncserver:vncserver :1 -geometry 800x600
E. 树莓派关闭vncserver:vncserver -kill :1
F. 客户端访问桌面:vncviwer:192.168.1.***:1
G. 开机启动vnc桌面: sudo nano/etc/init.d/tightvncserver 写入附件2:
H. 设置支持中文:sudoapt-get install ttf-wqy-zenhei—不需要可以选择不安装,安装之后要去setting里面设置中文界面
2.2.2 配置自动登录wifi
A. lsusb #如果无效,查看驱动是否加载
B. lsmod#如果未加载,进行加载 modprobexxx
C. sudo nano/etc/network/interfaces
D. 修改并写入附件4
2.2.3 配置固定IP
3.1 安装FTP server:
3.1.1 安装vsftpd服务器 (约400KB):sudo apt-get install vsftpd
3.1.2 启动ftp服务:sudo service vsftpd start
3.1.3 编辑vsftdp的配置文件:sudo nano /etc/vsftpd.conf
配置:找到以下行,定义一下
anonymous_enable=NO
表示:不允许匿名访问
local_enable=YES
设定本地用户可以访问。
write_enable=YES
设定可以进行写操作
local_umask=022
设定上传后文件的权限掩码。
存盘退出
3.1.4 重启vsftpd服务:sudo service vsftpd restart
3.1.5 测试一下:通过ftp连接树莓派系统,以用户名pi登录,密码是raspberry
ftp的根目录是/home/pi,即pi用户的HOME目录。可上传或下载文件了
3.2 安装ufw网络防火墙
3.2.1 安装:sudo apt-get install ufw
3.2.2 启用(使用ssh登录的请注意,请先开启22端口,否则重启机器后会导致ssh无法连接)
sudo ufw enable
sudo ufw default deny
作用:开启了防火墙并随系统启动同时关闭所有外部对本机的访问(本机访问外部正常)。
3.2.3 关闭:sudo ufw disable
3.2.4 查看防火墙状态:sudo ufw status
3.2.5 开启/禁用常用端口或服务:
sudo ufw allow 80 允许外部访问80端口
sudo ufw delete allow 80 禁止外部访问80 端口
sudo ufw allow from 192.168.1.1 允许此IP访问所有的本机端口
sudo ufw deny smtp 禁止外部访问smtp服务
sudo ufw delete allow smtp 删除上面建立的某条规则
sudo ufw deny proto tcp from 10.0.0.0/8 to192.168.0.1 port 22 要拒绝所有的TCP流量从10.0.0.0/8 到192.168.0.1地址的22端口
可以允许所有RFC1918网络(局域网/无线局域网的)访问这个主机(/8,/16,/12是一种网络分级):
sudo ufwallow from 10.0.0.0/8
sudo ufwallow from 172.16.0.0/12
sudo ufw allow from 192.168.0.0/16
3.2.6 常用端口:
21 :FTP
22 :ssh
25 :SMTP 发送邮件
80 :HTTP
110 :POP3 接收邮件
143 :IMAP 接收邮件
3306:SQL数据库
3.3 安装samba文件共享
3.3.1 安装:
sudo apt-get update
sudo apt-get install sambasamba-common-bin
3.3.2 配置samba:sudo nano /etc/samba/smb.conf (去掉#的注释,否则samba会启动失败)
修改:[share] #共享文件的名称,将在网络上以此名称显示
path = /home/pi/samba #共享文件的路径
valid users = root pi #允许访问的用户,这里我用的是root 和 pi 两个用户
browseable = yes #允许浏览
public = yes #共享开放
writable = yes #可写
3.3.3 添加账户
3.3.3.1 启用账户sudo smbpasswd -e pi
3.3.3.2 添加账户sudo smbpasswd -a pi
3.3.3.3 已添加账户 pi;密码raspberry
3.3.4 重启:sudo /etc/init.d/samba restart
4.1 安装nginx web服务器 :sudo apt-get installnginx
nginx的www默认根目录:/var/www/html
修改默认目录:
--sudo nano /etc/nginx/sites-available/default
--修改 root /var/www/html和 fastcgi_param SCRIPT_FILENAME var/www/html$fastcgi_script_name;
--sudo /etc/init.d/nginx reload
4.2 安装php和sqlite: sudo apt-get install php5-fpm php5-sqlite
4.3 修改nginx的配置文件
--sudo nano/etc/nginx/sites-available/default
--找到listen行,将其前面的#号注释去掉,修改后内容如下
listen 80; ## listen for ipv4.
--找到index行,加入index.php,修改后内容如下
index index.php index.html index.htm
--找到php的定义段,将这些行的注释去掉 ,修改后内容如下
location ~ \.php$ {
fastcgi_passunix:/var/run/php5-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_index index.php;
include fastcgi_params;
}
--重新加载nginx的配置: sudo /etc/init.d/nginx reload
4.4 测试php网页
phpinfo();
?>
4.5 网页访问出现403错误,修改文件夹权限;
5.1 安装Apache(配置见附件)
Apache可以用下面的命令来安装
sudo apt-get install apache2
Apache默认路径是/var/www/
其配置文件路径为: /etc/apache2/
可以通过:sudo vi /etc/apache2/ports.conf修改监听端口号
重启服务生效:sudoservice apache2 restart
5.2 安装mysql(Sqlserver转mysql方法:见附件5)
sudo apt-getinstall mysql-server
安装过程中,会出现一个提示符让你输入一个密码。
这个密码是mysql root用户的密码。
连接MYSQL:
格式: mysql -h主机地址 -u用户名-p用户密
5.2.1 mysql并开启远程访问(开启3306端口):
开启mysql远程访问: 修改/etc/mysql/my.cnf文件
找到下面这行,并用#注释掉,
bind-address = 127.0.0.1
或者修改为bind-address = 0.0.0.0
登录mysql,输入下面命令
mysql>grant all privileges on*.* to username@"%" identified by "password";(username一般是root,password是新的密码)
mysql> FLUSH PRIVILEGES;
开启3306端口远程访问
这里的iptable命令和centos中命令不一样,所以参考了一下文档,使用 ufw软件来开启3306端口
5.3 安装PHP
输入下面的命令,就可以安装PHP 5,以及PHP访问mysql数据库所需要的库。
sudo apt-getinstall php5
sudo apt-getinstall php5-mysql
sudo apt-getinstall php5-gd
sudo apt-getinstall libapache2-mod-php5
6.1 安装samba(见3.3节)
6.2 安装minidlna
sudo apt-get install minidlna
设置/etc/minidlna.conf文件,在文件尾部添加如下内容:
================================================================
media_dir=A,/home/pi/External_Disk/samba/DLNA/Music #A表示这个目录是存放音乐的,当minidlna读到配置文件时,它会自动加载这个目录下的音乐文件
media_dir=P,/home/pi/External_Disk/samba/DLNA/Picture
media_dir=V,/home/pi/External_Disk/samba/DLNA/Video
db_dir=/home/pi/External_Disk/samba/DLNA/db #配置minidlna的数库数据的存放目录
log_dir=/home/pi/External_Disk/samba/DLNA/log #配置日志目录
================================================================
重启minidlna:/etc/init.d/minidlnarestart
测试:/etc/init.d/minidlna status
6.3 挂载 usb移动硬盘
6.3.1 MiniTool格式化硬盘为ext4格式
6.3.2 df -h
umount /dev/sda5
mount /dev/sda5/home/pi/External_Disk/usbdisk
6.3.3 自动挂载:/etc/fstab 添加一行
第一列:磁盘分区名/卷标,一般是/dev/sdaN(N表示正整数)
第二列:挂载点,我们在这里把/dev/sda1挂到/samba上。
第三列:缺省设置,一般用defautls。
第四列:是否备份:0——表示不做 dump 备份;1——表示要将整个
第五列:检测顺序:0——不进行检测;根分区(/),必须填写 1,其它的都不能填写 1。如果有分区填写大于 1 的话,则在检查完根分区后,从小到大依次检查下去。
*******************************************************************************
附件1
*******************************************************************************
附1:
raspi-config的说明:***************************************************
1 Expand Filesystem 扩展文件系统(同旧版)。
2 Change User Password 改变默认pi用户的密码,按回车后输入pi用户的新密码。
3 Enable Boot to Desktop/Scratch 启动时进入的环境选择
Console Text console, requiring login(default)
启动时进入字符控制台,需要进行登录(默认项)。
Desktop log in as user 'pi' at the graphical desktop
启动时进入LXDE图形界面的桌面。
Scratch Start the Scratch programming environment upon boot
启动时进入Scratch编程环境。
4 Internationalisation Options 国际化选项,可以更改默认语言
I1Change Locale
语言和区域设置,建议不要改,默认英文就好。想改中文,最好选安装了中文字体再进行这步,安装中文字体的方法:
sudo apt-get update
sudo apt-get install ttf-wqy-zenhei ttf-wqy-microhei
移动到屏幕底部,用空格键选中zh-CN GB2312,zh-CN GB18030,zh-CN UTF-8,然后按回车,然后默认语言选中zh-cn然后回车
I2Change Timezone
设置时区,如果不进行设置,PI的时间就显示不正常。选择Asia(亚洲)再选择Chongqing(重庆)即可。
I3Change Keyboard Layout
改变键盘布局
5 Enable Camera
启动PI的摄像头模块,如果想启用,选择Enable,禁用选择Disable就行了
6 Add to Rastrack
把你的PI的地理位置添加到一个全世界开启此选项的地图,建议还是不要开了,免得被跟踪。
7 Overclock
None 不超频,运行在700Mhz,核心频率250Mhz,内存频率400Mhz,不增加电压
Modest 适度超频,运行在800Mhz,核心频率250Mhz,内存频率400Mhz,不增加电压
Medium 中度超频,运行在900Mhz,核心频率250Mhz,内存频率450Mhz,增加电压2
High 高度超频,运行在950Mhz,核心频率250Mhz,内存频率450Mhz,增加电压6
Turbo 终极超频,运行在1000Mhz,核心频率500Mhz,内存频率600Mhz,增加电压6
8 Advanced Options 高级设置
A1Overscan 是否让屏幕内容全屏显示
A2Hostname 在网上邻居或者路由器能看到的主机名称
A3Memory Split 内存分配,选择给GPU多少内存
A4SSH 是否运行SSH登录,建议开户此选项,以后操作PI方便,有网络就行,不用开屏幕了。
A5SPI 是否默认启动SPI内核驱动,新手就不用管了。
A6Audio 选择声音默认输出到模拟口还是HDMI口
0Auto 自动选择
1Force 3.5mm ('headphone') jack强制输出到3.5mm模拟口
2Force HDMI 强制输出到HDMI
A7Update 把raspi-config这个工具自动升级到最新版本
9 Aboutraspi-config 关于raspi-config的信息。
附2:国内主要的源
中山大学
Raspbianhttp://mirror.sysu.edu.cn/raspbian/raspbian/
中国科学技术大学
Raspbianhttp://mirrors.ustc.edu.cn/raspbian/raspbian/
清华大学
Raspbianhttp://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/
华中科技大学
Raspbianhttp://mirrors.hustunique.com/raspbian/raspbian/
Arch Linux ARMhttp://mirrors.hustunique.com/archlinuxarm/
大连东软信息学院源(北方用户)
Raspbianhttp://mirrors.neusoft.edu.cn/raspbian/raspbian/
重庆大学源(中西部用户)
Raspbianhttp://mirrors.cqu.edu.cn/Raspbian/raspbian/
新加坡国立大学
Raspbianhttp://mirror.nus.edu.sg/raspbian/raspbian
牛津大学
Raspbianhttp://mirror.ox.ac.uk/sites/archive.raspbian.org/archive/raspbian/
韩国KAIST大学
Raspbianhttp://ftp.kaist.ac.kr/raspbian/raspbian/
附件3:
#!/bin/sh
### BEGIN INIT INFO
# Provides: tightvncserver
# Required-Start: $local_fs
# Required-Stop: $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start/stoptightvncserver
### END INIT INFO
# More details see:
#http://www.penguintutor.com/linux/tightvnc
### Customize this entry
# Set the USER variable to the name of theuser to start tightvncserver under
export USER=’pi’
### End customization required
eval cd ~$USER
case ”$1” in
start)
# 启动命令行。此处自定义分辨率、控制台号码或其它参数。
su $USER -c ’/usr/bin/tightvncserver -geometry 800x600 :1’
echo ”Starting TightVNC server for $USER ”
;;
stop)
#终止命令行。此处控制台号码与启动一致。
su $USER -c ’/usr/bin/tightvncserver -kill :1’
echo ”Tightvncserver stopped”
;;
*)
echo ”Usage: /etc/init.d/tightvncserver {start|stop}”
exit 1
;;
esac
exit 0
附件4:
auto lo
iface lo inet loopback
iface eth0 inet dhcp
auto wlan0
allow-hotplug wlan0
iface wlan0 inet dhcp
wpa-ssid “你的wifi名称”
wpa-psk “你的wifi密码”
#wpa-roam/etc/wpa_supplicant/wpa_supplicant.conf #注释掉这一行
iface default inet dhcp
auto lo //表示使用localhost
iface eth0 inet dhcp //表示如果有网卡ech0, 则用dhcp获得IP地址 (这个网卡是本机的网卡,而不是WIFI网卡)
auto wlan0 //表示如果有wlan设备,使用wlan0设备名
allow-hotplug wlan0 //表示wlan设备可以热插拨
iface wlan0 inet dhcp //表示如果有WLAN网卡wlan0 (就是WIFI网卡), 则用dhcp获得IP地址
wpa-ssid “你的wifi名称”//表示连接SSID名
wpa-psk “你的wifi密码”//表示连接WIFI网络时,使用wpa-psk认证方式,认证密码
附件5:
apache2 配置多端口多站点:
1.修改:apache2.conf,添加新根目录访问权限:
Options Indexes Followsymlinks
AllowOverride None
Requireall granted
2.修改ports.conf,监听新端口
NameVirtualhostlocalhost:8080
Listen8080
3.修改sites-available/000-default.conf,添加虚拟端口
serveradmin webmaster@localhost
documentroot /home/pi/docpicroot/note-tmp
options followsymlinks
allowoverride none
options indexes followsymlinks multiviews
allowoverride none
order allow,deny
allow from all
errorlog /home/pi/docpicroot/note-tmp/logs/error.log
#possible values include: debug, info, notice, warn, error, crit,
#alert, emerg.
loglevel warn
customlog /home/pi/docpicroot/note-tmp/logs/access.log combined