基于raspberry搭建个人web server

  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>

 

相关文章