1. 树莓派系统介绍
  2. 安装操作系统及网络\远程控制配置
  3. 安装常用软件
  4. 构建web服务器(nginx + php + sqlite)
  5. 构建web服务器(appach+mysql+php)
  6. 构建NAS服务器
  7. 其余功能环境开发
  8. ……
  1. 树莓派介绍

1.1    项目介绍

1.2    硬件介绍

1.2.1          散热片安装

1.2.2          风扇安装 附件1

1.2.3          屏幕安装

1.3    系统介绍

目前很对公司或组织都为树莓派开发了操作系统,常用的操作系统如下,可根据自己的具体需求烧录安装,下载地址:https://www.raspberrypi.org/downloads/

第一类树莓派原生操作系统:基于linux内核。有2种:raspbian官方的基础版本操作系基于Debian系统。PIXEL是包含桌面的版本,LITE是单纯的OS;NOOBS New Out of Box Software,是树莓派官方发布的工具可以抛开各种复杂的网络和镜像安装软件,甚至可以抛开电脑就能让你安装上你想要的系统。NOOBS是离线安装版,LITE是网络安装版。

第二类第三方操作系统:包含了UBUNTU MATE;SNAPPY UBUNTU CORE;WINDOWS 10 IOT CORE;OSMC;RISC OS等等。

  1. 安装操作系统及网络\远程控制配置

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的,因此在没有安装屏幕的情况下可以通过以下步骤连接上树莓派进行操作:

  1. 树莓派使用网线连上路由器
  2. 使用同一网段的PC段putty,直接连接树莓派,默认用户名:pi;密码:raspberry;
  3. 如果能够ping通,但是无法ssh连上,那有可能是默认系统没有开启ssh;下面只需要在tf卡的boot目录下(也就是tf卡根目录)创建一个名称为SSH的文件即可;重启后就可以正常使用ssh了。

2.1.6          设置expand_rootfs 把整个系统的可用空间扩展到储存卡的大小(树莓派默认不使用SD卡的全部空间,有一部分保留,建议选中):

  1. sudo raspi-config
  2. 进入:
  1. 按tab键切换到:<Select> 选中后,sudo reboot;就可以了
  2. 附1:raspi-config的说明

2.1.7          开启root账户:

  1. sudo passwd root
  2. 系统会提示输入两遍的root密码
  3. 接着输入下面命令,用来解锁root账户sudo passwd --unlock root
  4. 设置ssh远程root登录:sudo nano /etc/ssh/sshd_config ///Ctrl + W 快捷键 搜索 PermitRootLogin without-password ///修改 PermitRootLogin without-password 为 PermitRootLogin yes;reboot重启

2.1.8          更新软件源及系统:

  1. cd /etc/apt/
  2. 备份原来的源:cp sources.list sources.list_back
  3. 编辑新源sudo nano sources.list
  4. 更改为:中国科技大学源,把wheezy 改成jessie这样大部分源是在中国。网址末尾的raspbian重复两次是必须的。因为Raspbian的仓库中除了APT软件源还包含其他代码。APT软件源不在仓库的根目录,而在raspbian/子目录下。

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

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

  1. 更新:sudo apt-get update && sudo apt-get upgrade(# 更新软件源sudo apt-get update/#更新软件sudo apt-get upgrade)
  2. 附2:国内主要的源

2.2    网络及远程控制配置

2.2.1          配置及使用VNC

A. 安装sudo apt-get install tightvncserver

B. 设置密码vncpasswd

C. 下载客户端:https://www.realvnc.com/download/vnc/

D. 树莓派开启vnc server:vncserver :1 -geometry 800x600

E.  树莓派关闭vnc server:vncserver -kill :1

F.  客户端访问桌面:vncviwer:192.168.1.***:1

G. 开机启动vnc桌面: sudo nano /etc/init.d/tightvncserver 写入附件2:

H. 设置支持中文:sudo apt-get install ttf-wqy-zenhei—不需要可以选择不安装,安装之后要去setting里面设置中文界面

2.2.2          配置自动登录wifi

  1. lsusb #如果无效,查看驱动是否加载
  2. lsmod#如果未加载,进行加载 modprobe xxx
  3. sudo nano /etc/network/interfaces
  4. 修改并写入附件4

2.2.3          配置固定IP

  1. 安装常用软件

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 to 192.168.0.1 port 22 要拒绝所有的TCP流量从10.0.0.0/8 到192.168.0.1地址的22端口

可以允许所有RFC1918网络(局域网/无线局域网的)访问这个主机(/8,/16,/12是一种网络分级):

sudo ufw allow from 10.0.0.0/8

sudo ufw allow 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 samba samba-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

  1. 构建web服务器(nginx + php + sqlite)

4.1    安装nginx  web服务器 :sudo apt-get install nginx

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_pass unix:/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网页

<?PHP

phpinfo();

?>

4.5    网页访问出现403错误,修改文件夹权限;

  1. 构建web服务器(appach+mysql+php)

5.1 安装Apache(配置见附件)

Apache可以用下面的命令来安装

sudo apt-get install apache2

Apache默认路径是/var/www/

其配置文件路径为: /etc/apache2/

可以通过:sudo vi /etc/apache2/ports.conf修改监听端口号

重启服务生效:sudo service apache2 restart

5.2 安装mysql(Sqlserver转mysql方法:见附件5)

sudo apt-get install 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-get install php5

sudo apt-get install php5-mysql

sudo apt-get install php5-gd

sudo apt-get install libapache2-mod-php5

  1. 构建NAS服务器

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/minidlna restart

测试:/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——表示要将整个 <fie sysytem> 里的内容备份;2 也表示要做 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  国际化选项,可以更改默认语言

I1 Change 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然后回车

I2 Change Timezone

设置时区,如果不进行设置,PI的时间就显示不正常。选择Asia(亚洲)再选择Chongqing(重庆)即可。

I3 Change 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  高级设置

A1 Overscan   是否让屏幕内容全屏显示

A2 Hostname   在网上邻居或者路由器能看到的主机名称

A3 Memory Split 内存分配,选择给GPU多少内存

A4 SSH 是否运行SSH登录,建议开户此选项,以后操作PI方便,有网络就行,不用开屏幕了。

A5 SPI 是否默认启动SPI内核驱动,新手就不用管了。

A6 Audio 选择声音默认输出到模拟口还是HDMI口

0 Auto 自动选择

1 Force 3.5mm ('headphone') jack强制输出到3.5mm模拟口

2 Force HDMI 强制输出到HDMI

A7 Update 把raspi-config这个工具自动升级到最新版本

9 About raspi-config 关于raspi-config的信息。

附2:国内主要的源

中山大学

Raspbian http://mirror.sysu.edu.cn/raspbian/raspbian/

中国科学技术大学

Raspbian http://mirrors.ustc.edu.cn/raspbian/raspbian/

清华大学

Raspbian http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/

华中科技大学

Raspbian http://mirrors.hustunique.com/raspbian/raspbian/

Arch Linux ARM http://mirrors.hustunique.com/archlinuxarm/

大连东软信息学院源(北方用户)

Raspbian http://mirrors.neusoft.edu.cn/raspbian/raspbian/

重庆大学源(中西部用户)

Raspbian http://mirrors.cqu.edu.cn/Raspbian/raspbian/

新加坡国立大学

Raspbian http://mirror.nus.edu.sg/raspbian/raspbian

牛津大学

Raspbian http://mirror.ox.ac.uk/sites/archive.raspbian.org/archive/raspbian/

韩国KAIST大学

Raspbian http://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/stop tightvncserver

### END INIT INFO

# More details see:

# http://www.penguintutor.com/linux/tightvnc

### Customize this entry

# Set the USER variable to the name of the user 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,添加新根目录访问权限:

<Directory /home/pi/docpicroot/note/>

Options Indexes Followsymlinks

AllowOverride None

Require all granted

</Directory>

2. 修改ports.conf,监听新端口

NameVirtualhost localhost:8080

Listen 8080

3. 修改sites-available/000-default.conf,添加虚拟端口

<virtualhost *:8383>

serveradmin webmaster@localhost

documentroot /home/pi/docpicroot/note-tmp

<directory />

options followsymlinks

allowoverride none

</directory>

<directory /home/pi/docpicroot/note-tmp/>

options indexes followsymlinks multiviews

allowoverride none

order allow,deny

allow from all

</directory>

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

</virtualhost>

基于raspberry搭建个人web server的更多相关文章

  1. 搭建一个Web Server站点

    题:搭建一个Web Server站点.安装web服务,并在本地创建index.html测试 1.安装http服务 yum -y install httpd 2.进入网站目录 cd /var/www/h ...

  2. 手写一个类SpringBoot的HTTP框架:几十行代码基于Netty搭建一个 HTTP Server

    本文已经收录进 : https://github.com/Snailclimb/netty-practical-tutorial (Netty 从入门到实战:手写 HTTP Server+RPC 框架 ...

  3. python搭建简易Web Server

    如果你急需一个简单的Web Server,但你又不想去下载并安装那些复杂的HTTP服务程序,比如:Apache,ISS等.那么, Python可能帮助你,使用Python可以完成一个简单的内建 HTT ...

  4. 基于springboot搭建的web系统架构

    从接触springboot开始,便深深的被它的简洁性深深的折服了,精简的配置,方便的集成,使我再也不想用传统的ssm框架来搭建项目,一大堆的配置文件,维护起来很不方便,集成的时候也要费力不少.从第一次 ...

  5. 基于Centos搭建Python Web 环境搭建教程

    CentOS 7.2 64 位操作系统 安装 setuptools 工具 安装 因为之后我们需要安装 Django ,而 Django 需要用这个工具,所以我们需要先安装 setuptools 工具. ...

  6. 第三篇 基于.net搭建热插拔式web框架(重造Controller)

    由于.net MVC 的controller 依赖于HttpContext,而我们在上一篇中的沙箱模式已经把一次http请求转换为反射调用,并且http上下文不支持跨域,所以我们要重造一个contro ...

  7. 第二篇 基于.net搭建热插拔式web框架(沙箱的构建)

    上周五写了一个实现原理篇,在评论中看到有朋友也遇到了我的问题,真的是有种他乡遇知己的感觉,整个系列我一定会坚持写完,并在最后把代码开源到git中.上一篇文章很多人看了以后,都表示不解,觉得不知道我到底 ...

  8. 基于.net搭建热插拔式web框架(实现原理)

    第一节:我们为什么需要一个热插拔式的web框架? 模块之间独立开发 假设我们要做一个后台管理系统,其中包括“用户活跃度”.“产品管理”."账单管理"等模块.每个模块中有自己的业务特 ...

  9. C# .net基于Http实现web server(web服务)

    原文:C# .net基于Http实现web server(web服务) 什么是 web server?  百度百科是这么解释的: Web Server中文名称叫网页服务器或web服务器.WEB服务器也 ...

随机推荐

  1. IntelliJ IDEA 自定义方法注解模板

    最近没啥事开始正式用Eclipse 转入 idea工具阵营,毕竟有70%的开发者在使用idea开发,所以它的魅力可想而知.刚上手大概有一天,就知道它为啥取名为 intelli(智能化)了,确实很智能, ...

  2. 项目总结四:神经风格迁移项目(Art generation with Neural Style Transfer)

    1.项目介绍 神经风格转换 (NST) 是深部学习中最有趣的技术之一.它合并两个图像, 即 内容图像 C(content image) 和 样式图像S(style image), 以生成图像 G(ge ...

  3. Xcode 命令行工具 Command Line Tools

    xcode命令行工具包是一个小型独立包,可供下载独立于Xcode的和允许您执行命令行开发OS X. 在OS X10.9,就以及没有clt的下载安装包了,需要使用命令在线安装. xcode-select ...

  4. 【Maven】---Linux搭建Nexus3.X私服

    Linux搭建Nexus3.X私服 备注:linux版本: ubuntu 同时已经部署好JDK8环境 一.linux安装nexus 1.创建文件夹并进入该目录 cd /usr/local && ...

  5. Python操作Redis及连接方式

    前沿:随着互联网的高速发展,数据变得越来越重要,Python成为了人工智能的热门语言,而Nosql数据库已成为日常开发用品. 今天要写的是Python操作Redis Redis的安装我就不介绍了,你可 ...

  6. 并发编程(八)—— Java 并发队列 BlockingQueue 实现之 ArrayBlockingQueue 源码分析

    开篇先介绍下 BlockingQueue 这个接口的规则,后面再看其实现. 阻塞队列概要 阻塞队列与我们平常接触的普通队列(LinkedList或ArrayList等)的最大不同点,在于阻塞队列的阻塞 ...

  7. asp.net core系列 34 EF保存数据(1)

    一. 基本数据 每个EF上下文实例都有一个 ChangeTracker(更改跟踪器),它负责跟踪需要写入数据库的更改. 当更改实体类的实例时(修改属性,删除实例,新建实例等),这些更改会记录在 Cha ...

  8. WebSocket刨根问底(三)之群聊

    前两篇文章[WebSocket刨根问底(一)][WebSocket刨根问底(二)]我们介绍了WebSocket的一些基本理论,以及一个简单的案例,那么今天继续,我们来看一个简单的群聊的案例,来进一步了 ...

  9. Java 技术笔记

    vlist提取字段生成新list List<int> uidList = urResult.stream().map(p -> p.getUserId()).collect(Coll ...

  10. keepalived+双主实践HA

    工作不怎么忙,搞点儿开发吧差点儿事,就想着弄点儿架构的事儿.正好前段时间看过关于keepalived+双主实现高可用的文章,也恰好身边的朋友所在的公司也部分用这个架构.没什么事儿就搞搞吧,正好对比下M ...