博客一直放在GitHub上面,今天放到了服务器上,记录了一下简单的流程。供大家参考!
hexo相关文章:
搭建流程
- 服务器环境配置,安装Git、Nginx配置、创建git用户
- 本地hexo初始化
- 使用Git自动部署并发布博客
服务器环境搭建
- 安装Git和NodeJS(Centos环境)
yum install git
# 安装NodeJS
curl --silent --location https://rpm.nodesource.com/setup_5.x | bash -
- 创建git账号
adduser git
chmod 740 /etc/sudoers
vim /etc/sudoers
- 添加内容
找到
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
- 添加以下内容
git ALL=(ALL) ALL
- 保存退出并改回权限
chmod 400 /etc/sudoers
- 设置git账号密码
sudo passwd git
- 使用
su git
切换到git用户,再执行下列操作:
# 切换到git用户目录
cd /home/git
# 创建.ssh文件夹
mkdir ~/.ssh
# 创建authorized_keys文件并编辑
vim ~/.ssh/authorized_keys
# 如果你还没有生成公钥,那么首先在本地电脑中执行 cat ~/.ssh/id_rsa.pub | pbcopy生成公钥
# 再将公钥复制粘贴到authorized_keys
# 保存关闭authorized_keys后,修改相应权限
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh
- 然后可以通过本地Git Bash执行ssh命令测试是否可以免密登录
ssh -v git@服务器ip地址
这样git用户就添加好了。
- 安装Nginx
- 准备工作
首先由于nginx的一些模块依赖一些lib库,所以在安装nginx之前,必须先安装这些lib库,这些依赖库主要有g++、gcc、openssl-devel、pcre-devel和zlib-devel 所以执行如下命令安装
yum install gcc-c++
yum install pcre pcre-devel
yum install zlib zlib-devel
yum install openssl openssl--devel
Ubuntu系统安装命令如下:
sudo apt-get install libpcre3 libpcre3-dev
sudo apt-get install zlib1g-dev
sudo apt-get install openssl libssl-dev
- 安装Nginx
安装之前,最好检查一下是否已经安装有nginx
find -name nginx
如果系统已经安装了nginx,那么就先卸载
yum remove nginx
然后开始安装
首先进入/usr/local
目录
cd /usr/local
从官网下载最新版的nginx
wget -c https://nginx.org/download/nginx-1.14.2.tar.gz
(注:版本号可更改,去官网查看最新版本号修改即可)
解压nginx压缩包
tar -zxvf nginx-1.14.2.tar.gz
会产生一个nginx-1.14.2 目录,这时进入nginx-1.14.2 目录
cd nginx-1.14.2
接下来安装,使用–prefix参数指定nginx安装的目录,make、make install安装
./configure
(默认安装在/usr/local/nginx,推荐使用默认设置)
make
make install
如果没有报错,顺利完成后,最好看一下nginx的安装目录
whereis nginx
(where和is要连这些,中间没有空格)
- 启动和停止nginx
cd /usr/local/nginx/sbin/
./nginx
./nginx -s stop
./nginx -s quit
./nginx -s reload
./nginx -s quit: 此方式停止步骤是待nginx进程处理任务完毕进行停止。
./nginx -s stop: 此方式相当于先查出nginx进程id再使用kill命令强制杀掉进程。
查询nginx进程:
ps aux | grep nginx
- 重启 nginx
- 先停止再启动(推荐):
对 nginx 进行重启相当于先停止再启动,即先执行停止命令再执行启动命令。如下:
./nginx -s quit
./nginx
- 重新加载配置文件:
当 nginx 的配置文件 nginx.conf 修改后,要想让配置生效需要重启 nginx,使用 -s reload 不用先停止 nginx 再启动 nginx 即可将配置信息在 nginx 中生效,如下:
./nginx -s reload
启动成功后,在浏览器可以看到如下页面:
- 开机自启动
即在rc.local增加启动代码就可以了。
vim /etc/rc.local
增加一行
/usr/local/nginx/sbin/nginx
到这里,nginx安装完毕,启动、停止、重启操作也都完成。
建立git裸库
# 回到git目录
cd /home/git
# 使用git用户创建git裸仓库,以blog.git为例
git init --bare blog.git
检查用户组权限
我们的git裸仓库已经建立好了,离成功又近了一步。为了以防万一,我们要检查一下之前的blog.git、.ssh、blog目录的用户组权限是否都为git:git
# 还记得/var/www/吗?这是之前配置nginx时,我们自己选定的网站根目录,请依据你自己的设置更改,如果没有的话自己
ll -a /var/www/
ll -a /home/git/
如果有哪个不是,执行下面相应的命令后再查看
sudo chown git:git -R /var/www/blog
sudo chown git:git -R /home/git/blog.git
使用git-hooks同步网站根目录
简单来说,我们使用一个钩子文件:post-receive,每当git仓库接收到内容的时候,就会自动调用这个钩子,把内容同步到网站根目录。
在git用户下执行:
# 新建一个post-receive文件并编辑
vim ~/blog.git/hooks/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
赋予这个文件可执行权限。
好了,以上就是服务器端需要配置的内容。我们还差最后一步就可以完成整个部署了!
修改配置文件nginx.conf
修改上面的配置文件:
vim /usr/local/nginx/conf/nginx_config
然后修改其中两个部分,如下所示:
然后重启nginx
,方法见nginx安装
部分。
配置本地Hexo的_config.yml
非常简单,只需要找到本地Hexo博客的站点配置文件_config.yml,找到以下内容并修改:
deploy:
type: git
repo: git@你的服务器IP:/home/git/blog.git
branch: master
保存后,剩下的就是Hexo的日常操作了,这里就不赘述了,写完文章后,在你的本地博客根目录执行以下命令:
hexo c && hexo g -d
就可以实现线上博客的自动更新了!一切搞定!
一些需要注意的地方
- vim: command not found
**解决方法:**安装vim
yum -y install vim*
- 设置防火墙
开启80端口,并重新启动防火墙