hexo上云记录(华为云)
本文最后更新于 2024年8月31日 上午
JAVA学不进去,焦虑无比,于是做点其他的,搞了个华为云的免费服务器Flexus,好抠,只给一个月,想着把github
page上的这个静态博客放到云上玩玩。开帖记录一下过程,也方便以后再次上云。需要:
- 服务器镜像:Ubuntu 20.04
- 已配置好的hexo博客
白嫖华为云
首先来到华为云学生服务器页面,每天9:30后能领个试用,注册华为账号,然后领取。
买完一路点默认设置,最后来到Flexus实例控制台。跟着“应用搭建指引”设置好密码,在“配置安全组”那里添加一个规则,添加一个TCP的80端口。
服务器配置
下载工具
通过cloudShell远程登录服务器,下载必要的工具:git、nginx、ssh
1 |
|
华为云好像初始有git和nginx,但也可以执行一下apt-get,不费事
安装ssh后,查看ssh服务是否启动:
1 |
|
创建用户
创建一个系统用户,这里以"blog"为例。
创建一个名为blog
的用户。接下来为blog
添加文件的写权限:在/etc/sudoers
中添加blog ALL=(ALL:ALL) ALL
,具体命令为:
1 |
|
然后向下翻,找到
如上图编辑,在root下面添加一行blog ALL=(ALL:ALL) ALL
。visudo
命令使用的是nano编辑器,使用Ctrl+X、y、Enter退出。
然后切换至blog
用户,回退至根路径,在/var/repo
下创建名为hexo_static
的裸仓库(仓库名可自定义)
1 |
|
创建完成后可进入/var/repo
查看,应该有branches、config、HEAD、hooks等
创建/var/www/hexo
目录,用于nginx托管,修改目录所有权和权限
1 |
|
配置nginx服务默认路径
如果/etc/nginx
下有sites-enabled
文件夹,则编辑其下的default
文件
如果没有,则编辑conf.d
文件夹下的default.conf
,添加root /var/www/hexo
,位置如下,再删掉location里的proxy的第一行proxy_pass http://127.0.0.1:9001
;,取消转发到9001端口。
因为华为云默认安装一个wordpress的应用镜像,用docker ps就能看见,如果放着不管,直接访问ip会看见wordpress而不是自己的博客。可以禁掉docker,也可以取消掉这里的转发。
如果有sites-enabled
文件夹,在default
中如下位置添加root /var/www/hexo
注意:nginx.conf里面得包含你写的default,写了就得include进去,如下:
然后重启nginx服务:
1 |
|
创建Git钩子
在之前的仓库的hooks文件夹下创建一个post-receive
钩子:
1 |
|
写入如下内容:
1 |
|
然后为该文件添加可执行权限:
1 |
|
拷贝密钥
回到根路径创建.ssh
目录,进入,创建authorized_keys
文件
1 |
|
找到本地的id_rsa.pub
文件,复制到这里,如果没权限可以进root再操作
部署hexo项目
编辑本地hexo的_config.yml
文件,修改两处
- url改为服务器的公网ip
- deploy的repo改为{用户名}@公网ip:/var/repo/hexo_static.git,branch改成实际的名字,main或者master
然后hexo g -d
上传,首次会要一个yes,然后输密码
上传后进入/var/www/hexo
下查看,可以看到静态文件已经全部上传,就是本地的public文件夹里的内容。
r然后在浏览器输入ip就可以访问啦!
后续问题
第一次上传成功,第二次上传出现
1 |
|
通常是由于远程仓库中的分支或引用被锁定、权限问题,或者由于在远程仓库中有一些与本地仓库冲突的提交。但是这是个人博客,所以不会出现分支冲突,那就是权限问题,无脑加一轮权限即可简单解决:
1 |
|