hexo博客搭建(三):部署云端Linux服务器,搭建宝塔Linux面板,实现远程或域名访问。
本文主要讲解如何搭建hexo博客网站,并直接部署在github上,实现通过
xxx.github.io
来访问博客,同时针对云服务器的用户,可以把Hexo博客同步部署到服务器上,通过宝塔Linux面板架设网站,并实现域名解析和绑定。针对没有云服务器的用户,也给出了直接部署在个人的Linux终端(比如:树莓派或者其他Linux开发板,软路由,NAS等)的方案和思路,并给出通过内网穿透方法实现通过自主域名访问博客的方法。最终实现可以通过xxx.github.io
和自主域名访问博客网页。 这里不对Hexo博客的特性做说明,详细的Hexo相关的内容,可以参考Hexo官方网站:https://hexo.io/zh-cn/
这里用宝塔面板主要因为:一方面宝塔面板免去了Nginx的相关配置,可以直接用可视化操作来部署网页;另外一方面,一台Linux服务器可以同属部署多个网站,可以统一用宝塔面板统一管理。也方便该服务器不仅可以用来部署网站,还可以同时作为其他左右使用(比如可以用来做远程代码调试,内网穿透服务等)。
本文主要分四个章节来讲解:
二:如何把Hexo搭建的博客同步到github的网页托管服务上,实现以
xxx.github.io
(其中xxx
为你的github用户名)访问;四:如何把博客部署到本地的Linux服务器(树莓派或者其他Linux开发板,软路由,NAS等)上,通过内网穿透服务和自主域名绑定实现实现自主域名的访问。
一般情况下,自主域名需要做域名解析,所以,它只能访问你的云服务器或者你本地的Linux服务器,二选一即可,把hexo博客部署在Linux服务器上的操作在第三章节的前面两个部分。
三、部署Linux服务器,搭建宝塔Linux面板,实现远程或域名访问。
可能涉及的工具和软件:
- 一台已经安装Linux的云服务器,且有公网IP地址:这里使用的是阿里云ECS云服务器,安装Ubuntu 20.04
- ssh终端工具登录软件(Xshell,putty或者MobaXterm等都可以)
- Xshell: https://www.xshell.com/zh/free-for-home-school/
- putty:https://www.putty.org/
- MobaXterm: https://mobaxterm.mobatek.net/
- 宝塔Linux面板:https://www.bt.cn
- 已经备案的域名(如果云服务器是在国内的话),没有也可以直接用
IP:端口
来访问(因为国内云服务器默认不允许80端口直接访问)。- 无服务静态托管云平台Vercel: https://vercel.com/
1、 Linux系统部署git服务器
如果是新的云服务器系统,一般情况下我们首先需要到云服务后台,设置安全组,对常用端口放行,主要有:SSH连接端口:22;FTP端口:20、21、39000-40000;网站访问端口:80、443;phpmyadmin访问端口:888;如果还有其他诉求,也需要放行对应端口。如果是本地的Linux系统,则不需要管这些。
然后用ssh终端工具登录服务器。一般情况下国内的云服务器安装的Linux系统都会默认已经把软件源修改到国内了,如果是,这一步不需要操作。如果你的系统不是云服务器,或者源并不是国内的,可以用下面方法对软件源进行备份,并且替换到国内的软件源(本文替换的是阿里云的镜像,你也可以替换成其他的镜像)。
1 | sudo cp /etc/apt/sources.list /etc/apt/sources.list.org |
上面的语句是备份软件源的文件,之后便可以编辑修改/etc/apt/sources.list
中的软件源地址了,即把里面与ubuntu.com
的内容替换成阿里云的源地址即可。
一般情况下,默认的源地址ubuntu的官方源:
archive 源(针对X86_64架构) :http://archive.ubuntu.com/ubuntu/
ports 源(针对arm,PowerPC等架构):http://ports.ubuntu.com/ubuntu-ports/
或者ubuntu中国官方源
archive 源(针对X86_64架构) :http://cn.archive.ubuntu.com/ubuntu/
ports 源(针对arm,PowerPC等架构):http://cn.ports.ubuntu.com/ubuntu-ports/
把对应的内容替换成阿里云镜像即可:
archive 源(针对X86_64架构) :https://mirrors.aliyun.com/ubuntu/
ports 源(针对arm,PowerPC等架构):https://mirrors.aliyun.com/ubuntu-ports/
其他内容可以不变,这里给出一个快速替换网址的指令:
1 | sudo sed -i -e 's/ports.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list |
这句话的意思是把/etc/apt/sources.list
文件中所有的ports.ubuntu.com
字符,全部替换为mirrors.aliyun.com
,从而实现软件源的替换。
另外关于Ubuntu 国内软件源介绍可以参考这篇博客: https://www.cnblogs.com/Brendon-Tan/p/13236042.html
- 在终端中输入
sudo apt update
和sudo apt upgrade
来同步和更新系统相关软件。
1 | sudo apt update |
- 可以通过
git --version
来查看系统是否安装了git,如果没有,输入sudo apt install git
安装git
1 | sudo apt install git |
- 确保安装了git之后,我们可以为git服务器创建一个单独的账户。
1 | sudo adduser git |
其中需要输入2次密码之后,一起其他信息,可以直接输入回车保持默认值。最后输入Y确认创建用户。创建完成之后,可以输入ls /home
看是否已经存在一个名为git
的文件夹,这个为该用户的默认用户文件夹,如果有,则表示用户创建成功。
- 接下来我们针对git账户配置ssh用户公钥,通过如下代码在
/home/git
目录下创建.ssh
文件夹,并在里面创建authorized_keys
文件:
1 | mkdir /home/git/.ssh |
- 把之前在PC电脑上创建的
id_rsa.pub
文件内容复制到authorized_keys
文件中,具体操作,先用下面指令打开文件,按字母i
插入内容,把光标移到文件头,右击鼠标把内容粘贴到文件中,之后按ESC
按键,输入:wq
保存并退出
1 | vim /home/git/.ssh/authorized_keys |
- 修改该文件夹和文件的权限,确保git用户有读写目录的权限
1 | chmod 775 /home/git/.ssh |
- 在
/home/git
目录下创建一个git仓库,名称为blog.git
,并把其拥有者定义为git用户。
1 | sudo -u git git init --bare /home/git/blog.git |
- 创建目录
/www/wwwroot/blog
目录,用来架设网站服务
1 | mkdir -p /www/wwwroot/blog |
-p
的意思,以递归的形式来创建文件夹,如果时递归的形式删除文件夹,则用rm -rf dir_path
- 确保git用户有操作该文件夹的权限,如下操作:
1 | sudo chown -R git:git /www/wwwroot/blog |
- 创建一个git钩子文件,当接收到用户推送过来的文件修改时,把它推送到系统
/www/wwwroot/blog
目录下,以方便后面用来架设网站。
1 | vim /home/git/blog.git/hooks/post-receive |
用上面的指令打开文件,按字母i
插入内容,把光标移到文件头,右击鼠标把内容粘贴到文件中,之后按ESC
按键,输入:wq
保存并退出:
1 |
|
然后给该文件设置可执行权限
1 | chmod +x /home/git/blog.git/hooks/post-receive |
- 输入
sudo reboot
重启系统
1 | sudo reboot |
- 等待重启完毕之后,我们再次修改PC端hexo博客根目录下的
_config.yml
文件,这里只需要修改\# Deployment
部分内容即可,我们给hexo添加一个git服务器到我们自己的Linux服务器上(注意其中的xxx.xxx.xxx.xxx为你自己服务器的IP地址):
1 | # Deployment |
- 我们在PC端的终端中输入
hexo g
来重新生成静态网页, 然后通过hexo d
来把生成的网页同时部署到github和我们自己的Linux服务器上,
1 | hexo g |
如果中间操作有问题,直接用hexo d
部署,可能会导致由于没有文件变化,导致并没有进行重新部署,导致没有被正确响应,可以尝试先用hexo cl
清除以下缓存,然后再用hexo g
重新生成静态网页,再hexo d
进行部署,便会把所有的文件都会进行重新部署。
- 此时,我们可以通过
ls /www/wwwroot/blog/
来查看代码是否被正确的复制到该目录下。如果该目录下有index.html
等文件,就证明代码已经被正确的复制, 终端运行效果如下(文件内容根据博客网页情况会略有不同)。
1 | git@seny:~/blog.git$ ls /www/wwwroot/blog/ |
2、 安装和配置宝塔Linux面板
- 先输入
su
,输入管理员密码,以root
用户登录,以确保能够获取到系统足够的权限
1 | sudo root |
- 根据系统不同,按照宝塔安装教程安装宝塔Linux面板,本人是ubuntu系统,所以再终端中输入:
1 | wget -O install.sh https://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh ed8484bec |
等待面板安装完成,安装可能会提示需要输入y
回车确认,安装完成后会给出如下信息:
根据生成的内网面板地址和外网面板地址情况,再浏览器访问宝塔面板。
- 一般情况下,如果是云服务器,我们首先需要再云服务的安全组里面,放行把他面板的端口信息,以确保我们可以正常访问宝塔面板。然后通过外网面板地址进行访问。
- 如果是本地的Linux系统,我们直接通过内网面板地址进行访问即可。
如果提示”您的连接不是私密连接“,直接点击”高级“,选择继续前往即可。然后输入安装完成之后提供的
username
和password
作为用户名和密码进行登录,登录之后,阅读”用户协议“,阅读完成之后,勾选<我已阅读并同意”《用户协议》“>,点击<进入面板>
,进入宝塔面板界面。进入之后,会要求你绑定宝塔账号,目前的宝塔面板,必须注册一个账号,用注册的账号进行登录,登录后界面如下,会给出一个建站需要的软件包安装推荐,因为我们本身是静态网站,所以理论上我们只需要安装
Nginx
软件即可满足要求,所以理论上我们选择LNMP
或者JAVA
都包含了Nginx
,或者我们关闭它,再手动安装Nginx
也是可以的。这里我们直接选择了推荐的LNMP
,等待它安装完毕。
软件安装完毕之后,我们就可以关闭消息盒子了(也可以关闭等待安装),到这里,宝塔面板就基本安装好了,这里我们对宝塔Linux面板做简单的配置,点击左侧的<面板设置>,既可设置相关信息,主要可能有(其他的可以自行配置):
修改登录的用户名和密码,以确保安全。
宝塔面板的端口号,以防止忘记宝塔面板的端口号,注意,如果修改了端口号,需要开放对应的端口信息,通过如下信息,否则可能导致无法访问宝塔面板(一般不建议采用8888,因为用户很容易猜到):
1
sudo iptables -I INPUT -p tcp --dport 8888 -j ACCEPT
云服务器除要在系统中开放对应端口之外,还需要再安全组中开启对应的端口号
安全入口
点击左侧<网站>选项,选择默认的
(或者皆可),点击<添加站点>,按照如图填写:
这里对填入的信息做简单介绍:
- 域名:我们只是测试hexo博客的访问情况,还没有做域名解析和绑定域名情况,在域名栏中,我们可以输入服务器的IP地址,或者IP:端口号的形式(注意:端口号必须开放访问)
- 备注:给网站取一个名字,方便我们记住这个网站是干什么的
- 根目录:就是我们前面部署的存放网站的目录
/www/wwwroot/blog
- ftp,数据库: 静态网站不需要
- PHP版本: 没有用到,选择
<纯静态>
即可- 网站分类: 可以设置,或者默认
- 此时我们在浏览器输入
服务器IP
或者服务器IP:端口号
来访问(有些云服务器,再国内,默认不开放80端口,必须用备案的域名访问。可能就必须用服务器IP:端口号
来实现远程访问了),下面是采用开放11000端口之后,用服务器IP:11000
访问的接结果:
理论上我们可以再任何地点用云服务器的
服务器IP:11000
来访问该博客。
3、 域名解析和宝塔面板部署网站
前面已经讲解网页的部署和安装,如果我们有备案的域名,我们可以把备案的域名与服务器进行绑定,做好域名解析,便可以实现通过网址访问博客。
- 域名备案,可以再购买域名的网站查看到,比如,这是再阿里云备案的域名情况示意图:
- 我们再域名控制台下,可以对域名进行域名解析:如下图:
这里对域名中的几个关键词做说明:
- 记录类型: A: 标志一个IPV4地址;AAA:标志一个IPV6地址;CHANE:将域名指向另外一个域名;其他的具体自己查询
- 主机记录:www:表示域名前面加www.来访问;@:表示直接用域名访问;*表示泛解析;其他字母:表示该字母.开头的域名访问,比如:如果域名是senysunny.com。解析主机记录为blog。表示用blog.senysunny.com访问。
- 记录值:一般为IP地址或者另一个域名。
- 做好域名解析之后,我们把对应域名的解析到对应的服务器ip,一般解析之后差不多10分钟左右生效。
- 此时我们再进入宝塔面板,打开左侧
<网站>
选项,可以看到我们建立的网站,点击设置,把我们已经做过域名解析的域名填写到域名管理中,点击<添加>
按钮。
此时,我们就可以用我们已经备案的域名来访问我们的博客了。
这里需要提醒的是:中国的域名备案后,一般要求把备案号填写再网页的尾部位置,并链接到”ICP/IP地址/域名信息备案管理系统“网址: https://beian.miit.gov.cn。当然,如果你的云服务器本身不在大陆境内,则无需考虑备案事宜,直接做域名解析就可以了。
到这里,hexo博客的建立和部署就已经完成了。我们可以发现博客的创建是比较简单的,都是一些基本的操作,hexo博客服务也提供了非常详细的文档。但是一个完整的有自己域名的博客要上线,还需要部署到自己的云服务,以及域名的解析和备案等操作。这些是需要一定的费用和操作的。实际上,我们也有很多其他选择,这里做一个简单的介绍和说明:
- Vercel:它是一个用于静态站点和无服务器函数的云平台,可以用来部署静态网站项目,并且可以直接与github的网页托管绑定,并且可以与自己注册的域名做域名解析,实现域名访问网站,且服务器本身不在国内,也避免了域名备案的麻烦。
- 现在很多人会选择把博客部署在本地(比如树莓派等开发板,软路由,NAS)上,在通过各种内网穿透服务,实现外网访问,以及域名绑定的工作。如果内网穿透服务器不在大陆的话,也不需要域名备案。建议购买域名的话还是备案使用更佳。
- 这里会在下一个章节给出一个把hexo博客部署在本地的Linux服务器(Linux开发板)的解决方案,这里采用了《Nanopi R6S》开发板运行Ubuntu系统作为博客服务器,然后通过内网传统实现博客的访问和使用.