基于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 [email protected]"%" 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 [email protected]

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>

原文地址:https://www.cnblogs.com/zliny/p/10254646.html

时间: 2024-11-05 16:34:14

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

python搭建简易Web Server

如果你急需一个简单的Web Server,但你又不想去下载并安装那些复杂的HTTP服务程序,比如:Apache,ISS等.那么, Python可能帮助你,使用Python可以完成一个简单的内建 HTTP 服务器,于是,你可以把你的目录和文件都以HTTP的方式展示出来,只需要干一件事情,那就是安装一个Python. 实际上来说,这是一个可以用来共享文件的非常有用的方式.实现一个微型的HTTP服务程序来说是很简单的事情,在Python下,只需要一个命令行.下面是这个命令行:(假设我们需要共享我们的目

基于Nginx搭建Web服务器及虚拟主机相关配置详解

随着计算机与Internet技术的高速发展,各种各样的Web站点也就成为面向用户的中坚力量.在各种网站服务器软件中.除了Apache外,还有一款轻量级的HTTP服务器软件--Nginx. 基于Apache搭建Web服务器可以参考博文:基于Apache搭建Web服务器详解 一.Nginx服务简介 Nginx由俄罗斯的lgor Sysoev开发,专为性能优化而开发,其最知名的优点就是它的稳定性和低系统资源消耗.以及对HTTP并发连接的高处立能力(单台物理服务器可支持30000~50000个并发请求)

CSAPP Tiny web server源代码分析及搭建执行

1. Web基础 webclient和server之间的交互使用的是一个基于文本的应用级协议HTTP(超文本传输协议). 一个webclient(即浏览器)打开一个到server的因特网连接,而且请求某些内容.server响应所请求的内容,然后关闭连接.浏览器读取这些内容.并把它显示在屏幕上. 对于webclient和server而言.内容是与一个MIME类型相关的字节序列. 常见的MIME类型: MIME类型 描写叙述 text/html HTML页面 text/plain 无格式文本 ima

web server(protein protection )搭建过程中遇到的问题

1.StringBuffer中append方法有错误 原因分析:是project默认的JRE系统库和配置的jre不匹配. 解决方法:项目属性->Add Libray->JRE System Library->Alternate JRE(选择Sun JDK 1.6.0_13) 2.文件上传问题 mySmartUpload.setAllowedFilesList("txt");  //设置上传文件类型只能是txt格式 文件上传处理过程 jsp文件: <div id=

基于ARM和Linux的嵌入式Web Server设计与实现_爱学术——免费下载

[摘要]介绍了嵌入式ARM处理器的特点和硬件平台的设计.嵌入式操作系统的设计,构建了基于嵌入式Web Server的远程监测系统结构,重点分析了嵌入式TCP/IP协议栈的体系结构.嵌入式Web服务器BOA中一些重要文件的配置.实现动态Web服务的CGI技术及动态WEB服务器的移植,实现了基于B/S结构的嵌入式动态Web远程监测系统. [作者] 彭道刚  张浩  江剑宁  许龙虎 转载至爱学术:https://www.ixueshu.com/document/f838a30d77441936318

python搭建web server

如果你急需一个简单的Web Server,但你又不想去下载并安装那些复杂的HTTP服务程序,比如:Apache,ISS等.那么, Python 可能帮助你.使用Python可以完成一个简单的内建 HTTP 服务器.于是,你可以把你的目录和文件都以HTTP的方式展示出来.佻只需要干一件事情,那就是安装一个Python. 实际上来说,这是一个可以用来共享文件的非常有用的方式.实现一个微型的HTTP服务程序来说是很简单的事情,在Python下,只需要一个命令行.下面是这个命令行:(假设我们需要共享我们

VMWare下Web Server 环境搭建------LAMP

一.所需文件 新建一个虚拟机,虚拟机参数配置如下图 CentOS-6.2-x86_64-bin-DVD   Linux系统盘/64位.需要进入BIOS打开vt-x服务,方法: bios——config——cpu——intel Virtualization technology 选择开启即可 LAMP环境所需文件如下所示: 其中lamp.sh为自动安装脚本. 二.安装Linux系统 检查光盘,耗时比较长,选择SKIP 安装语音选择简体中文 选择是,丢弃所有数据 输入主机名 选择自定义分区 手动分区

Nginx负载均衡:分布式Web Server的搭建

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行.由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рамблер)使用.其特点是占有内存少,并发能力强,中国大陆使用nginx网站用户有:新浪.网易.腾讯等. Nginx 是一个很强大的高性能Web和反向代理服务器,它具有很多非常优越的特性,在高连接并发的情况下,Nginx是Apache服务器不错的替代品,Ng

基于MVC+EasyUI的Web开发框架经验总结(8)--实现Office文档的预览

在很多文章里面,曾经有一些介绍Office文档预览查看操作的,有些通过转为PDF进行查看,有些通过把它转换为Flash进行查看,但是过程都是曲线救国,真正能够简洁方便的实现Office文档的预览的还是比较少,这里的Office文档包括了Word.Excel.PPT文档.本文介绍两种方式,一种方式是通过在线预览的方式,利用微软的平台进行Office文档的在线查看:一种是把Office文档生成HTML文件后进行查看.然后对比他们的优缺点,并进行总结. 1.利用微软的平台进行Office文档的在线查看