服务器部署git并搭建部署Hexo个人博客

centos7服务器部署git并搭建部署Hexo个人博客

centos服务器搭建

个人服务器搭建

  • 买一个合适自己的服务器(主要是价钱合适)

    • 比如双十一期间可以抢购一些大厂有优惠活动的服务器。

    • 如果有能力者,可以自己买个主机,连接上公网,做一个自己的服务器(本人这方面小白,以后有机会可以尝试一下这种方式)


      buy_server.png

本人在腾讯云买的服务器(不能用我多年积攒的Q币支付,属实难受T.T)

  • 如果想买个域名,花几块钱买个一年的域名也是极好的。

  • 备案,不必多说,按照步骤采集一些信息,相关工作人员给你打几个电话就完事了,当你收到备案成功邮件时,备案就算完成了。


    beian_success.png
  • 安装服务器操作系统

    • 服务器操作系统


      system_select.png

    本人选择的是centos,不过大都相同类似,因为大部分都是Linux操作系统,使用的大多是Linux操作命令

    • 安装过后,就可以进入下一步了。
  • 如果有域名的,可以绑定一下域名,因为当前服务器使用的还是公网IP,具体位置在云服务器上的我的域名,管理域名板块,解析上去就完事了。

  • 该整的整,整完以后登录服务器,点击实例中的登录按钮,进入云服务器上的操作系统,默认路径应该是root根路径,但是这个root并不是最顶层,上层还有一个操作系统级的目录。可以用命令行进各大目录看一看,具体如何操作。

# 进入目录
cd <目录名>
# 进入上一级
cd ../
# 展示当前目录
ls
# 展示当前路径
pwd
# 创建文件夹
mkdir <文件名>

熟练掌握这些命令,可以玩好几天,不过如果想使用的更好,建议还是学习一下linux命令,毕竟在操作系统不再low逼得使用可视化工具了。

进入主线,安装个nginx练练手先

打开腾讯云官方文档

腾讯云官方文档

  • 运维指南->软件安装 在这里可以根据不同的环境安装软件,本人使用的事centos环境,大致介绍一下安装步骤:

    1. yum install 软件名称 这个命令用来安装需要安装的软件
    2. 会显示出安装软件的相关信息,并提示是否安装,选择y
    3. 当界面提示complete时,意味着安装完成
  • 如需查看安装包软件信息可以输入 rpm -ql 软件名 查询安装目录,如需查看软件版本信息可以输入rpm -q 软件名 查看软件包的版本信息,如需查看已安装过的软件可以输入rpm -qa 查看已安装过得软件列表。如果使用云服务安装好的系统,会自带很多常用的包,安装之前可以查看一下是否安装过。

  • 安装个nginx玩玩,实在抱歉,因为腾讯云服务已经帮您安装好了,您只需要使用就行了,使用linux命令寻找一下nginx安装目录在哪。然后进入目录,准备下一步操作。

    通常软件安装后的目录在etc这个文件夹里,使用vim打开它 vim /etc/nginx/nginx.config

可能有很多人刚接触,不敢使劲操作,生怕搞坏个目录结构啥的,造成系统崩溃,弄得互联网世界崩盘,宇宙大爆炸啥的!但是,我要说的就是这个,如果你能在一个如此完善的操作系统里,仅凭修改几个文件就搞坏了一整个系统,那就真的不用再看这边文章了,这篇文章容不下您这尊大神,您已经是真的世界顶尖极客了。。。开个玩笑,可劲作吧,服务器买下来就是个小电脑,放心用,可劲造,弄不坏的,如果实在弄坏了,咱还可以重新安装系统,重装后又成一个新的服务器了不是。

使用nginx配置一个简单的首页,方法也很简单新手只需要改两个地方

  • 先把nginx.config最上边的 user 改了,改成自己的主用户权限的用户名,比如我这里就改为user root

  • 修改server下的index 为index.html,root为首页文件的路径


    nginx_config.png
  • 改好之后启动nginx,有两种方式启动nginx

    • 第一种:切换入nginx目录下,执行nginx start启动nginx服务器,nginx stop关闭nginx服务器,nginx reload重启nginx服务器

    • 第二种:使用全局方法,使用systemctl启动服务(可以不添加后缀.service)

    systemctl start nginx
    systemctl stop nginx
    systemctl reload nginx

      # 命令合集
      systemctl is-enabled servicename.service #查询服务是否开机启动
      systemctl enable *.service #开机运行服务
      systemctl disable *.service #取消开机运行
      systemctl start *.service #启动服务
      systemctl stop *.service #停止服务
      systemctl restart *.service #重启服务
      systemctl reload *.service #重新加载服务配置文件
      systemctl status *.service #查询服务运行状态
      systemctl --failed #显示启动失败的服务
    

nginx搭建完毕,下一步需要在服务器上搭建一下git仓库,方法

  • git安装

      yum install -y git
    
  • 配置git仓库

      useradd git # 添加git用户
      passwd git # git用户新密码
      su git # 切换到git用户
      mkdir -p 目标目录 # 项目的真实目录
    

    进入etc目录下,打开sudoers,给git添加权限,root ALL=(ALL)ALL

    如果sudoers没有权限,可以用root用户给sudoers添加可写权限具体操作,chmod 740 /etc/sudoers,修改完后再改为chmod 440 /etc/sudoers,740 440 具体含义,请自行翻查linux权限操作
    注意对其
    进入git用户执行如下命令

    su git
    cd /home/git/
    git init --bare blog.git
    cd blog.git/hooks
    vim post-receive # 在git里创建一个钩子
    

    在post-receive里边输入如下内容:

    #!/bin/bash
    GIT_REPO=/home/git/blog.git
    TMP_GIT_CLONE=/tmp/blog
    PUBLIC_WWW=/var/www/blog
    rm -rf ${TMP_GIT_CLONE}
    git clone $GIT_REPO $TMP_GIT_CLONE
    rm -rf ${PUBLIC_WWW}/*
    cp -rf ${TMP_GIT_CLONE}/* ${PUBLIC_WWW}
    

    保存后退出,执行chmod +x post-receive 给这个文件可执行权限

  • 关闭git用户shell权限
    执行:vim /etc/passwd
    将最后一行的git:x:1001:1001:,,,:/home/git:/bin/bash修改为git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell

  • 配置SSH

    cd /home/git
    mkdir .ssh    # 创建.ssh目录,这是个隐藏文件,因为以.开头的文件
    cd .ssh
    vim authorized_keys
    

    然后将本地的公钥复制到authorized_keys文件里(公钥即上文中本地执行cat ~/.ssh/id_rsa.pub查看的内容)

    查看用户组管理

    ll /home/git
    ll /var/www
    

    确保blog.git、.ssh、blog目录的用户组权限为git:git。若不是,执行下列命令后再查看:

    sudo chown git:git -R /var/www/blog
    sudo chown git:git -R /home/git/blog.git
    
  • 到此为止就创建完成了,使用git上传一下代码和更新一下代码尝试尝试。

配置hexo

学习一波hexo官方文档

hexo官方文档

  • 学习一波

  • 发第一篇文章

  • 进入下一步

配置_config.yml文件

  • 学习一波官网的一键部署。其实也没啥好讲的。配置好,上传齐活。

  • 如果喜欢偷懒的,可以一键部署加上传githab,具体方法:

// 修改package.json文件
  "scripts": {
    "build": "hexo clean && hexo g && hexo d && git add . && git commit -m '更新' && git pull && git push",
    "dev": "hexo clean && hexo g && hexo s"
  }

这么整的好处就是可以一键上传源码到GitHub,另一边可以一键部署到个人服务器的私人git仓库。

说一下自己的理解:大致原理就是在服务器上创建一个git仓库,在钩子里写一个shell脚本,脚本内容大概说的就是当有版本上传上来时,删除tem临时文件中的内容,执行git clone到tem临时文件夹内,然后删除对外的公网地址(nginx首页位置),最后复制tem内新的临时文件到对完的公网地址上。nginx指向的实质就是hexo生成的public目录下的内容,到底很简单,就是这个整体自动化工具,多多少少有点复杂。

说实话,第一次写这么长,还不敢中断思路,生怕错过细节,写到最后实在是恶心的不想写了,单纯的流水账。下一次争取用最简洁的语言,描述出最完整的意思。

你可能感兴趣的:(服务器部署git并搭建部署Hexo个人博客)