记一次更换系统博客迁移经历
最后更新时间:
文章总字数:
预计阅读时间:
记一次更换系统博客迁移经历
参考文章(主要流程,实际上因为配置环境等各种各样的问题也查了不少文章):https://zhuanlan.zhihu.com/p/205758058
挺简单的事还是搞了一个下午,记录一下遇到的问题和解决,下次换云服务器或者重装系统可以快一点完成博客的迁移。
首先在阿里云控制台点击更换系统,直接完成重装,这里我重装完是 ubuntu 22.04 。重装完系统不用换源,阿里帮你换好了。先加一个 sudo 特权用户,再进行软件的升级。
1 | sudo adduser newuser |
然后开始搭建服务器的环境,安装 git 和创建 git 用户并给权限(git 用户千万不要设置弱密码!!!!,后面用 rsa 密钥登录,不会让你输密码的)
1 | sudo apt install git |
创建 git 仓库并配置 git-hooks ,并在本地将 hexo 渲染的页面推过去
1 | root@VM-0-11-ubuntu:/home# su git |
这里要注意一点,这个网站根目录一定要自己先创建好,这个 post-receive 不会自动帮你创建,没有这个根目录远程拉了和没拉一样。
然后配置 rsa 密钥对免密码登录:由于服务器 ip 没变,重装了系统,以前记录的 hosts 失效了,导致 ssh 登录报错,按照提示的路径将原来记录的 ip 公钥删掉即可。本地计算机 ssh-keygen -t rsa
生成公钥和私钥 ,pub 后缀的是公钥,放到服务器上:
1 | git@VM-0-11-ubuntu:~$ mkdir ~/.ssh |
然后需要对 ssh 的默认设置进行更改:
1 | vim /etc/ssh/sshd_config |
就可以直接ssh -v git@serverip
免密码登录,如果还是不行,可以通过ssh -vvv git@serverip
输出详细信息,然后根据具体报错的信息来进行操作。
本地计算机上(就是运行 hexo 命令的计算机),首先修改一下hexo/_config.yml
中deploy
标签下repo
的路径,这决定了远程位置:
1 | deploy: |
使用 hexo clean && hexo g && hexo d
,拉完之后到服务器的网站根目录下,如果能看到网站的各种文件就是拉取成功了。
然后需要配置服务器上的 nginx ,上面这篇参考文章里面是直接命令行安装 nginx 的,安装了一遍之后我发现依然不能正常解析,80 端口只有 nginx 的默认页面,于是打算使用宝塔面板来安装,需要先将原先安装的 nginx 彻底删除:
1 | sudo rm -rf $(sudo find / -name nginx) |
用 apt purge 删,你会发现删完之后 nginx 依然在,而且 80 还是他的默认页面。
安装一个宝塔面板,并且修改默认的帐号密码,在宝塔面板里面安装 nginx ,安装完之后添加站点,根目录设置为刚刚拉取的网站的根目录,/home/git/hexo ,设置域名,并且找到当年在阿里云申请的免费 ssl 证书配置上:
1 | wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh |
这里已经是运行中了,就可以去访问一下域名,如果正常,就结束了,然后我这里显示 403 forbiden ,查看一下 nginx 日志(这里有个挺坑的地方,宝塔给你装的 nginx ,路径并不在默认的 nginx 路径,也就是说你在网上找到的几乎所有解决这类问题的文章,按着文章里的路径,你什么文件都找不到,只能用前面的办法,自己 find)
看日志可以发现,nginx 没有权限访问网站的根目录,这也是宝塔一个坑的地方,自动帮你装的 nginx ,启动的时候会以 www 用户来启动,而网站根目录是 git 的,当然没有权限访问。两个办法,网站根目录权限改成 777(试过了没用),修改 nginx 启动用户,修改成 git(别听网上的直接改成 root ,以 root 运行网站,渗透老哥连提权都不用了),修改启动用户需要找到配置文件,同样,需要 find 。
把第一行的用户从 www 改成 git 之后,在宝塔的页面重载 nginx ,再访问博客网址即可正常解析。
不知道为什么,ssh 断掉了之后 nginx 会自动暂停(过了一会突然访问不上网站),于是加一个停止之后马上自行开始:
1 | vim /lib/systemd/system/nginx.service |