网站首页 > 精选教程 正文
2020-03-09 13:29:01 tags: - Blog - Nanopi
摘要
本文利用Nanopi NEO2架设Hexo Blog服务器,相较于github pages,本服务器拥有更快的访问速度,还具有更完备的功能扩展性;结构上主要从公网ip的获取、路由器设置、端口映射、动态域名解析、Nanopi 环境安装,定时任务创建这六个方面来阐述安装过程以及可能会遇到的问题的解决办法。
必备条件
1.可运行linux的开发板,我使用的是Nanopi NEO2(安装了nanopi-neo2sdfriendlycore-xenial_4.14arm6420191219系统) 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),我使用的是DNSPOD做免费的域名解析;当然目前还有花生壳、nat123也提供相同的功能,另外提供内网穿透功能,也就是说你可以不必拥有公网ip就可以搭建网站,并且可实现80端口的解析(三大运营商已屏蔽80端口,DNSPOD不能解析家庭网络的80端口),但是,花生壳3.0.4树莓派版本在Nanopi 上安装失败,搜索了好久,别人说不支持……又安装了2.x版本的客户端,板子上提示花生壳上线成功,域名诊断却提示花生壳未登录,利用路由器自带的花生壳也是同样的效果;关于nat123虽然说是免费解析,但是绑定自己的域名需要认证,认证需要缴费,分了几个级别的费用
另外nat123客户端在我的板子上跑起来有点卡顿,开了之后关不了,所以,本着瞎折腾不花钱的原则,我选择了DNSPOD。
天翼网关及路由器设置
连接上天翼网关的wifi,转到192.168.1.1路由配置界面,利用超级用户名和超级密码登录路由管理界面用户名: telecomadmin 密 码: nE7j%5m 注意:一定要使用超级用户登录否则更改不了设置
点击网络将连接名称改为1_INTERNET_B_VID_41其它选项保持默认,点击保存/应用即可
进入开发板连接的路由器管理界面在上网设置里面将工作模式选择为宽带PPPOE,分别在PPPoE账户和PPPoE密码设置为你的宽带用户名和密码,点击确定即可。如果忘记了用户名和密码可直接拨打电信客服重置密码。
配置路由端口映射
首先给你的开发板绑定ip/mac,我使用的是电信送的360安全路由T3,登录路由器管理界面, 点击功能扩展,防火墙(IP/MAC)
IP地址:填入你想分配给开发板的ip,一般就用它当前的ip就可以 MAC地址:填入开发板mac地址 备注:随便写 接口:LAN绑定好后,进行端口映射,点击功能扩展,找到端口映射
虚拟服务名称:随便填 内网主机ip地址:你绑定的设备的ip地址 外部端口:选择TCP+UDP 外部访问的端口填一些不常用的端口 内部端口:你的开发板开放的端口
Nanopi 环境配置
因为我采用的是将Hexo的编译渲染环境与托管环境分开的方法,所以Nanopi 上只需要安装nginx,php即可 1.安装nginx web服务器$ sudo apt-get install nginx 2.启动nginx$ sudo /etc/init.d/nginx start nginx的www根目录默认在/var/www/,稍后会将hexo blog 的html文件放置于该目录下 3.安装php $ sudo apt-get install php7*-fpm php7*-sqlite 4.修改nginx的配置文件 $ sudo vim /etc/nginx/sites-available/default 找到listen行,将其前面的#号注释去掉,在路由器端口映射时,内网端口设置的是8678,listen为8678server { listen 8678 default_server; listen [::]:8678 default_server;
找到index行,加入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&Github快速构建个人Blog”
动态域名解析
注册并登录DNSPOD,购买域名,购买后点击我的域名,再点击ontheroad.work(你注册的域名)进入到记录管理界面,点击添加记录,按下图样子添加默认域名解析2个
再添加对自己域名的解析,记录值先随便填一个IP地址
因为我们要解析的ip是动态变化的,因此刚随便填写的记录值也要跟随着变化,下面在开发板上配置一个定时任务,利用别人封装好的bash,调用API,更改记录值 首先在DNSPOD账号中心,秘钥管理界面创建秘钥
创建成功后获得ID和Token,复制保存这两个信息,后面调用API需要 下载ArDNSPod客户端 建议下载到当前用户的根目录下,以方便定时任务的添加
$ 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"
根据情况修改`ddnspod.sh`文件中`IPtype`的值,我定义为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. ``` 那么你的客户端部署就成功了,可以在DNSPOD控制台中看到我们随便填的记录值变成了自己的路由器ip。
至此你可以将github 上面我们上传的Hexo网页信息clone到本地的nginx根目录啦 注意:关于如何将Hexo博客上传到github请参考上一篇文章“利用Hexo&Github快速构建个人Blog”$ cd /var/www/ $ sudo rm -rf html $ sudo git clone https://github.com:YourgithubName/YourgithubName.github.io.git用浏览器打开192.168.0.6:8678,就可以看到自己的博客啦!
创建定时任务
需要创建两个定时任务 一个用于实时监测IP并自动更新至DNSPOD,另一个用于定时抓取github上我们更新的博客内容。
修改ddnspod.sh文件中的DIR变量值(这个地方我找了好久,因为cron定时任务只支持绝对路径,所以bash中的命令需要使用绝对路径)DIR=$(dirname -- "$(readlink "$0")") DIR=./ArDNSPod #添加这一行修改完后你会发现在当前目录下运行./ddnspod.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变量导致的错误,可以在当前目录新建一个ArDNSPod把dns.conf复制进去就行了,这只是敷衍自己,后期有时间再做更正。 $ sudo mkdir ArDNSPod $ cp dns.conf ./ArDNSPod/ 创建定时任务 crontab -e 会打开当前用户的cron任务表 在最底下添加两个任务,第一个每隔一分钟调用dnshpod.sh更新域名解析记录值,第二个每隔30分钟从github pull你更新的博客 ```
m h dom mon dow command
*/1 * * * * ./ArDNSPod/ddnspod.sh */30 * * * * cd /var/www/html/ && sudo git pull**注意:**不建议将第二个更新时间设置得太短,因为github的访问速度不快,为避免更新出错,适当调整时间。 重启cron使配置生效$ service cron restart ``` 如果时间到了,执行了你的定时任务,恭喜你,在Nanopi 上部署Hexo 博客已经圆满完成!可以通过你的域名+端口号来访问自己的博客啦,比如说我的博客:www.ontheroad.work:8888
如果没有执行,好吧,你最先想到的应该是查看log,但是默认情况下ubuntu 没有安装rsyslog 安装rsyslog sudo apt-get install rsyslog开启cron日志功能,#将cron前面的注释符去掉$ sudo vim /etc/rsyslog.d/50-default.conf 重启rsyslog$sudo service rsyslog restart 查看crontab日志$ vim /var/log/cron.log 这时你可能会发现一个(CRON) info (No MTA installed, discarding output)的问题,这时因为没有配置邮件服务器 可以通过安装邮件服务器解决该问题$ sudo apt-get install postfix 重新配置邮件服务sudo dpkg-reconfigure postfix 按提示一直ok或yes,配置完邮箱后也部署也就完成了! 注意:记得回去关闭cron的log,在重新配置一下邮箱容量,否则随着时间的推移,log会占用大量空间。
小结
虽然将Hexo部署在Nanopi上,增加了更多的不稳定风险,但是通过这两天的运行能够看出,相较于部署在github上的博客,我的Nanopi表现得相当不错,尤其在下午6:00以后,对github的解析出现了无法连接的情况,我估计是地球另一边的人起来干活了吧…… 目前一小时对github pages服务器解析监控
同时间段对Nanopi服务器解析监控
当然优点不仅如此,还可以在Nanopi上搭建私有云盘、物联网服务器、网络打印机等等好玩的用法。
END
猜你喜欢
- 2024-10-13 ubuntu 19.10有什么新新特性 ubuntu20.10新功能
- 2024-10-13 JavaCV的摄像头实战系列之一:基础知识和准备工作
- 2024-10-13 ubuntu 19.10有什么新特性? ubuntu20.10新功能
- 2024-10-13 干货|一篇超赞的docker入门教程,值得好好收藏
- 2024-10-13 用.NET做DDNS动态域名解析和SSL证书申请
- 2024-10-13 笨办法学物联网之四:99个物联网动手实践项目
- 2024-10-13 秒变万能家庭服务器!斐讯N1 armbian安装指南
- 2024-10-13 Java程序员14个K8S必备基础概念,你知道哪些
- 2024-10-13 ubuntu 19.10新特性 ubuntu20.10特性
- 2024-10-13 打造家庭web服务器 打造家庭web服务器怎么样
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)