服务器部署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目录下的内容,到底很简单,就是这个整体自动化工具,多多少少有点复杂。

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,117评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,328评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,839评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,007评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,384评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,629评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,880评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,593评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,313评论 1 243
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,575评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,066评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,392评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,052评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,082评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,844评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,662评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,575评论 2 270

推荐阅读更多精彩内容