供求信息
你要的这里都有,Hexo博客陈列到腾讯云服务器全进程
发布日期:2022-08-07 15:21    点击次数:123
  背景

说来也内疚,博客已经搭建很久了,一贯收费的陈列在 Coding 和 Github Pages 上,前者迁移到腾讯云 Serverless,导致原本的设置一直有成就,没时光仔细研究,恰好腾讯服务器有羊毛可以或许褥,果决作出迁移,至于抉择腾讯云,是因为现在备案在腾讯云,然则置办域名是在阿里,感到好拧巴,然则总体互不相干,没啥影响。

陈列情形 情形   外埠情形 MacOS Monterey 12.0.1 服务器情形 CentOS Linux release 8.2.2004 (Core) 外埠情形设置

hexo 外埠搭建进程网上太多了,这里再也不赘述,这里只是做一点链接服务器的操办事变

生成 Git 密钥

ssh-keygen -C "your@mail.com" 

一同回车,这时候你该当可以或许在 ~/.ssh/ 目录下看到两个适才生成好的密钥文件:

公钥:id_rsa.pub 私钥:id_rsa

我们一会需求把公钥的内容拷贝到服务器上

服务器情形设置

服务器极度纯净,什么也没有,所以我们要一点点按部就班我们所需的内容

Git Nginx

激烈倡导你重置腾讯云服务器的默认密码, 再举行上面操作

Git 按部就班和设置

按部就班

切换到 root 用户(输入你适才重置的密码就好)

su root 

首先需求按部就班包的寄托

yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel yum install  gcc perl-ExtUtils-MakeMaker 

进入指定目录(这里抉择 usr/local/src)抉择最新版本 Git (这里运用 2.34.1)下载并解压

cd /usr/local/src wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.34.1.tar.gz tar -zxvf git-2.19.0.tar.gz 

解压进去的 Git 文件都是源文件,我们需求举行编译,进入 Git 解压目录,举行编译和按部就班, 按部就班职位地方(这里抉择 usr/local/git), 全副进程可以或许需求必定等待......

cd git-2.34.1 make prefix=/usr/local/git all make prefix=/usr/local/git install 

按部就班好后,我们需求设置情形变量,关上情形变量设置文件:

vim /etc/profile 

在文件底部增加 Git 按部就班目录信息,给不意识 Vim 的同砚倏地操作步伐,根据上面顺次按字母就能了(这个保母服务有无很到位)

G (光标倏地到文件末端)

o (增加新空白行并进入 Insert 情势)

粘贴上面内容

Esc (进入 Normal 情势)

:wq(生活生涯并退出)

PATH=$PATH:/usr/local/git/bin export PATH 

刷新情形变量,使之生效

source /etc/profile 

此时 Git 该当已经按部就班实现,可以或许查察 Git 版本号是否和你指定的版本同样:

git --version 

Git 新用户与设置

创立 git 用户和密码

adduser git passwd git 

将 git 用户增加到 sudoers 文件中, 同样给出 Vim 快捷操作

chmod 740 /etc/sudoers vim /etc/sudoers 

/## Allow

如容许以倏地定位到以下职位地方:

## Allow root to run any co妹妹ands anywhere root    ALL=(ALL)       ALL 

在上面一行增加 git 用户内容, 生活生涯并退出

git      ALL=(ALL)       ALL 

编削回 sudoers 文件权限

chmod 400 /etc/sudoers 

测试

将上面外埠生成的 id_rsa.pub 公钥内容拷贝到远端服务器, 这个敕令会默认在远端服务器 git 用户主目录下生成 authorized_keys 文件 (~/.ssh/authorized_keys), 个中 server_ip 为公网 IP,不是外部 IP,别拷贝错了

ssh-copy-id -i ~/.ssh/id_rsa.pub git@server_ip 

此时可以或许经由过程 ssh 敕令(加之 -v 敕令,可以或许输出详细 log)测试跟尾,没成就就能举行下一步了

ssh -v git@server_ip 

博客网站目录设置

创立博客网站目录职位地方

同样切换到 root 目录,供求信息尔后为博客网站创立根目录(这里抉择 /home/hexo)

su root mkdir /home/hexo 

赋予 git 用户权限

chown git:git -R /home/hexo 
自动化设置

指定目录职位地方(这里抉择 git 用户主目录 /home/git)创立一个名为 blog.git 的 bare repo

cd /home/git  git init --bare blog.git 

什么是 bare repo,以及 bare repo 的一些低档运用,可以或许看上面这三篇文章,上面的一些细节只是不做适量介绍

Git Worktree 大法真香 Git Worktree 低档运用

一键生成Git Worktree 事变目录

同样赋予 git 用户响应权限

chown git:git -R blog.git 

运用自动化设置,自然是要用到 Git 的钩子函数,这里我们需求 post-receive,在博客 hooks 目录下新建该文件:

vim blog.git/hooks/post-receive 

尔后增加以下内容(留心目录成家),生活生涯并退出:

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

最后,赋予这个文件可执行权限

chmod +x /home/git/blog.git/hooks/post-receive 

接上去,创立个链接,以防后续 deploy 进程犯错

sudo ln -s /usr/local/git/bin/git-receive-pack /usr/bin/git-receive-pack 

至此,根抵的操办事变就实现了,接上去我们需求处理惩罚 Nginx 的内容

Nginx 按部就班和设置

按部就班

同样切换到 root 用户,尔后按部就班 nginx,并终究启动

su root yum install -y nginx systemctl start nginx.service 

这时候,在阅读器中输入公网 IP 地点,该当可以或许看到 Nginx 默认的迎接界面

设置

这里设置 Nginx,将全体 Http 要求都重定向为 Https 要求,这就需求我们有 SSL 证书,证书可以或许在云服务器上请求,并下载响应的版本(这里抉择 Nginx 证书),下载后解压,以我的证书为例:

. ├── 6317712_www.dayarch.top.key └── 6317712_www.dayarch.top.pem  0 directories, 2 files 

经由过程 scp 敕令将上述证书拷贝到远端服务器, 畸形该当将 Nginx 的证书寄放在 /etc/nginx/cert 目录下,这里抉择寄放在 /home/ssl_cert 下(假定目录不存在,请自行创立)

scp ~/Downloads/6317712_www.dayarch.top_nginx/6317712_www.dayarch.top.key root@server_ip:/home/ssl_cert scp ~/Downloads/6317712_www.dayarch.top_nginx/6317712_www.dayarch.top.pem root@server_ip:/home/ssl_cert 

尔后关上 Nginx 的设置文件举行总体设置

server{     listen 80;     server_name dayarch.top; # 集团域名     rewrite ^(.*)$ https://$server_name$1 permanent; # 重定向 }  server {     listen 443;      server_name dayarch.top;  # 集团域名     ssl on;      ssl_certificate      /home/ssl_cert/6317712_www.dayarch.top.pem; # .pem 证书     ssl_certificate_key  /home/ssl_cert/6317712_www.dayarch.top.key; # .key 证书     ssl_session_cache    shared:SSL:1m;     ssl_session_timeout  5m;     ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;     ssl_protocols TLSv1 TLSv1.1 TLSv1.2;     ssl_prefer_server_ciphers  on;      location / {         root   /home/hexo;  # 博客网站主目录         index index.php  index.html index.htm;      }      error_page  404              /404.html;     location = /404.html {         root   /usr/share/nginx/html;     }      error_page   500 502 503 504  /50x.html;     location = /50x.html {         root   /usr/share/nginx/html;     } } 

经由过程 nginx -t 敕令举行查抄,通通畸形会输出以下终局:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful 
重启 Nginx 服务
systemctl restart nginx.service 

至此,全体的操办事变都做完了,接上去,我们需求做一些博客设置

外埠博客设置编削

我们需求将远端服务器的 Git 货仓旅馆信息设置到 Hexo 站点设置文件(_config.yml)中

deploy:   - type: git     repo: git@server_ip:/home/git/blog.git     branch: master 

接连执行 hexo 的敕令举行陈列

hexo clean hexo generate hexo deploy 

至此,距离告成,我们只差最后一步

域名剖析

上岸到你置办域名服务器(比喻我在阿里云),设置域名剖析,将其指向我们服务器的公网地点:

验证 

接上去,你可以或许在阅读器中输入域名,举行验证,享受你的功能吧!