centos7服务器部署git并搭建部署Hexo个人博客
centos服务器搭建
个人服务器搭建
-
买一个合适自己的服务器(主要是价钱合适)
比如双十一期间可以抢购一些大厂有优惠活动的服务器。
-
如果有能力者,可以自己买个主机,连接上公网,做一个自己的服务器(本人这方面小白,以后有机会可以尝试一下这种方式)
本人在腾讯云买的服务器(不能用我多年积攒的Q币支付,属实难受T.T)
如果想买个域名,花几块钱买个一年的域名也是极好的。
-
备案,不必多说,按照步骤采集一些信息,相关工作人员给你打几个电话就完事了,当你收到备案成功邮件时,备案就算完成了。
-
安装服务器操作系统
-
服务器操作系统
本人选择的是centos,不过大都相同类似,因为大部分都是Linux操作系统,使用的大多是Linux操作命令
- 安装过后,就可以进入下一步了。
-
如果有域名的,可以绑定一下域名,因为当前服务器使用的还是公网IP,具体位置在云服务器上的我的域名,管理域名板块,解析上去就完事了。
该整的整,整完以后登录服务器,点击实例中的登录按钮,进入云服务器上的操作系统,默认路径应该是root根路径,但是这个root并不是最顶层,上层还有一个操作系统级的目录。可以用命令行进各大目录看一看,具体如何操作。
# 进入目录
cd <目录名>
# 进入上一级
cd ../
# 展示当前目录
ls
# 展示当前路径
pwd
# 创建文件夹
mkdir <文件名>
熟练掌握这些命令,可以玩好几天,不过如果想使用的更好,建议还是学习一下linux命令,毕竟在操作系统不再low逼得使用可视化工具了。
进入主线,安装个nginx练练手先
打开腾讯云官方文档
-
运维指南->软件安装 在这里可以根据不同的环境安装软件,本人使用的事centos环境,大致介绍一下安装步骤:
- yum install 软件名称 这个命令用来安装需要安装的软件
- 会显示出安装软件的相关信息,并提示是否安装,选择y
- 当界面提示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,有两种方式启动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官方文档
学习一波
发第一篇文章
进入下一步
配置_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目录下的内容,到底很简单,就是这个整体自动化工具,多多少少有点复杂。
说实话,第一次写这么长,还不敢中断思路,生怕错过细节,写到最后实在是恶心的不想写了,单纯的流水账。下一次争取用最简洁的语言,描述出最完整的意思。