为github pages博客绑定自定义域名和部署到云服务器

前言:

使用hexo部署的博客是将博客托管到github page上,并且域名固定为xxx.github.io。因github不在大陆内的原因,访问速度有时会不那么理想,想让自己的博客能以稳定的速度访问,需要部署到云服务器。

若想自定义域名,则需要购买一个域名并进行绑定,国外有各种域名服务商,国内阿里云、腾讯云等。

若想部署到云服务器,首先需要购买一个云服务器,国外的可以直接使用,大陆的需要备案(头铁不嫌麻烦可用)但是稳定(而且学生有优惠非常便宜,但是非常非常麻烦)。
原文地址:为博客绑定自定义域名和部署到云服务器

绑定域名但不部署到自己的服务器

购买域名

国内域名购买后需要实名认证才可以进行解析。国外不需要。

以阿里云为例,也可以选择其他域名服务商(指国外),注意选择靠谱的商家。

阿里云域名注册网址:https://wanwang.aliyun.com/

mark

首先想好自己的域名名。域名指[name].com,开头的www.等是不算在这之内的,

如本人博客域名为wa2000.cn,www是在解析域名时添加的。如下

mark


查询自己想要的域名是否已经被注册,未被注册则看价格是否满意即可购买,短域名价格昂贵,.com略贵,.cn较便宜大概30/年左右,学生购买服务器+域名有优惠,详情百度阿里云/腾讯云 学生套餐 等。套餐内容貌似不同,但是购买有限制,如只能用大陆服务器、尾缀有要求等等。

mark

购买域名并实名认证后即可进行解析。

解析域名

以我的域名为例,不同商家解析时都差不多。点击解析

mark

点击添加记录。会出现如前图的添加设置。

mark

主机记录可理解为域名前缀,即用户输入什么样的网址访问到该解析目标。如果主机记录为www ,则用户需要输入www.[你的域名]才能访问到该解析目标。如果为@,则直接输入域名即可。如果不添加www ,则通过www+域名方式访问的用户将访问失败,@同理,其余的也同理。

mark

记录类型为解析目标的类型,如果想把该域名绑定到一个ip地址,则选A,如果目标为一个网址,则选CNAME。

这里有两种绑定方法,一种是选CNAME然后在记录值填写 [yourname].github.io ,另一种是选A,然后通过cmd命令行输入 ping [yourname].github.io 获取ip地址,记录值里填入ip地址。

mark

获取 [yourname].github.io 的ip地址,如图,ping通后会显示ip地址。

mark

线路选默认。

记录值根据选择的记录类型进行填写。TTL为缓存生效时间,默认600秒即可,即10分钟后生效。填写完毕后点击保存。可以为域名填写多个记录, 如图

mark

前两个是为github pages绑定时添加的记录,一个www、一个@,这样可以让用域名直接访问的和加了www访问的用户都能访问到自己的博客 (部署到服务器后就不再用了所以暂停了)。接下来两条A类型是将网站部署到自己的服务器时,把域名解析到了自己的服务器IP地址,这样可以通过www、或者直接输入域名的方式来访问自己的服务器。最后一条是绑定的七牛云,用来当做博客的图床。每条记录后面都有操作可以进行修改以及暂停和开启。

绑定到github pages

登陆到自己的github,进入网站绑定的仓库,进入设置

mark

往下找到GitHub Pages,在Custom domain填入刚刚购买的域名,点击save保存。勾选Enforce HTTPS则开启HTTPS安全协议。

mark

mark

然后到本地博客source文件夹下新建文件CNAME,输入内容为自己的域名,并将文件尾缀如.txt等删掉然后保存即可。(没有的话貌似每次将代码从本地推到github都会使域名访问404,因为每次推送都会覆盖原本的仓库代码。所以把CNAME文件放在source中,使每次推送都会建立一个CNAME)

至此,github pages的域名绑定完成了,稍等片刻即可尝试使用域名访问。

部署到自己的服务器(不再使用github pages)

不使用github pages,改为自己的服务器。将代码托管到gtihub,使用webhook实现github与服务器同步推送代码。这样既可以使用yourname.github.io访问到部署到github pages的自己的博客,同时也可以用域名访问到自己部署到云服务器的博客,且界面都相同。

购买服务器

服务器商千千万,自行挑选一个靠谱的。

注意:国内各服务商有学生优惠套餐,但是只能购买大陆服务器,且大陆服务器需要备案才能使用。但是便宜稳定。

进入服务商的购买页面,选择配置。

若是一键选择套餐购买,需要选择地区、选择服务器的配置、选择服务器镜像系统、服务器带宽(越大则服务器能承受的压力越大)、购买时长。

若是自定义配置,需要选择购买的计时方式、配置的详细选择,更多的系统选择以及自定义镜像、存储空间。

总结就是越强越贵,时间越长越贵。个人博客不需要非常好的配置,推荐系统选择linux

注意:大陆服务器需要至少购买3个月时长才可以进行备案。

mark

配置服务器

连接服务器

假如是国外服务器,则购买后可以直接进行部署了。如果是头铁选了国内,则需要先进行备案(大概20天左右。备案流程放到最后。)

我使用的宝塔控制面板,简单方便无脑。安装宝塔后,可以在控制面板进行操作来操作自己的服务器。

若服务器操作过程出现无法挽回的问题,可以在服务器控制台重装系统。

mark

首先下载putty、xhell等连接工具,我使用的是finalshell,用哪个都可以,原理都一样,用服务器商自带的登陆功能也可以。打开后界面如图。

mark

点击文件夹,新建一个连接,选择SSH连接

mark

名称自定义,主机为上一步的ip地址。填写完后点击确定。

(国外服务器可勾选智能加速,国内则不勾选)此时我使用的是美国服务器,所以勾选了海外加速。

mark

可以看到新建了一个服务器连接,ssr为刚刚自定义的名称,后面有ip地址和端口号,和服务器主机名。

mark

双击该连接,进入服务器,连接成功出现如图所示界面。

mark

如果出现该窗口

mark

点接受并保存。

安装宝塔面板

根据官方教程进行安装。

宝塔Linux面板安装教程

若安装完成不能使用,则需要放行端口:

腾讯云:https://www.bt.cn/bbs/thread-1229-1-1.html

阿里云:https://www.bt.cn/bbs/thread-2897-1-1.html

华为云:https://www.bt.cn/bbs/thread-3923-1-1.html

进入服务器,根据自身系统输入安装命令,命令失效则看官方教程,有备用命令

Centos安装命令:

yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh

Ubuntu/Deepin安装命令:

wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh

Debian安装命令:

wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && bash install.sh

Fedora安装命令:

wget -O install.sh http://download.bt.cn/install/install_6.0.sh && bash install.sh

以cenOS为例:

输入命令进行安装

mark

输入y,安装宝塔,然后稍等片刻

mark

如图安装完成,会显示控制面板的url以及用户名和密码

mark

Bt-Panel: http://149.28.38.80:8888/266c0002
username: 8hyxonhi
password: ea0cddd9

安装完成后,就可以关闭finalShell了,打开浏览器,输入该地址,并输入刚刚显示的用户名和密码,进入面板

mark

进入面板后,会出现如下提示,进行安装软件。可以根据需求进行安装,也可以直接点一键安装,推荐LNMP,且选择极速安装,编译安装太慢。

mark

绑定域名到服务器

宝塔面板安装完成后,在导航栏点击网站,选择添加站点。

mark

设置如下,在域名处填写自己的域名,可填写多个 (填写进的域名在解析完成后可以访问到该服务器),可以填写 yourname.github.io

注意:根目录统一放在wwwroot/下不用更改,但后面会自动生成与域名相同的文件夹。这个名称在后面实现代码同步时起关键作用,建议使用 [yourname].github.io省的出问题

FTP、数据库选择创建,密码会随机生成,用户名为域名,点击提交。

mark

生成站点后,点击网站名或者后面的设置,进入设置。

mark

添加域名

mark

可以添加多个域名,即通过添加的域名可以访问到该站点。假如你购买的域名为 yourname.com,则可以添加

其中abc为自定义的二级域名,想不想设置随意。设置了就需要在解析时填写对应的主机记录。

mark

点击添加后如下,这样用户可以通过以下域名访问到该服务器部署的网站,如果不想让github.io的地址也访问到该服务器,可以删除。

添加的域名需要解析到服务器才可以正常使用。

mark

添加完成后关闭设置即可。

最后到域名管理处。进行解析。解析步骤和解析域名一样。添加记录如下

  • 记录值:www和@各添加一次,
  • 记录类型:选A
  • 线路类型:默认
  • 记录值:你的服务器IP地址

结果如下(若有自定义二级域名等等,需要再添加上。)

mark

等待10分钟生效,即可通过域名访问该服务器。

通过webhook实现同步部署

虽然服务器是配置好了,但是宝塔并不支持代码托管,也就是说使用hexo d命令推送的代码并不能推到宝塔上来实现更新网站。于是使用webhook来实现与github代码同步。

原理:

mark

安装宝塔WebHook

在宝塔面板导航栏点击软件商店。搜索 webhook 点击安装。

mark

宝塔配置webhook

安装完成后,点击设置,(可以勾选首页显示。)

mark

点击添加,名称填 yourname.github.io,该名称会作为参数 $1传入脚本

执行脚本先随便填写一点内容,点击提交后再编辑脚本。

mark

添加完成后点击编辑,删除原来随意填写的内容,添加如下代码并修改。

如果创建站点时,根目录的文件夹名和hook名相同且都是[yourname].github.io,则只需要把gitPath的web删掉,将gitHttp改为自己的代码库git地址即可。

#!/bin/bash
echo ""
#输出当前时间
date --date='0 days ago' "+%Y-%m-%d %H:%M:%S"
echo "Start"
#判断宝塔WebHook参数是否存在
if [ ! -n "$1" ];
then 
          echo "param参数错误"
          echo "End"
          exit
fi
#git项目路径
gitPath="/www/wwwroot/$1"
#git 网址
gitHttp="你的代码库git地址"

echo "Web站点路径:$gitPath"

#判断项目路径是否存在
if [ -d "$gitPath" ]; then
        cd $gitPath
        #判断是否存在git目录
        if [ ! -d ".git" ]; then
                echo "在该目录下克隆 git"
                git clone $gitHttp gittemp
                mv gittemp/.git .
                rm -rf gittemp
        fi
        #拉取最新的项目文件
        git reset --hard origin/master
        git pull
        #设置目录权限
        chown -R www:www $gitPath
        echo "End"
        exit
else
        echo "该项目路径不存在"
        echo "End"
        exit
fi

gitHttp路径为github代码仓库的地址,需要到代码库中查看(带.git尾缀的地址,即hexo部署时配置 _config.yml时填写的地址。),点击复制键进行复制

mark

gitHttp="你的仓库git地址"

github配置hook

编辑完成后,点击查看密钥

mark

http://你的面板地址/hook?access_key=你的密钥&param=[yourname].github.io

更改该url,例:

  • 面板地址:149.28.38.80:8888
  • 密钥:vKYJGSF5wdqseY2yP3VymSPRMy19HZxouf0gU3pLQJfAbjwM
  • param=你的github.io地址

更改完成后,进入github的网站代码库的设置,导航栏选webhook,然后点击Add webhook

mark

填写内容

mark

填写好后点击Add webhook即可,至此完成webhook的配置。

最后通过git bash执行

hexo clean
hexo g
hexo d

即可完成本地博客的同步推送到github和云服务器。并可通过域名访问服务器上的内容,不再使用github.io域名且不再使用github pages。(可以当备用)

关于网站备案

到购买服务器/域名的服务商那里有详细的备案流程说明,这里仅记录个人备案遇到的坑。以腾讯云举例。

腾讯云备案流程

  1. 国家规定服务器需要购买至少3个月才能备案

    学生套餐优惠只能购买三次,一次最短购买一个月时长,最长为一年时长,本来抱着试试的心态只买了一个月,结果发现居然要至少3个月才能备案,于是只能再去用学生套餐来延长时长,本来三次机会,结果花了两次机会只买了一年一个月,如果确定想用大陆服务器并且想长时间使用的话,建议一次购买最长时长,10元/月算非常便宜了。

  2. 审核时间长

    首先需要先为域名进行实名认证,实名认证后备案需要申请幕布进行拍照(给你邮过去,免邮),等幕布到了以后按要求拍照并上传,填写关于网站的资料以及服务器的资料,最后提交。

    大概腾讯那边审核一两天,然后腾讯帮你提交到审核局审核个10天左右(最晚一个月,个人经历时间为10天左右),审核通过后会给你工信部备案号,但还要到全国互联网安全管理服务平台再提交一次备案,不过这个审核较快,一天就通过了。通过后会给你联网备案号。

    以百度为例mark上面的为工信部备案号,下面的为联网备案号。

  3. 关于在全国互联网安全管理服务平台备案

    注意:里面有一个为网站填写信息的,有个选择网站是否为交互类型,选择否,选是需要到当地公安局一趟进行当面审核。

    这里交互类型指的是淘宝、微博、论坛等等这种有用户可以注册、购买商品、评论交流等等,为了保证网站安全所以需要到公安局进行审核,并且填写大概7-8页厚的表格。

猜你喜欢

转载自www.cnblogs.com/luqwer/p/11328600.html