目录

  • 前言
  • 环境
    • 本地环境
    • 服务器环境
    • 本地机器配置
      • 配置密钥
      • 使用git bash生成ssh公钥
  • 服务器配置
    • 安装Git,nodejs,Nginx等
    • 创建git新用户及配置
      • 创建git新用户
        • 将公钥配置到服务器上
        • 测试git连接
  • 创建网站的根目录
  • 安装以及配置Nginx
  • 实现自动化部署
    • 建立git裸库
    • 使用 git-hooks 同步网站根目录
  • 本地机器中部署至服务器
    • 配置hexo
  • 新用户
    • 将公钥配置到服务器上
    • 测试gitd连接
    • 创建网站的根目录
    • 实现自动化部署
      • 建立git裸库
      • 使用 git-hooks 同步网站根目录

前言

由于不想部署在github上,因为Github的访问速度在国内比较慢,所以有了此文。

部署之前先了解一下hexo利于git更新的流程,部署在Github上和部署在云服务器上没有特别大的本质区别。

整个流程就是本地将 *.md 渲染成静态文件,然后Git推送到服务器的repository,服务器再通过 git-hooks 同步网站根目录。再利于nginx托管这些静态资源,就可以实现快速的访问。

环境

本地环境

  • Windows10(64bit)
  • 已经装好了git,nodejs,hexo
  • 已经在本地调试好了hexo静态网站

服务器环境

  • 华为云ECS(1M1核2G,centos7)
  • 已经装好了git,nodejs,以及编译好了Nginx

本地机器配置

配置密钥

在本地机器(Windows环境)中进入

使用git bash生成ssh公钥

# 本地 windows gitBash
ssh-keygen -t rsa

一路回车,直至如下图,即可。

在本地服务器中配置好了公钥,接下来我们需要把这个公钥交给服务器,相当于本地机器有了一把能访问服务器的“钥匙”,所以接下来需要配置服务器。

服务器配置

安装Git,nodejs,Nginx等

linux下安装这些非常简单,直接百度即可。

创建git新用户及配置

创建git新用户

adduser git #加入git用户
passwd git  #配置你的密码
chmod 740 /etc/sudoers #修改权限 r=4 w=2 x=1 rwx=7 r__=4 ___=0,也就是说git的sudo使用权为只读
vim /etc/sudoers

打开suduers,找到以下内容

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

在他的下面加入以下内容

git ALL=(ALL) ALL

wq保存后,需要将权限修改回来

chmod 400 /etc/sudoers

将公钥配置到服务器上

首先你得在你的本地机器上找到你的公钥,一般在用户的家目录下,windows是Administrator目录,linux是~/.ssh下

我的本地机器是windows,所以在Administrator目录下。


将该文件的内容复制。

在服务器端,切换至刚刚创建好的git用户下,创建.ssh文件和authorized_keys文件

su git
mkdir ~/.ssh
vim ~/.ssh/authorized_keys

修改权限

cd ~
chmod 600 .ssh/authorized_keys # 将文件设置为可读可写
chmod 700 .ssh #将该文件夹设置为可读可写可执行,注意文件夹的可执行是指能访问

测试git连接

切换到本地机器上,在本地机器上测试是否能连接到你的远程git用户

ssh -v git@SERVER_IP

测试成功

如果你的测试不成功,请查看具体的输出信息,通常是公钥没配置好,可以把原来生成的公钥删了,重新配置一遍。

创建网站的根目录

创建网站的根目录的目的是为了让nginx托管这些静态文件。

创建一个目录用于作为网站的根目录。切换成root用户

su root
mkdir /home/hexo    # 此目录为网站的根目录

变更该目录的所有者

chown git:git -R /home/hexo

安装以及配置Nginx

安装过程略,具体可百度。编译好nginx后,进入其配置文件
注意使用 nginx -t 命令检查配置文件的语法是否出错。然后使用 systemctl restart nginx.service 或者

在编译好的nginx目录下使用sbin/nginx -s reload命令重启服务即可。

实现自动化部署

建立git裸库

该裸库什么版本信息和数据都不保存,单纯是为了共享而存在。

在root 用户下

su root
cd /home/git   # 在 git 用户目录下创建
git init --bare hexo.git

这时,git用户的~ 目录下就存在一个 hexo.git文件夹,可使用ls 命令查看。再修改hexo.git的所有者。

chown git:git -R hexo.git

使用 git-hooks 同步网站根目录

在这使用的是post-receive这个钩子,当 git 有收发的时候就会调用这个钩子。 在 blog.git裸库的 hooks 文件夹中,新建post-receive 文件。

vim hexo.git/hooks/post-receive

填入以下内容,其中 /home/hexo 为网站目录,根据自己的填入,保存退出。

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

注意此处若是gitd(测试)账户下面这样写

#!/bin/sh
git --work-tree=/home/hexod --git-dir=/home/gitd/hexod.git checkout -f

该钩子的意思是当本地有提交到服务器时,会将文件放在/home/hexo下

-f这个参数如果在多人协作的博客中可能会引发不好的结果,因为他是强制更新的意思,会将本地版本覆盖掉远程服务器的版本,但是是个人的博客系统就无所谓了

保存后,要赋予这个文件可执行权限。

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

也可进行可视化操作, 我用的是FileZilla

这样就完成了git自动部署的配置

本地机器中部署至服务器

在本地中,和部署到 github 服务一样,需要先 hexo g 命令生成静态文件,通过 hexo s 命令能够正常进行本地访问,并且确保***已经安装***了 hexo-deployer-git。

配置hexo

hexo 根目录下的 _config.yml 文件,找到 deploy。

deploy:type: gitrepo: git@SERVER:/home/git/hexo.git     # 填写你的服务器地址 将SERVER替换掉branch: master      # 分支

之后按照正常的流程部署

hexo c && hexo g && hexo d

部署成功,访问测试。

至此你的项目部署完成就不用往下看了, 来个三连吧, 下面是创建新账户进行的相同操作。

新用户

我们不用git这个账户, 新创个账户进行部署

创建gitd账户同步进行

adduser gitd #加入gitd用户
passwd gitd  #配置你的密码
chmod 740 /etc/sudoers #修改权限 r=4 w=2 x=1 rwx=7 r__=4 ___=0,也就是说git的sudo使用权为只读
vim /etc/sudoers

打开suduers,找到以下内容

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

在他的下面加入以下内容

gitd ALL=(ALL) ALL

wq保存后,需要将权限修改回来

chmod 400 /etc/sudoers

将公钥配置到服务器上

在服务器端,切换至刚刚创建好的git用户下,创建.ssh文件和authorized_keys文件

su gitd
mkdir ~/.ssh
vim ~/.ssh/authorized_keys

修改权限

cd ~
chmod 600 .ssh/authorized_keys # 将文件设置为可读可写
chmod 700 .ssh #将该文件夹设置为可读可写可执行,注意文件夹的可执行是指能访问

测试gitd连接

切换到本地机器上,在本地机器上测试是否能连接到你的远程gitd用户

ssh -v gitd@SERVER_IP

创建网站的根目录

创建网站的根目录的目的是为了让nginx托管这些静态文件。

创建一个目录用于作为网站的根目录。切换成root用户

su root
mkdir /home/hexod    # 此目录为网站的根目录 hexod

变更该目录的所有者

chown gitd:gitd -R /home/hexod

实现自动化部署

建立git裸库

该裸库什么版本信息和数据都不保存,单纯是为了共享而存在。

在root 用户下

su root
cd /home/gitd   # 在 gitd 用户目录下创建
git init --bare hexod.git

这时,gitd 用户的 ~目录下就存在一个 hexod.git文件夹,可使用ls 命令查看。再修改hexod.git的所有者。

chown gitd:gitd -R hexod.git

使用 git-hooks 同步网站根目录

vim hexod.git/hooks/post-receive

填入以下内容,其中 /home/hexod为网站目录,根据自己的填入,保存退出。

#!/bin/sh
git --work-tree=/home/hexod --git-dir=/home/gitd/hexod.git checkout -f

保存后,要赋予这个文件可执行权限。

chmod +x /home/gitd/hexod.git/hooks/post-receive

hexo部署云服务器的全过程相关推荐

  1. Vue项目从 打包优化 到 上线部署 云服务器的全过程(**教你在云服务器上优化部署自己的项目**)

    前言 作为前端开发人员,我们不仅要会写代码,优化打包,上线部署也是一个前端工程师必备的技能,这篇文章就教大家从零开始,把一个完整项目打包发布到线上服务器.首先的准备工作就是需要一台云服务器. 项目打包 ...

  2. 华为虚拟一键部署服务器,一键部署云服务器

    一键部署云服务器 内容精选 换一换 SAP NetWeaver分布式部署如图1所示.该部署方式是由多个SAP实例组成,一个SAP实例是一组同时开始和结束的进程.在分布式系统中,所有实例都运行在独立的云 ...

  3. Hexo系列 | Hexo部署至服务器

    目录 前言 一.git安装 二.git配置 三.创建git仓库 四.配置本地Hexo,构建至服务器 五.部署 前言 将Hexo部署至服务器,记录部署过程 个人博客效果 一.git安装 安装git yu ...

  4. 服务器ip控制系统叫什么,部署云服务器时ip是什么意思

    部署云服务器时ip是什么意思 内容精选 换一换 删除是指删除弹性云服务器,删除时可以选择同时删除弹性公网IP和数据盘.如果不选择,则会保留,需要您单独删除.删除弹性云服务器的操作如下:登录管理控制台. ...

  5. Flask项目部署云服务器 CentOS7.3+Redis+MySQL+Flask+Nginx+Gunicorn +Supervisorctl

    Flask项目部署云服务器 CentOS7.3+Redis+MySQL+Flask+Nginx+Gunicorn +Supervisorctl 项目运行环境 阿里云(单核CPU, 2G内存, Cent ...

  6. 【腾讯云服务器】部署云服务器(宝塔面板)——Flask项目+mysql+html全过程

    文章简介 本文章是记录我将自己的一个小web项目[(html+css+js)+Flask+Mysql]部署到腾讯的云服务器(宝塔腾讯云专属面板)上的过程,希望能帮到大家. (自己写的圣诞树和一个发送弹 ...

  7. 自托管websocket和webapi部署云服务器域名及远程访问

    当写完websocket和webapi服务端时,在本地测试时是没有问题的,因为是通过本地IP及端口号访问(例:127.0.0.1:8080\api\test),也就没有防火墙等安全限制,但当部署到云服 ...

  8. uniapp项目打包与部署云服务器

    uniapp项目的打包 第一步,在manifest里面配置好基础路径和端口 然后进行发布,填好自己的云服务器域名 打包成功后,项目在如图h5路径下,拿着h5文件的压缩包就可以去部署了 第二步,你要有一 ...

  9. 华为云 DevCloud 部署云服务器

    本文基于已购买的华为云服务于使用华为云IAM子账号编写 一.云服务器 在华为云管理界面点击左上方打开服务列表,点击弹性云服务器ECS,进入云服务器管理列表 注意:如果提示没有权限需使用主账号开发云服务 ...

最新文章

  1. IDEA与tomcat相关配置
  2. asp.net mvc+httpclient+asp.net mvc api入门篇
  3. node11---相册
  4. 剑指offer之找到链表里面包含环的入口节点
  5. 使用所有对象通用的方法
  6. IE或Chrome浏览器玩Xbox游戏能实现吗
  7. 安装Oracle 11g 出现交换空间不够
  8. 使用Xshell通过堡垒机登录服务器
  9. win8系统电脑中病毒了怎么办,如何解决win8电脑中毒
  10. 散列表碰撞处理、开链法、HashTable散列
  11. 我们雇佣了一只大猴子...
  12. 从word中复制图片到ckeditor编辑器中
  13. 坦然面对,大步向前!
  14. 如何区分静态网页与动态网页
  15. [精品教程,新老鸟必读]:极限装机、优化全攻略(新手优化教程)
  16. ios 视频处理详解一(视频导出)
  17. xml在线格式化工具
  18. 尚有缺者,方为完美。小人求全,智者求阙——《致温弟沅弟》曾国藩
  19. 标视界:值得您信赖的商标查询网
  20. 51单片机——蜂鸣器的使用

热门文章

  1. SemEval-2020自由文本关系抽取冠军方案解读 (附NLP竞赛常用技巧总结)
  2. 直播预告 | 清华大学博士生牛艺霖:常识知识获取与常识推理
  3. ICCV 2019 论文解读 | 基于层次解析的Image Captioning
  4. 近期知识图谱顶会论文推荐,你都读过哪几篇?
  5. 线下报名 | YOCSEF TDS:深度强化学习的理论、算法与应用
  6. POJ1185 炮兵阵地 状压DP
  7. c语言如何获取串口列表,如何通过串口来读写数据,请教达人
  8. 南瑞变压器保护装置说明书_电力试验:变压器感应耐压试验(二)
  9. redhat 中配置静态 IP
  10. Java读取xml文件的四种方法