树莓派宝塔部署hexo博客

Posted nooobme

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了树莓派宝塔部署hexo博客相关的知识,希望对你有一定的参考价值。

其余树莓派搭建文章

树莓派宝塔搭建NAS私有云盘nextcloud
树莓派宝塔搭建图床Chevereto
树莓派宝塔部署hexo博客

烧录系统

准备好树莓派,sd卡,和读卡器。

进入树莓派官网,下载软件。

下载后打开,就可以自行选择烧录系统,我选择烧录第一个树莓派32位系统。

登录树莓派

ssh连接

如果有显示器的话,可以忽略,只要连接网线或者wifi后记下私有IP地址即可。

如果没有显示器的话,先别开机,往sd卡的boot文件夹里面放入空白文件,文件命名为ssh

继续新建文件,命名为wpa_supplicant.conf,然后写入:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
	ssid="无线名称"
	psk="无线密码"
	key_mgmt=WPA-PSK
	priority=1 优先级,值大优先
}

然后开机,不管是通过连接网线还是wifi连上树莓派后,可以在路由器管理界面,或者dataplicity等软件,查看树莓派的私有IP地址。

然后,我们可以通过ssh pi@树莓派IP地址来连接,默认账户是pi,端口号是22,密码是respberry

简单而言,我们可以先通过内部地址来访问树莓派。

当然也可以内网穿透通过公网IP访问树莓派:ssh -p 外部端口号 pi@公网IP
具体步骤可以参考我的上一篇博客[电信光猫+路由器+树莓派]。

图形化显示

如果有显示器的话就忽视吧。
参考 该篇博客 ,内容非常详细介绍了如何使用VNC,Windows 远程桌面以及Terminal软件来图形化访问桌面系统。

安装宝塔

宝塔官网

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

安装完后会有以下提示:公网地址/安全入口,内网地址/安全入口,以及账户密码。

如果忘记,也可以通过bt14来查看,或者通过/etc/init.d/bt default来查看默认设置。

登上网站后,有两种模块LNMP、LAMP自行选择安装,我选择安装的第一种。

在面板设置里面,可以修改面板账户密码,面板端口,安全入口等等。

部署git和hexo

我是在本地端调试hexo博客,然后上传到树莓派的宝塔网站上,首先默认已经在本地调试好了hexo,知道如何hexo g,hexo d。

服务器(树莓派):

我们安装git:sudo apt install git


以下步骤可做可省略

  • 客户端:
    ssh-keygen
    cd ~/.ssh
    #回车
    cat id_rsa.pub
    
  • 服务器:
    复制id_rsa.pub的内容到服务器端的~/.ssh/authorized_keys文件中
    如果没有这个文件就touch一个
    如果文件中已经存在别的key,就另起一行复制进去
    

切换root权限:sudo su

建立存放hexo博客网址的文件夹:mkdir /home/hexo

建立git仓库文件夹:mkdir /home/git

进入该文件夹:cd /home/git

初始化Hexo的git仓库:git init --bare hexoblog.git

Hexo仓库新增hook:vi hexo-blog.git/hooks/post-receivevi命令也可以改成nano
写入内容:

rm -rf /home/hexo
git clone /home/git/hexoblog.git /home/hexo

给post-receive权限:chmod +x /home/git/hexoblog.git/hooks/post-receive

本地端

在本地端安装好hexo后,选好主题啥的,可以在本地端调试hexo chexo ghexo d

修改hexo根目录下的_config.yml文件,找到deploy这一行:

deploy:
  - type: git
    repo:
        pi: ssh://root@公网IP地址:外部端口号/home/git/hexoblog.git
        #或者
        #pi: ssh://root@内部IP地址:/home/git/hexoblog.git

内部IP地址的端口号一般为22,可不填。
然后,如果我是以公网IP地址登录的话,需要将连着公网IP的路由器来进行端口转发,内部端口号22内部IP地址,然后记录下设置的端口转发的外部端口号
注意是要root@来部署hexo,如果还没设置root权限,请看下面bug记录。

最后本地端hexo三连:hexo c&&hexo g&&hexo d就可以部署到树莓派上了。


如何设置内网穿透[电信光猫+路由器+树莓派],具体步骤可以参考我上一篇文章


BUG记录

我一开始按pi@IP地址:端口号/path/to/blog.git来部署博客到树莓派后出现了这个BUG:

fatal: sha1 file '<stdout>' write error: Broken pipe
error: remote unpack failed: unable to create temporary object directory

我一开始还以为是文件太大,然后我发现是pi权限问题,因为在git目录下不用root权限没法写入git文件夹(例如git init --bare hexoblog.git),因此想解决只能设置以root登录树莓派。

解决方法:

  • 编辑文件:sudo vim /etc/ssh/sshd_config
  • 找到并注释掉这行:#PermitRootLogin prohibit-password
  • 新建一行:PermitRootLogin yes
  • 重启ssh:sudo service ssh restart
  • 设置密码:sudo passwd root

然后root@公网IP地址:外部端口号/path/to/blog.git或者root@内部IP地址:端口号/home/git/hexoblog.git就可以通过root身份部署hexo deploy到树莓派了。

宝塔建站

添加站点:


域名中一定要填写树莓派IP地址:网站端口号,其次是写上域名。
然后就可以通过树莓派IP地址:网站端口号,或者通过域名来访问hexo网站了。

如果要填域名,需要购买域名,然后将域名解析到公网IP地址。

电信非常坑,把80和443端口给屏蔽了,所以即使填写了域名,也无法访问!需要我们去备案公网IP地址和域名,但是电信分配的公网IP,一重启路由就会变,感觉不值得,所以我打算只备案域名,不备案公网IP地址,然后在云解析域名搞个隐式url转发,指向ddns域名:外部端口号

ddns域名指向会跳变的公网IP地址,在路由器中转发树莓派IP地址网站端口号外部端口号,这样访问公网IP:外部端口号或者ddns域名:外部端口号就相当于访问本地hexo的网站树莓派IP地址:网站端口号,然后我们设置了隐式url就可以相对于通过隐式url来访问公网IP:外部端口号成功后再详细写点
(隐式url转发需要备案域名的原因)

然后如果是ECS服务器建站的话,只需要备案域名,将域名解析到ECS的公网IP就行,好处是公网IP基本不会变,不需要备案IP地址,也不需要设置什么ddns。

以上是关于树莓派宝塔部署hexo博客的主要内容,如果未能解决你的问题,请参考以下文章

使用树莓派打造一个私人NAS+博客(1)——网络篇

使用树莓派打造一个私人NAS+博客(2)——硬件篇

树莓派4B-4G版本安装centos7.9加阿里云yum源并安装宝塔面板

基于宝塔面板安装部署mochat

树莓派无法登陆SSH解决办法

宝塔面板部署django程序 测试部署两个网站