Beaglebone black 搭建LAMP服务器及动态域名解析

beaglebone black lamp

bbb搭建的wordpress,欢迎大家测试!

http://bbb.ydea.net

Beaglebone Black板子闲置的有一段时间了。这周突然有一个想法:在Beaglebone Black上搭建服务器,运行个wordpress玩玩。说做就做,中间遇到了许多问题,不过都一一解决,几乎花费了这周下班后的全部休息时间。

一、Beaglebone Black 系统安装与SD卡挂载

bbb开发板系统烧写有两种方式:一种是直接烧写到内置的4G空间的emmc上,一种是把系统烧写到SD卡上。本来想采用第二种方法,但是适合烧写在SD卡上的最新版系统下了好久都下不下来,在中国访问国外的网站,下载一些资料真是受罪。而恰好下载下了适合烧写在emmc的系统,于是采用了第一种方法。但是内置的emmc只有4G,烧写完空间就剩余不多了,于是准备把8G的SD卡挂载到bbb上,以便拓展存储空间。

烧写好了Debian 8.3版本的系统后,开机修改/etc/fstab文件,添加sd卡配置信息,结果发现,系统启动不起来了,通过连接串口工具,查看启动信息发现,文件系统的挂载有问题。原来把SD卡插入BBB板子后重新启动系统,系统会把sd卡变为/dev/mmcblck0,emmc变为/dev/mmcblck1,但是我在fstab文件中是这样配置sd的开机挂载的:

/dev/mmcblck1  /mnt/sdcard  vfat  defaults,uid=1000,gid=1000,dmask=022,fmask=133  0  0

发现这个错误后,拔掉SD卡开机,系统同样不能正常启动,串口输出的系统显示卡在SD挂载的地方,之后插入SD卡系统成功启动。

然后修改fstab配置,把上次添加的信息改为:

/dev/mmcblck0  /mnt/sdcard  vfat  defaults,uid=1000,gid=1000,dmask=022,fmask=133  0  0

重启后,可以正常开机。

但是经过上次失败的教训,深刻的体会到了这样挂载存储设备的弊端,于是通过SD的UUID挂载,这样就不会导致挂载出错了。

可以通过以下两种方法查看分区或存储设备的UUID:

1、 blkid

root@beaglebone:~# blkid
/dev/mmcblk0: UUID=”D2DB-ADA7″ TYPE=”vfat”
/dev/mmcblk1p1: LABEL=”BOOT” UUID=”4b898c97-6bec-4bcb-be60-406a5e390dca” TYPE=”ext4″
/dev/mmcblk1: PTTYPE=”dos”
root@beaglebone:~#

2、ls /dev/disk/by-uuid/ –l

# ls /dev/disk/by-uuid/ -l
total 0
lrwxrwxrwx 1 root root 15 Mar  5 11:56 4b898c97-6bec-4bcb-be60-406a5e390dca -> ../../mmcblk1p1
lrwxrwxrwx 1 root root 13 Mar  5 11:56 D2DB-ADA7 -> ../../mmcblk0
root@beaglebone:~#

修改后的fstab如下;

# /etc/fstab: static file system information.
#
UUID=4b898c97-6bec-4bcb-be60-406a5e390dca  /  ext4  noatime,errors=remount-ro  0  1
debugfs  /sys/kernel/debug  debugfs  defaults  0  0
UUID=D2DB-ADA7  /mnt/sdcard  vfat  defaults,uid=1000,gid=1000,dmask=022,fmask=133  0  0

二、Beaglebone Black LAMP环境搭建

安装LAMP软件时也出了一些问题,安装软件时发现软件都不能安装,apt-get update也更新不了。最后在网上搜索到了一些国内的debian源写入到/etc/apt/sources.list中才解决问题。

我的sources.list内容如下:

deb [arch=armhf] http://debian.ustc.edu.cn/debian jessie-proposed-updates main non-free contrib

deb http://ftp.us.debian.org/debian/ jessie main contrib non-free
#deb-src http://ftp.us.debian.org/debian/ jessie main contrib non-free

deb http://ftp.us.debian.org/debian/ jessie-updates main contrib non-free
#deb-src http://ftp.us.debian.org/debian/ jessie-updates main contrib non-free

#deb http://security.debian.org/ jessie/updates main contrib non-free
#deb-src http://security.debian.org/ jessie/updates main contrib non-free

#deb http://ftp.debian.org/debian jessie-backports main contrib non-free
##deb-src http://ftp.debian.org/debian jessie-backports main contrib non-free

deb [arch=armhf] http://ftp.us.debian.org/debian jessie main  contrib non-free
#deb-src [arch=armhf] http://ftp.us.debian.org/debian  jessie main contrib non-free

deb [arch=armhf] http://ftp.cn.debian.org/debian jessie main  contrib non-free
#deb-src [arch=armhf] http://ftp.cn.debian.org/debian  jessie main contrib non-free

deb [arch=armhf] http://debian.ustc.edu.cn/debian jessie main  contrib non-free
#deb-src [arch=armhf] http://debian.ustc.edu.cn/debian  jessie main contrib non-free

deb [arch=armhf] http://mirrors.tuna.tsinghua.edu.cn/debian jessie main  contrib non-free
#deb-src [arch=armhf] http://mirrors.tuna.tsinghua.edu.cn/debian  jessie main contrib non-free

deb [arch=armhf] http://mirrors.hust.edu.cn/debian jessie main  contrib non-free
#deb-src [arch=armhf] http://mirrors.hust.edu.cn/debian  jessie main contrib non-free

deb [arch=armhf] http://debian.bjtu.edu.cn/debian jessie main  contrib non-free
#deb-src [arch=armhf] http://debian.bjtu.edu.cn/debian  jessie main contrib non-free

1、安装Apache

apt-get intall  install apache2 apache2-doc

bbb的debian系统中已经有了,不用重新安装

2、安装MySQL

apt-get install mysql-server mysql-client

安装过程中要输入和设置一些密码,按提示做就行了

3、安装php

apt-get install php5 php5-mysql libapache2-mod-php5

4、安装phpMyAdmin

apt-get install phpmyadmin

5、配置LAMP

由于Beaglebone black已经内置了一个网页服务器,如果不禁止的话,http的80端口会跳到bbb的网页上(bbb网页叫做bone101,是由bonescript实现的),而Apache2无法监听80端口。

经过一番研究终于找到了禁用bonescript的方法:

systemctl disable bonescript.socket

systemctl disable bonescript-autorun.service

然后启动系统,bonescript就失效了。

1、配置Apache2

在/etc/apache2/port.conf中添加

Listen 80

增加对80端口的监听

修改/etc/apache2/sites-enabled/000-default.conf

(其实是到sites-available中配置文件的链接  000-default.conf -> ../sites-available/000-default.conf)

在其中修改网站根目录,端口等信息。

2、配置phpadmin

在/etc/apache2/apache2.conf中添加

Include /etc/phpmyadmin/apache.conf

3、测试PHP及phpadmin

由于我的网站根目录设置的是

/mnt/sdcard/public_html

所以我在此目录下创建了index.php文件,并在其中写入:

<?php phpinfo(); ?>

然后重启apache2:

/etc/init.d/apache2 restart

在浏览器中输入http://<SERVERIP>/出现php信息的页面,输入http://<SERVERIP>/phpmyadmin/会出现phpmyadmin的页面

三、Wordpress环境配置及安装

修改/etc/apache2/sites-enabled/000-default.conf

我的000-default.conf内容如下;

<VirtualHost *:80>
DocumentRoot /mnt/sdcard/public_html
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory /mnt/sdcard/public_html>
Options FollowSymLinks
AllowOverride Limit Options FileInfo
DirectoryIndex index.php
Require all granted
</Directory>
<Directory /mnt/sdcard/public_html/wp-content>
Options FollowSymLinks
Require all granted
</Directory>

</VirtualHost>

使能mod_rewrite和mod_vhost_alias

a2enmod rewrite && a2enmod vhost_alias && service apache2 restart

重启Apache2

service apache2 reload

把wordpress放入网站根目录下,一步步安装即可。

四、安装FTP服务器

apt-get install vsftpd

修改/etc/vsftpd.conf

local_enable=YES

write_enable=YES

这两句前解掉注释,开启本地帐户登录和写权限。

然后把debian用户目录下的文件链接到wordpress网站的根目录下,这样ftp可以通过debian目录下的文件链接到网站根目录

mkdir –p /home/debian/www/public_html

mount –bind /mnt/sdcard/public_html /home/debian/www/public_html

五、动态域名解析DDNS
发现花生壳的动态的域名解析免费版的几乎解析不到,于是就考虑用其它的动态域名解析服务,上网搜了下dnspod,发现dnspod果然提供动态域名解析,并且是免费和开放的,dnspod的api完全开放。dnspod提供有windows版的工具,但是没有官方的linux版工具,好在有第三方的项目存在。

由于我用的是路由器,不是直接接入外网,发现获取外网IP是个太问题,由于广域网路的复杂性,IP138等一些网站提供的接口查询到的IP和我路由上的外网IP不同,所以没法获取真实的IP,通过一番上网搜索仍然没有找到合适的办法。最后无意中发现nat123提供的接口,对于我这边的网络来说获取真实IP几率较高,不得已只能采用这个接口来获取外网IP。

实现内网服务器的动态域名解析,路由器还需设置端口映射,也可以启动路由器的DMZ,使指定的内网主机完全暴露给外网。

duankouyingshe

jingtaidizfenpei

经过不懈努力,在前人的基础上,终于用shell脚本实现了dnspod的动态域名解析。

bbb搭建的wordpress网站地址如下,欢迎大家测试!

http://bbb.ydea.net

3 Comments

  1. 静水流深

    打不开啊~

    Reply

    • 一念花开

      可能是长城宽带技术上的限制,我这边输入域名可以打开,用手机移动的网络却打不开,域名解析的IP是正确的

      Reply

      • 静水流深

        深圳电信,打不开,还有你的评论回复挂了,我收不到你回复的邮件通知~

        Reply

Leave a Reply

*