必备条件
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 followsarToken="你的token ID,你的token"
2. Place each domain you want to check as followsyou can have multiple arDdnsCheck blocksarDdnsCheck "你的域名" "www"
根据情形修正`ddnspod.sh`文件中`IPtype`的值,我定义为1(WAN)
Please select IP typeIPtype=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