文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

你要的这里都有,Hexo博客部署到腾讯云服务器全过程

2024-12-02 10:43

关注

部署环境

环境  
本地环境 MacOS Monterey 12.0.1
服务器环境 CentOS Linux release 8.2.2004 (Core)

本地环境配置

hexo 本地搭建过程网上太多了,这里不再赘述,这里只是做一点链接服务器的准备工作

生成 Git 密钥

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

一路回车,这时你应该可以在 ~/.ssh/ 目录下看到两个刚刚生成好的密钥文件:

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

服务器环境配置

服务器非常纯净,什么也没有,所以我们要一点点安装我们所需的内容

强烈建议你重置腾讯云服务器的默认密码, 再进行下面操作

Git 安装和配置

安装

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

  1. su root 

首先需要安装包的依赖

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

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

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

解压出来的 Git 文件都是源文件,我们需要进行编译,进入 Git 解压目录,进行编译和安装, 安装位置(这里选择 usr/local/git), 整个过程可能需要一定等待......

  1. cd git-2.34.1 
  2. make prefix=/usr/local/git all 
  3. make prefix=/usr/local/git install 

安装好后,我们需要配置环境变量,打开环境变量配置文件:

  1. vim /etc/profile 

在文件底部添加 Git 安装目录信息,给不熟悉 Vim 的同学快速操作步骤,按照下面依次按字母就可以了(这个保姆服务有没有很到位)

G (光标快速到文件末尾)

o (添加新空白行并进入 Insert 模式)

粘贴下面内容

Esc (进入 Normal 模式)

:wq(保存并退出)

  1. PATH=$PATH:/usr/local/git/bin 
  2. export PATH 

刷新环境变量,使之生效

  1. source /etc/profile 

此时 Git 应该已经安装完成,可以查看 Git 版本号是否和你指定的版本一样:

  1. git --version 

Git 新用户与配置

创建 git 用户和密码

  1. adduser git 
  2. passwd git 

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

  1. chmod 740 /etc/sudoers 
  2. vim /etc/sudoers 

/## Allow

这样可以快速定位到如下位置:

  1. ## Allow root to run any commands anywhere 
  2. root    ALL=(ALL)       ALL 

在下面一行添加 git 用户内容, 保存并退出

  1. git      ALL=(ALL)       ALL 

修改回 sudoers 文件权限

  1. chmod 400 /etc/sudoers 

测试

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

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

此时可以通过 ssh 命令(加上 -v 命令,可以输出详细 log)测试连接,没问题就可以进行下一步了

  1. ssh -v git@server_ip 

博客网站目录配置

创建博客网站目录位置

同样切换到 root 目录,然后为博客网站创建根目录(这里选择 /home/hexo)

  1. su root 
  2. mkdir /home/hexo 

赋予 git 用户权限

  1. chown git:git -R /home/hexo 

自动化配置

指定目录位置(这里选择 git 用户主目录 /home/git)创建一个名为 blog.git 的 bare repo

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

什么是 bare repo,以及 bare repo 的一些高级使用,可以看下面这三篇文章,下面的一些细节只是不做过多介绍

一键生成Git Worktree 工作目录

同样赋予 git 用户相应权限

  1. chown git:git -R blog.git 

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

  1. vim blog.git/hooks/post-receive 

然后添加如下内容(注意目录匹配),保存并退出:

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

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

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

接下来,创建个链接,以防后续 deploy 过程出错

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

至此,基本的准备工作就完成了,接下来我们需要处理 Nginx 的内容

Nginx 安装和配置

安装

同样切换到 root 用户,然后安装 nginx,并最终启动

  1. su root 
  2. yum install -y nginx 
  3. systemctl start nginx.service 

这时,在浏览器中输入公网 IP 地址,应该可以看到 Nginx 默认的欢迎界面

配置

这里配置 Nginx,将所有 Http 请求都重定向为 Https 请求,这就需要我们有 SSL 证书,证书可以在云服务器上申请,并下载相应的版本(这里选择 Nginx 证书),下载后解压,以我的证书为例:

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

通过 scp 命令将上述证书拷贝到远端服务器, 正常应该将 Nginx 的证书存放在 /etc/nginx/cert 目录下,这里选择存放在 /home/ssl_cert 下(如果目录不存在,请自行创建)

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

然后打开 Nginx 的配置文件进行整体配置

  1. server{ 
  2.     listen 80; 
  3.     server_name dayarch.top; # 个人域名 
  4.     rewrite ^(.*)$ https://$server_name$1 permanent; # 重定向 
  5.  
  6. server { 
  7.     listen 443;  
  8.     server_name dayarch.top;  # 个人域名 
  9.     ssl on;  
  10.     ssl_certificate      /home/ssl_cert/6317712_www.dayarch.top.pem; # .pem 证书 
  11.     ssl_certificate_key  /home/ssl_cert/6317712_www.dayarch.top.key; # .key 证书 
  12.     ssl_session_cache    shared:SSL:1m; 
  13.     ssl_session_timeout  5m; 
  14.     ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; 
  15.     ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
  16.     ssl_prefer_server_ciphers  on
  17.  
  18.     location / { 
  19.         root   /home/hexo;  # 博客网站主目录 
  20.         index index.php  index.html index.htm;  
  21.     } 
  22.  
  23.     error_page  404              /404.html; 
  24.     location = /404.html { 
  25.         root   /usr/share/nginx/html; 
  26.     } 
  27.  
  28.     error_page   500 502 503 504  /50x.html; 
  29.     location = /50x.html { 
  30.         root   /usr/share/nginx/html; 
  31.     } 

通过 nginx -t 命令进行检查,一切正常会输出如下结果:

  1. nginx: the configuration file /etc/nginx/nginx.conf syntax is ok 
  2. nginx: configuration file /etc/nginx/nginx.conf test is successful 

重启 Nginx 服务

  1. systemctl restart nginx.service 

至此,所有的准备工作都做完了,接下来,我们需要做一些博客配置

本地博客配置修改

我们需要将远端服务器的 Git 仓库信息配置到 Hexo 站点配置文件(_config.yml)中

  1. deploy: 
  2.   - type: git 
  3.     repo: git@server_ip:/home/git/blog.git 
  4.     branch: master 

陆续执行 hexo 的命令进行部署

  1. hexo clean 
  2. hexo generate 
  3. hexo deploy 

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

域名解析

登陆到你购买域名服务器(比如我在阿里云),配置域名解析,将其指向我们服务器的公网地址:

验证 

接下来,你可以在浏览器中输入域名,进行验证,享受你的成果吧!

来源:日拱一兵内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯