本文最后更新于:2022年4月20日 上午
在云服务器上部署hexo博客
hexo这类静态博客可以在github上免费直接部署,而且不用考虑高防、负载均衡等问题;但它的域名必须为用户名.github.io
,这使得一些名字过长,而且github的大陆访问速度一直不稳定。
- 其实根据我的实际体验,GitHub每天凌晨两点以后访问特别稳,页面秒开。
- GitHub也可以自定义域名,选中仓库点击设置,拉到下面就能看到。但是总归是要一个自己的域名。
对于域名过长的问题,有些小伙伴可能想到了去云服务商那里购买一个自己的域名。在这个时候他就会发现一个有趣的问题:没有剩余时长3个月及以上的云服务器,ICP是不发备案号的——也就是说这个域名可以买,但用不了。
对于此,我在阿里云购买了一个域名和一个云服务器。服务器闲着也是闲着,下面记录一下以阿里云为例如何在云服务器上部署hexo博客。服务器配置已经写成了一键配置脚本。
1.一些准备
1.1.域名
要购买域名必须首先在实名填写一个“信息模版”,需要上传身份证正反面无遮挡高清照片。1-2天后审核通过。
审核通过后才能购买域名。搜索你喜欢的二级域名,会显示给你搭配不同顶级域名的价格,比如good.com
会比good.xyz
贵。点击购买按钮时会跳出来一些可选服务,土豪可以购买全程代办,穷学生可以什么都不选。
这里面有一个“云解析DNS”非常让人困惑,让人不清楚是不是买了域名必须要买这个才能正常使用。实际上那个服务是给你返回你查询这个域名的IP,而不是把你的域名映射到指定的IP上——也就是说和我们搭博客没啥关系。其实在阿里云买域名本身就附带了解析服务。
刚刚购买完域名会显示正在审核,其实此时已经可以做域名到指定IP的映射。2-3小时后审核通过,但此时还是只能做域名到指定IP的映射。如果你尝试使用其他几种映射,比如重定向到另一个域名,就会提示你:没备案,不行。
域名购买后2-3天才会同步给工信部系统,在此之前是不能ICP备案的。
1.2.云服务器
如果是首次购买阿里云服务器,会有99一年的优惠活动,请自行探索。如果已经不是第一次购买——静态博客不需要什么性能,挑最便宜的买就行。首先选地区,推荐上海,网站备案省事(买偏远的服务器会更便宜)。然后选共享型机器(性能突发型),CPU和内存都选最低就行。时长至少选3个月。网络按最低选就行,是固定带宽还是按量付费按需选择即可。
我个人习惯用ubuntu18.04版本。阿里云的服务器直接给root用户,这很好。设置一下密码,主机名。安全策略里面打开80和443端口。
1.3.ICP备案
域名的控制台页面上方应该有一个ICP备案的按钮,点击进入。填写信息后点击“信息校验”。需要通过阿里云手机客户端拍照身份证以及人脸核验。核验通过后可以提交给阿里云初审了。
两三个小时后就会接到阿里云的电话通知阿里云初审的一些不通过的点,可以让客服帮你改也可以你自己在阿里云网站或手机上改。改好后自动提交管局审核。几小时后收到短信验证码提醒,点击短信中的链接,填写验证码和手机号、身份证号,即可通过手机核验。然后静候管局审批。
一般人“网站名称”这一项第一次填几乎不会通过的🤪。不能有身份信息(姓名),不能有行业信息(计算机),不能有平台暗示(博客、XX学校)。总之,别太认真,反正填什么不影响你的网站内容,这个是给管局看的。据说“[adj.]的[n.]”这样就可以通过了,比如“好看的桌子”。还有人曾经写“奇变偶不变”通过了。
一周左右,短信体提醒备案通过。在网站下面加上备案号,备案完成。
1.4.本机hexo环境
参考我以前的文章 hexo博客fluid主题美化。
| xcode-select --install sudo npm install hexo-cli hexo-server hexo-deployer-git -g hexo init ~/blog npm install hexo-deployer-git --save
|
2.配置服务器
大体上分为安装软件、设置用户、设置git、配置nginx四个步骤。一键配置脚本如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| #!/bin/bash echo -e "\033[31mstart apt set\033[0m" && apt-get update && apt-get upgrade -y && apt-get install -y git nginx && echo -e "\033[31mend apt set\033[0m\n" &&
echo -e "\033[31mstart user set\033[0m" && useradd -m git -d /home/git -g root -s /usr/bin/git-shell && echo "git:123456"|chpasswd && echo -e "\033[31mend user set\033[0m\n" &&
echo -e "\033[31mstart git set\033[0m" && mkdir -p /home/git/Blog/repo /home/git/Blog/hexo /home/git/git-shell-commands && cd /home/git/Blog/repo && git init --bare blog.git && echo -e "#\!/bin/bash\ngit --work-tree=/home/git/Blog/hexo --git-dir=/home/git/Blog/repo/blog.git checkout -f" > /home/git/Blog/repo/blog.git/hooks/post-update && chown -R /home/git && git chmod -R 755 /home/git && chmod -R 777 /home/git/Blog && chmod 600 /home/git/git-shell-commands && echo -e "\033[31mend git set\033[0m\n" &&
echo -e "\033[31mstart nginx set\033[0m" && mv /etc/nginx/sites-available/default /etc/nginx/sites-available/old_default && echo -e "server {\n listen 80 default_server;\n server_name yourwebsite.com;\n root /home/git/Blog/hexo;\n}" > /etc/nginx/conf.d/blog.conf && echo -e "server {\n root /var/www/html;\n index index.html index.htm index.nginx-debian.html;\n server_name _;\n location / {\n try_files \$uri \$uri/ =404;\n }\n}" > /etc/nginx/sites-available/default && nginx -t && nginx -s reload && echo -e "\033[31mend nginx set\033[0m\nAll sets are finished!"
|
下面对每一条命令具体解释。
2.1.安装软件
1 2 3
| apt-get update apt-get upgrade -y apt-get install -y git nginx
|
2.2.设置用户
1 2 3 4 5
| useradd -m git -d /home/git -g root -s /usr/bin/git-shell
echo "git:123456"|chpasswd
|
2.3.设置git
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| mkdir -p /home/git/Blog/repo /home/git/Blog/hexo /home/git/git-shell-commands cd /home/git/Blog/repo
git init --bare blog.git
echo -e "#\!/bin/bash\ngit --work-tree=/home/git/Blog/hexo --git-dir=/home/git/Blog/repo/blog.git checkout -f" > /home/git/Blog/repo/blog.git/hooks/post-update
chown -R /home/git
chmod -R 755 /home/git
chmod -R 777 /home/git/Blog
chmod 600 /home/git/git-shell-commands
|
2.4.配置nginx
1 2 3 4 5 6 7 8 9 10 11
| mv /etc/nginx/sites-available/default /etc/nginx/sites-available/old_default
echo -e "server {\n listen 80 default_server;\n server_name yourwebsite.com;\n root /home/git/Blog/hexo;\n}" > /etc/nginx/conf.d/blog.conf
echo -e "server {\n root /var/www/html;\n index index.html index.htm index.nginx-debian.html;\n server_name _;\n location / {\n try_files \$uri \$uri/ =404;\n }\n}" > /etc/nginx/sites-available/default
nginx -t && nginx -s reload
|
3.本地配置
修改hexo根目录下_config.yml
文件,设置git目标:
1 2 3 4
| deploy: type: git repo: git@[你主机的IP地址或者域名]:/home/git/Blog/repo/blog.git branch: master
|
此时应该已经可以使用了,在hexo根目录下使用hexo clean && hexo g -d
重新编译博客并发布。浏览器输入域名可以访问。
4.一些后话