(草稿,待完善)
需求
有时候需要在互联网上建设一个多人交流的场所,需要一个 wiki 与一个 bug tracing 软件,这需要一台安装了相应服务软件的服务器来支持,还需要外网IP。眼下缺少服务器,但手头正好有个树莓派(Raspberry Pi 3 Model B),于是想试试看,毕竟是少数人群使用,能否用这个来做服务器呢?
安装系统
树莓派官方已经给我们提供了一个建议,基于 Debian 的 raspbian,当前是基于 Debian 9 制作的。官网提供的是一个完整的镜像,下载后直接用 Etcher 写入一张16G 左右的 SD 卡,插入树莓派即可运行。
安装好后,用 raspi-config
命令,启用 SSH,连接 WIFI,做好无线路由器的端口映射,并在路由器的 DHCP 设置上树莓派的 IP 绑定,以便重启树莓派后能够获得同样的 IP 地址。的如此,就可以在外网访问这台树莓派了。
使用阿里提供的安装包的源,提高速度,修改 /etc/apt/sources.list 如下:
deb http://mirrors.aliyun.com/raspbian/raspbian/ stretch main contrib non-free rpi
deb-src http://mirrors.aliyun.com/raspbian/raspbian/ stretch main contrib non-free rpi
然后更新之
$ sudo apt-get update
安装基础平台
基础平台包括 web 服务器、脚本支持系统、数据库。考虑到资源占用问题,web 服务器选用 nginx,脚本支持将安装 PHP7 与 python3,数据库用 mysql。
安装 nginx
$ sudo apt-get install nginx
这将默认安装 nginx 1.10.3 版本。然后微调配置文件
$ sudo vi /etc/nginx/nginx.conf
将
include /etc/nginx/conf.d/*;
include /etc/nginx/sites-enabled/*;
改为
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*.conf;
以便符合本人的文件命名美学。然后
$ mkdir ~/www
$ cd ~/www
$ echo "<html>hello world</html>" >> index.html
现在通过浏览器查看 http://127.0.0.1 ,如果看到 hello word 字样,表示一切 ok。
安装 PHP7
$ sudo apt-get install php7.0 php7.0-fpm
其中第一个包用于提供 PHP 支持,第二个包实现 fastcgi 用于与 nginx 通信。然后修改 nginx 配置,以便支持 php:
$ cd /etc/nginx/sites-available
$ cp default php_at_pi.conf
$ vi php_at_pi.conf
$ ln -s php_at_pi.conf ../sites-enabled/php_at_pi.conf
其中, php_at_pi.conf
这个文件,主要修改了 root
命令,启用 php 支持等相关几条配置,主要改动如下:
...
root /home/pi/Public/www;
index index.php
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
}
...
接下来,新建一个php文件测试一下
$ echo "<?php echo phpinfo(); ?>" >> ~/www/index.php
$ sudo nginx -s reload
现在,打开浏览器,看看 http://127.0.0.1,看看是否出现正常页面。
安装 mysql
安装 uwsgi
安装业务系统
wiki
bugtracing
TroubleShooting
忘记密码
树莓派采用后台模式提供服务,无需管理,这就导致一个小问题:长时间不用,密码忘记了。
恢复密码需要三步骤,参考How To Raspberry Pi:
- 启动单用户模式
- 关闭系统,取下 SD 卡,插入其他计算机
- 修改其中 cmdline.txt 文件,该文件一般就一行,在这一行最末尾,添加
init=/bin/sh
这几个字 - 将 SD 卡插回树莓派,启动之
- 修改密码
- 在此时,整个操作系统可能是处于 readonly 模式下的,无法修改密码,会出现
authentication token manipulation error
错误,应使用mount -o remount, rw /
命令将系统加载成可以读写的 - 现在可以用
passwd pi
命令修改密码了 - 然后用
sync && exec /sbin/init
重启系统,看看是否一切正常
- 在此时,整个操作系统可能是处于 readonly 模式下的,无法修改密码,会出现
- 回归正常系统
- 关机,取下 SD 卡,修改 cmdline.txt ,将步骤一添加进去的文字删除
- 插回树莓派,over