用Raspberry Pi Zero打造「即插即用」的Web服务器
*本文原创作者:yfgeek,未经许可禁止转载
虽然Raspberry Pi Zero只有4.5英镑,非常便宜,但确实具有局限性,由于缺少网口、WiFi,功能比较单一,可曾设想,用Raspberry Pi Zero打造一个完美的“即插即用”的Web服务器?
何为即插即用?
类似于优盘一样,插上电脑,等待几秒,直接识别为网卡,直接输入树莓派的网址,连接就是自己的网站。
那么,问题来了,有什么用?
实现本地web本地化,随着前端、后端技术的发展,web应用越来越多,但是web应用受制于网络的限制,一旦没有网络,就没有用武之地。
那么为什么不把web本地化呢?以后拿着“即插即用”的服务器,到任何电脑上,都能随时办公。
安装
我们可以把树莓派虚拟为网卡,然后在内网连接它。
1.下载完整版 Raspbian Jessie 或 Raspbian Jessie Lite 系统,并且刷到你的SD Card里,Windows用Win32 Disk Imager, Mac/Linux 用命令,如下:
diskutil list diskutil unmountDisk /dev/SD卡的标号 #如disk2cd /Users/ivan/Downloads/2016-11-25-raspbian-jessie #进入目录sudo dd bs=1m if=2016-11-25-raspbian-jessie.img of=/dev/rdisk2
2.刷好系统后编辑config.txt
文件,在最后一行下,另起一行添加:
dtoverlay=dwc2
保存文件
3.最后,打开cmdline.txt
文件。找到单词rootwait
,在其之后添加:
modules-load=dwc2,g_ether
4.添加一个文件名为ssh
到根目录下,内容为空
5.把SD Card放到树莓派Zero,用安卓数据线与电脑连接,USB口接OTG口,等待60-90s,电脑会发现网卡并且自动配置ip地址。
6.Ping 一下raspberrypi.local看是否能通
PING raspberrypi.local (169.254.70.245): 56 data bytes64 bytes from 169.254.70.245: icmp_seq=0 ttl=64 time=0.570 ms64 bytes from 169.254.70.245: icmp_seq=1 ttl=64 time=0.338 ms64 bytes from 169.254.70.245: icmp_seq=2 ttl=64 time=0.316 ms64 bytes from 169.254.70.245: icmp_seq=3 ttl=64 time=0.344 ms
配置
1.ssh连接raspberrypi.local,默认密码为raspberry
pi@raspberrypi.local
2.通过直接运行raspi-config
命令
你需要做
容量扩展 更改系统时区 更改系统密码
3.同时你需要通过执行sudo passwd root
更改root密码
4.在本机设置代理
首先,设置本机名为Mac,在本机搭建一个squid,为了使树莓派安装web server,以后日常使用不需要。
brew updatebrew install squid
5.然后下载SquidMan,安装。在本机开启端口为8080的HTTP代理服务,并把本机名称更为Mac。
6.进入树莓派的shell,输入:
cd /etc/apt/apt.conf.d sudo vi 50raspi
最后一行加入一句话:
Acquire::http::Proxy "http://Mac.local:8080";
保存
7.继续输入apt-get update
查看是否有网络。
8.安装lighthttpd+mysql+php
输入:
sudo apt-get install lighttpd mysql-server php5-cgi php5-mysql
等待安装完毕后,修改php.ini
设置
sudo nano /etc/php5/cgi/php.ini
去掉这一条注释的;
;cgi.fix_pathinfo = 1
随后修改lighttpd.conf
sudo nano /etc/lighttpd/lighttpd.conf
在server.modules
中增加fastcgi
server.modules = ("mod_access","mod_alias","mod_compress",# "mod_redirect","mod_fastcgi",# "mod_rewrite",)
最后添加
fastcgi.server = ( ".php" => (( "bin-path" => "/usr/bin/php5-cgi", "socket" => "/tmp/php.socket")))
重启lighttpd服务
sudo /etc/init.d/lighttpd restart
通过scp协议,上传一个index.php
文件
<?phpphpinfo();?>
删除默认的index.htm
文件,打开网站http://自己树莓派名字.local
查看是否成功。
不错,接下来的事情,就是把自己的源代码传到树莓派上,不过多叙述。
多说一句
从此以后,你只需要带上你的树莓派Zero就可以随时随地的打开自己的私有web服务。但是,树莓派Zero的性能,确实不行,建议跑一跑小型的程序,不要跑太大的程序。
至于应用嘛,其实做什么都可以的。
*本文原创作者:yfgeek,转载请注明来自FreeBuf.COM
- HTML5中类jQuery选择器querySelector的使用
- Ceph 集群整体迁移方案
- CSS3矩阵变换
- 可直接运行
- Ryu:网络时延探测应用
- box布局
- Event Loop
- 把图片变成字体,然后在引入到网页
- Flutter环境搭建
- java.net.ConnectException: Call From slaver1/192.168.19.128 to slaver1:8020 failed on connection exc
- 18/03/18 04:53:44 WARN TaskSchedulerImpl: Initial job has not accepted any resources; check your clu
- 技术干货 | Hadoop3.0稳定版安装攻略来啦!
- ios逆向工具MonkeyDev简介
- 自定义下拉列表
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法