原文地址: https://blog.gmcj0816.top/posts/47c1249e/

一. 前言

其实将博客放到自己服务器上是半好半坏的

好处:
1.不用担心别的静态部署平台有什么变化,包括唧唧了,或者涨价了;
2.自己的其他东西也可以放到自己的服务器,比如自己开发的联机游戏;
3.没事自己捣鼓捣鼓,对个人的技术成长和作品展示都是有好处的,也是非常有意思的事情
坏处:
1.国内需要ICP备案和公安备案【香港澳门等除外】;
2.可能需要一些技术能力,比如反向代理,linux知识;

腾讯云

马上年底了,腾讯云也推出了一些优惠活动,这个基本上新老用户都有比较合适的,而且腾讯云肯定在这方面做的比较好的了,而且你后面的ICP备案,腾讯这边是有幕布的

百度智能云

百度智能云虽然是后来才有的,但是无论是服务态度上还是稳定性上都挺不错的【本博主的就在这】

阿文云计算-超低价云服务器! (vpsaw.cn)

这一家也是可以的,最最最重要的是这家服务器不用备案,相关手续和证件比较全面,跑路的可能较低,价格方面也是可以的

二. 服务器配置

2.1 安装常用工具

这里主要的含义就不过多说了,基本都是常用到的

yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel

2.2 安装git

这一步可能有的在实例的时候就安装了git,大家如果不能保证自己的服务器是否安装了git,可以通过git - -version

git --version

没有的话,安装命令如下

yum install -y git

2.3 创建指定的上传用户名和密码

创建后上传hexo的git指定用户,这里以codertoro为例(这个用户名可以自定义,但是要保证后面的需要用户名的地方需要改成自己自定义的用户名即可)

useradd codertoro
passwd codertoro

需要注意的便是在设置密码时,一般玩过虚拟机的都知道,主要是没玩过的,要注意设置密码时是没有回显的

2.4 编辑权限文件

赋予coderotro用户相关权限

需要注意,//后面的别复制,内个是给大家做的解释

chmod 740 /etc/sudoers   # 设置权限  
vim /etc/sudoers # 编辑/etc/sudoers

使用 :set nu 显示行号,找到100行左右,添加如下信息

root ALL=(ALL)  ALL  
#主要添加这句话(这里codertoro是你刚才创建的用户名)
codertoro ALL=(ALL) ALL

直接:wq!,进行保存,保存后再次修改权限。因为 sudoers是只读文件,所有要使用 !进行保存,否则会失败。

将/etc/sudoers 修改成只读类型【为了保证服务器的安全,这个一定要做,千万不要懒哦】

chmod 600 /etc/sudoers 
//改回权限

2.5 创建hexo文件夹及赋予文件夹权限

需要注意,//后面的别复制,内个是给大家做的解释

#这个也是自定义的
mkdir /home/hexo
//授予权限
chown codertoro:codertoro -R /home/hexo

2.6 安装Nginx

这里基本没啥好说的,直接运行就可以,然后看到最后一行显示Complete就说明完事了

yum install -y nginx

这个时候我们可以通过以下命令,启动一下,看看效果,如果没有报错的话就说明启动完事了

systemctl start nginx.service

2.7 编辑Nginx文件

vim /etc/nginx/nginx.conf

如果后面用https,直接复制我这套就ok了

server{  
listen 80;
server_name codertoro.top;
rewrite ^(.*)$ https://$host$1 permanent; # http转https
}
server{
listen 443 ssl;
root /home/hexo;
server_name codert.top; # 请替换为你的域名
client_max_body_size 40m; # 请求体上限
# ssl的一些配置
ssl_certificate "/home/ssl/hexo_ssl/codertoro.top.crt"; # 请务必替换成你的ssl证书路径
ssl_certificate_key "/home/ssl/hexo_ssl/codertoro.top.key"; # 请务必替换成你的ssl证书路径
ssl_protocols TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;

error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
}

保存退出后,重启服务器,

修改完配置以后,需要重启一下Nginx服务。

注:这配置正确的话输入完这句话没有任何输出和提示,有提示很有可能配置错误,比如证书文

件没上传,证书文件名错误等

systemctl reload nginx.service

2.8 建立git仓库

需要注意,//后面的别复制

su root   //如果现在就是root用户下可以不用这一句  
cd /home/codertoro
git init --bare blog.git //创建Git仓库
chown codertoro:codertoro -R blog.git //授予Git仓库权限

2.9 编辑post-receive

进入如下目录

cd /home/codertoro/blog.git/hooks/

需要注意,//后面的别复制

vim post-receive   //这一句话千万别错了哦

把下面的内容拷贝进去并wq!保存,特别注意修改路径

#!/bin/sh  
git --work-tree=/home/hexo --git-dir=/home/codertoro/blog.git checkout -f

再次修改权限

chmod +x post-receive

开启防火墙

systemctl start firewalld.service

开放80端口,如果https需要开放443端口

firewall-cmd --permanent --zone=public --add-port=80/tcp  
firewall-cmd --permanent --zone=public --add-port=443/tcp
firewall-cmd --reload

到这基本的工作已经完事了

三. 本地安装和配置Hexo(本文重点不在这里)

这里需要git和node,这个教程就比较多了,在这里就不进行赘述了

3.1 安装Hexo

这篇文章先以最基本的hexo为准,后面会给大家更新如何魔改

npm install -g hexo-cli

3.2 初始化hexo

这里myblog可以去掉,加myblog只不过是为了使所生成的文件全都放到myblog文件夹中

hexo init myblog   
cd ./myblog
npm install  
npm install hexo-server --save
npm install --save hexo-deployer-git

目前基本的hexo已经ok了,本地运行一下看看

hexo s

在浏览器中输入:http://localhost:4000/ 即可查看

3.3 上传到服务器

su   //登录你用来上传博客的用户  
mkdir ~/.ssh //创建存放密钥的文件夹
vim ~/.ssh/authorized_keys //写入密钥

这里需要一个秘钥,在你的物理机上C:UsersAdministrator .ssh(mac在~/.ssh文件夹中)的文件中找到id_rsa文件

复制到你的服务器中

测试物理机与服务器能否跑通

ssh -v codertoro@codertoro.top

报错提醒:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ED25519 key sent by the remote host is
SHA256:BEKtLsmsTRoXsEebbqbI+xzClZEXFKZBEWOErLJnZm0.
Please contact your system administrator.
Add correct host key in /var/root/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /var/root/.ssh/known_hosts:12
Host key for codertoro.top has changed and you have requested strict checking.
Host key verification failed.

解决方法:

vi ~/.ssh/known_hosts删除对应IP下的内容

我们需要在config.yml中的最后一行编辑以下信息,然后咱们就可以把自己的博客推送上去了

deploy:  
- type: git
- repository: codertoro@hexo.codertoro.top:/home/codertoro/blog.git
- branch: master

然后就可以通过以下命令进行推送了

hexo clean && hexo g && hexo -d