概括
本文使用 NEO2 搭建 Hexo Blog 服务器,相较于页面,该服务器拥有更快的访问速度和更完善的功能扩展性。结构主要从获取公网 IP、路由器设置、端口映射、动态域名解析、环境安装、创建计划任务六个方面讲解安装过程及可能出现的问题解决方法。
我的博客地址:8888
目录
配有迷你盒子,看起来很棒!
先决条件
1. 一块能运行Linux的开发板,我用的是NEO2(已安装--.系统)
2.公网IP(如果是电信宽带,可以直接打客服电话让他们帮你切换成公网IP)
3. 可配置端口映射的路由器
4.个人域名(可以自行购买,如果只是玩玩也可以购买域名,1元/首年)
如何判断是否是公网IP
登录到您的路由器并检查您的路由器 IP
百度搜索ip
如果你发现两个 IP 相同,那么恭喜你,你使用的是公网 IP。如果不是,请继续阅读。
注意:一定要确保你的路由器是一级路由器,也就是不是从其他路由器(比如天翼网关)接的,或者是直接拨号上网的,否则你在路由器管理界面看到的路由器IP可能是192.168.*.*。我的路由器是接天翼网关的,需要把天翼网关设置为桥接模式,后面会讲到怎么设置。
如何获取公网 IP 地址以及为什么要获取公网 IP 地址
公网IP:如果想从外网直接访问开发板的内容,就必须把你的服务器开放到公网。因为IPv4数量有限,个人家庭的网络基本都是多个家庭挂载在一个IP下,通过NAT转发给每个用户。电信比较人性化,打个电话就可以直接免费获得一个公网IP,但是它给你的并不是固定IP,而是动态IP,也就是你每拨一次电话得到的IP都不一样,每隔一定时间你的IP就会自动变化。因为这个原因,你需要动态域名解析(DNS),我用的是免费域名解析。当然还有花生壳,也提供同样的功能,还提供了内网穿透功能,也就是说你不需要公网IP就可以搭建网站,而且可以解析80端口(三大运营商已经封了80端口,无法解析家庭网络的80端口)。不过花生壳3.0.4在树莓派上安装失败。找了好久别人都说不支持……我又装了2.x版本的客户端,板子提示花生壳上线成功,但是域名诊断提示花生壳未登录,使用路由器自带的花生壳也达到了同样的效果,虽然是免费解析,但是绑定自己的域名需要认证,认证是需要付费的,分为几级费用。
另外该客户端在我的板子上跑起来有点卡,而且打开之后无法关闭,所以本着不花钱修修补补的原则,就选择了它。
天翼网关与路由器设置
连接天翼网关的wifi,进入192.168.1.1路由器配置界面,使用超级用户名和超级密码登录路由器管理界面。
用户名: telecomadmin
密 码: nE7j%5m
**注意:**您必须以超级用户身份登录,否则您无法更改设置
点击网络将连接名称更改为其他选项并保持默认,然后单击保存/应用。
进入开发板连接的路由器管理界面,在上网设置中选择宽带PPPOE作为工作模式,将PPPoE账号和PPPoE密码分别设置为你的宽带用户名和密码,点击确定。如果忘记用户名和密码,可以直接拨打电信客服电话重置密码。
配置路由端口映射
首先将ip/mac绑定到你的开发板,我用的是中国电信配的360安全路由器T3,登录路由器管理界面。
点击功能扩展,防火墙(IP/MAC)
IP地址:填入你想分配给开发板的ip,一般就用它当前的ip就可以
MAC地址:填入开发板mac地址
备注:随便写
接口:LAN
绑定后进行端口映射,点击功能扩展,找到端口映射
虚拟服务名称:随便填
内网主机ip地址:你绑定的设备的ip地址
外部端口:选择TCP+UDP 外部访问的端口填一些不常用的端口
内部端口:你的开发板开放的端口
环境配置
因为我采用的是Hexo的编译渲染环境和主机环境分离的方式,所以只需要安装nginx和php即可。
1.安装 nginx 网络服务器
$ sudo apt-get install nginx
2.启动nginx
$ sudo /etc/init.d/nginx start
nginx默认的www根目录为/var/www/,后面hexo博客的HTML文件都会放在这个目录下。
3.安装PHP
$ sudo apt-get install php7*-fpm php7*-sqlite
4.修改nginx配置文件
$ sudo vim /etc/nginx/sites-available/default
找到该行,去掉前面的#注释,映射路由器端口时,内网端口设置为8678。
server {
listen 8678 default_server;
listen [::]:8678 default_server;
找到索引行并添加index.php
# Add index.php to the list if you are using PHP
index index.php index.html index.htm index.nginx-debian.html;
server_name _;
找到PHP的定义部分,修改如下
location ~ \.php$ {
#include snippets/fastcgi-php.conf;
# With php7.0-cgi alone:
#fastcgi_pass 127.0.0.1:9000;
# With php7.0-fpm:
include fastcgi_params;
fastcgi_index index.php;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
5.重新加载nginx配置
$ sudo /etc/init.d/nginx reload
这时候打开浏览器输入192.168.0.6:8678,就能看到一个nginx的界面就说明配置成功了。
在 PC 上安装 Hexo Blog
这个内容在之前的博客里已经讲解过了,这里就不再赘述了,可以参考《使用 Hexo 快速搭建个人博客》
动态 DNS
注册登录后,购买域名,购买后点击我的域名,然后点击.work(你注册的域名)进入记录管理界面,点击添加记录,添加两个默认域名解析如下图
然后添加自己域名的解析,记录值随意填一个IP地址
因为我们要解析的IP是动态变化的,所以刚才填写的记录值也要随之变化,接下来在开发板上配置一个计划任务,使用别人封装好的bash,调用API,改变记录值
一、在账户中心、秘钥管理界面创建秘钥
创建成功后会得到ID和Token,复制并保存这两个信息,后面调用API的时候会用到。
下载客户端
建议下载到当前用户根目录,方便添加计划任务
$ cd ~
$ git clone https://github.com/imki911/ArDNSPod
将之前获取到的ID和token写入dns.conf文件中,并指定需要绑定的子域名
# 1. Combine your token ID and token together as follows
arToken="你的token ID,你的token"
# 2. Place each domain you want to check as follows
# you can have multiple arDdnsCheck blocks
arDdnsCheck "你的域名" "www"
根据情况修改.sh文件中的值,我定义为1(WAN)
#Please select IP type
IPtype=1 #1.WAN 2.LAN 3.IPv6
跑步
$ ./ddnspod.sh
你会看到
Type: A
OS: Linux
Address: 117.64.253.248
Updating Domain: www.ontheroad.work
hostIP: 117.64.253.248
lastIP: 114.97.203.112
update to 117.64.253.248 successed.
然后你的客户端部署就成功了,你可以在控制台里看到我们随便填的记录值已经成为了我们自己的路由器IP。
此时就可以将我们上面上传的Hexo网页信息克隆到本地nginx根目录了
注:关于如何上传Hexo博客请参考上一篇文章《使用Hexo快速搭建个人博客》
$ cd /var/www/
$ sudo rm -rf html
$ sudo git clone https://github.com:YourgithubName/YourgithubName.github.io.git
用浏览器打开192.168.0.6:8678就可以看到你的博客了!
创建计划任务
您需要创建两个计划任务
一个是用来实时监控IP并且自动更新的,另一个是用来定期抓取我们更新的博客内容的。
修改.sh文件中的DIR变量值(这个地方我找了好久,因为cron计划任务只支持绝对路径,所以bash中的命令需要使用绝对路径)
DIR=$(dirname -- "$(readlink "$0")")
DIR=./ArDNSPod #添加这一行
修改完之后你会发现在当前目录运行./.sh的时候会出现下面的错误
Type: A
OS: Linux
Address: 114.97.203.119
./ddnspod.sh: line 282: ./ArDNSPod/dns.conf: No such file or directory
因为我没有bash编程的基础知识,暂时也没有学习bash的计划,所以我可以强制修改DIR变量,导致出错,可以在当前目录新建一个,把dns.conf复制进去,这只是自欺欺人,等我有时间再改正。
$ sudo mkdir ArDNSPod
$ cp dns.conf ./ArDNSPod/
创建计划任务
crontab -e
将打开当前用户的 cron 任务表
在底部添加两个任务,第一个任务每分钟调用.sh 更新域名解析记录值,第二个任务每 30 分钟拉取你更新的博客。
# m h dom mon dow command
*/1 * * * * ./ArDNSPod/ddnspod.sh
*/30 * * * * cd /var/www/html/ && sudo git pull
注意:第二次更新时间不建议设置过短,因为访问速度不够快,为避免更新错误,请适当调整时间。
重启cron使配置生效
$ service cron restart
如果时间到了,你的定时任务执行成功了,那么恭喜你,Hexo blog 的部署已经成功完成!你可以通过你的域名+端口号来访问你的博客,例如我的博客::8888
如果没有执行,那么,您首先应该想到的就是检查日志,但是默认情况下它没有安装。
安装
sudo apt-get install rsyslog
启用cron日志功能,#删除cron前面的注释符
$ sudo vim /etc/rsyslog.d/50-default.conf
重启
$sudo service rsyslog restart
查看日志
$ vim /var/log/cron.log
这时候你可能会发现一个(CRON)info(No MTA,)的问题,这是因为没有配置邮件服务器。
这个问题可以通过安装邮件服务器来解决
$ sudo apt-get install postfix
重新配置邮件服务
sudo dpkg-reconfigure postfix
按照提示一直点击ok或者yes,配置完邮箱之后就部署完成了!
**注意:**记得返回并关闭 cron 日志并重新配置邮箱容量,否则日志会随着时间的推移占用大量空间。
概括
虽然在 上部署 Hexo 增加了不稳定的风险,但是通过这两天的运行可以看出,相比于 上部署的博客,我的性能还是挺好的,尤其是晚上六点之后, 的解析就无法连接了,我猜地球那边的人都起床上班了……
目前对页面服务器进行一小时的分析监控
同一时间段服务器分析监控
当然好处不止于此,你还可以在上面搭建私有云盘、物联网服务器、网络打印机等各种好玩的用途。
结尾
扫一扫在手机端查看
-
Tags : nanopi neo air web服务器
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。