背景:我的博客是部署在github国外和coding国内的。自2021年12月30日,coding正式停止了静态网站托管服务,因此不得不换个国内的站点。
有尝试过Vercel,确实好用,但是新版Vercel和老的github博客无法兼容,导致连接老github博客仓库报404,至今不知道什么问题,如果有知道的可以评论区告诉我,不甚感激!
目前只能通过Vercel连接第三方仓库https,然后输入github老仓库的https地址,就可以正常访问了,但这有个问题:Vercel会在github新建一个仓库托管你的博客,我们不得不将博客部署在Vercel新仓库中,实现每次部署Vercel都会自动更新最新的页面。这就导致我们被迫迁移了新仓库,这会让我们的valine评论和卜算子访客量都清零了。
于是一不做二不休,我干脆弄个云服务器,将博客部署到云服务器上一步到位。于是,就有了下面的迁移云服务器。也让我学到了怎么购买云服务器和申请证书,配置nginx的https的方式。
精彩抢先看
本篇包含以下干货
- 阿里云购买云服务器(试用免费版)
- 云服务器的使用
- Hexo迁移云服务器
- 阿里云申请ssl证书
正片开始
阿里云购买云服务器
其实云服务器无所谓哪个华为云、腾讯云还是阿里云,这里我域名是提前在阿里云买的,于是也在阿里云买了云服务器,当然为了练习先领用了个免费的服务器1个月(白嫖使我快乐~hhh)
- 阿里云ECS试用中心
- 下方领取试用机型,我领取的是ECS共享型n4,1个月
- 操作系统选择熟悉的centos7.6,带宽选择最高的5Mbps
- 购买后进入控制台
云服务器的使用
- 点击左侧,选择
云服务器ECS
- 点击实例,也就是你的云服务器
- 初次进去后可能会没有实例,这是因为你没有选择区域
- 点击上方的区域,选择你云服务器所在的区域。就可以看到你的机器和公网IP
点击管理,进入云服务的管理界面
有3处需要配置
重置实例密码,就是你的服务器的root密码,要求有大小写、数字、符号
进入安全组,增加80和443的入口端口,按照现有的端口配置配就行(阿里云是由安全组限制的,就像操作系统的防火墙,因此我们需要打开80和443端口,为后续Nginx做准备)。
这里如果没有设置安全组443,在后续的Nginx配置https时,会访问不了
远程连接,选择VNC连接方式,设置VNC密码,要求有大小写、数字,必须为6位
连接,使用moba或者xshell等远程连接工具,连接公网IP,输入密码连接即可。
Hexo迁移云服务器
- 安装nginx
yum install nginx 安装nginx
systemctl start nginx 开启nginx服务
systemctl enable nginx 跟随系统启动
用公网IP访问,如果显示nginx或是centos的界面的话就是没问题的
- 新建存放博客的目录
cd /home
mkdir www
cd www
mkdir website
- 安装git
//安装Git
yum install git
- 新建用户并修改权限
adduser git
chmod 740 /etc/sudoers
vim /etc/sudoers
保存退出
修改权限
chmod 400 /etc/sudoers
创建公钥
sudo passwd git //设置git密码 su git //切换到git用户 cd ~ //切换目录 mkdir .ssh //新建.ssh文件夹 cd .ssh //进入文件夹 vim authorized_keys //创建文件 将主机windows下的ssh公钥内容粘贴进去,位置在C:\Users\用户\.ssh\id_rsa.pub 保存退出 chmod 600 ~/.ssh/authorized_keys chmod 700 ~/.ssh
测试
使用主机windows,以管理员的身份进入cmd命令行
ssh -v git@你的公网IP
期间会让你输入yes
如果提示 Welcome ……就代表不需要密码就可以登录了,成功了
创建git仓库(钩子)
cd ~ git init --bare blog.git vi ~/blog.git/hooks/post-receive
输入
git --work-tree=/home/www/website --git-dir=/home/git/blog.git checkout -f
保存退出
修改权限
chmod +x ~/blog.git/hooks/post-receive
部署
修改hexo的配置文件_config.yml
deploy: type: git repo: git@你的服务器公网IP:/home/git/blog.git branch: master message:
问题:出现–ssh:connect to host centos-py port 22: Connection refused
解决:
检查配置文件有没有配置对,我这里repo多了个”:“
部署
Hexo clean Hexo g Hexo deploy
修改nginx配置文件
cd /etc/nginx/ vim nginx.conf
server { listen 80; #端口号 server_name localhost; #公网ip location / { #访问路径配置 root /home/www/website; #目录 index index.html index.htm; #默认首页 }
nginx -s reload 重启nginx
访问
这时通过ip访问即可
问题:访问时出现nginx403 forbiden
原因:因为文件夹权限不足,导致git上传文件没有正确上传。
解决方法:
cd home chmod 777 www chmod 777 website/
申请ssl证书与配置https
背景:我们已经迁移了博客,但是没有配置域名,如果需要域名访问云服务器,两种方式,
- http,这种方式国内服务器需要备案,备案又需要服务器有效期至少3个月,我是免费1个月试用,因此没有采取这种方式
- https,这种方式需要申请ssl证书,配置即可,我们采取这一种
2021年后,ssl证书购买的步骤分为两步,1.购买资源包,相当于个卡包,2.购买证书,相当于卡
阿里云购买证书
-
看第二步:配置nginx
腾讯云购买证书