Hexo静态博客部署到VPS
📄前言
🛠环境准备
本地环境 | VPS环境 |
---|---|
Git | Git |
Node.js | Nginx |
Hexo | CentenOS |
这里以我自己的Mac环境举例,其他操作系统很多操作类似或者可以自行Google
本地环境准备
Git
首先要安装Homebrew包管理器,打开Terminal,执行以下的代码
1 | $ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" |
命令执行完后,运行brew -v
,若显示Homebrew的版本信息即安装成功。接下来就可以执行brew install git
来安装Git,然后继续执行git --version
,如果显示Git版本信息即安装成功
Node.js
从Node.js官网下载对应系统的安装程序,安装成功后,可以在Terminal中输入node -v
检查是否安装成功
Hexo
以上必要的环境安装完成后执行npm install -g hexo-cli
,在Terminal中cd到你想要创建blog的文件夹,执行hexo init <folder>
进行hexo的初始化(<folder>为你想要新建hexo项目的文件夹名)
VPS环境准备
使用Terminal通过ssh链接到你的服务器,输入用户名和密码即可
1 | $ ssh root@[ip] -p ssh [port] //[ip]VPS的ip地址;[port]VPS的端口号 |
一般情况下,服务器并没有安装Git,所以需要我们自己安装,这里以CentenOS举例,他的包管理工具是yum,所以安装Git命令为yum install git
,检查是否安装成功与本地相同
创建git服务器
首先,我们需要在系统中创建服务器所需的用户组和用户,来运行git服务
1 | $ groupadd daniel //创建用户组 |
创建完毕后,我们需要给danielwei用户添加账户权限
1 | $ cd /etc //进入根目录下的etc文件夹 |
找到以下内容:
1 | ## Allow root to run any commands anywhere |
在下面添加一行:
1 | danielwei ALL=(ALL) ALL |
按ESC键,输入:wq
保存退出,并将sudoers文件改回原先权限
1 | $ chmod 400 sudoers |
输入logout
,断开ssh连接
在本地的Terminal上执行
1 | $ ssh-copy-id [user]@[remote] -p [port] |
[user]为用户名,[remote]为VPS的ip地址,[port]端口号
接下来重新登陆VPS
1 | $ cd ~/.ssh |
再次退出登陆,在Terminal中输入ssh danielwei@[ip] -p ssh [port]
,便可以免密码登陆
1 | $ cd /home/danielwei |
如果显示blog.git权限为root,那么则需要通过以下命令进行修改
1 | $ sudo chown daniel:daniel -R /home/daniel/blog.git |
自动部署内容
Git 钩子(hooks)是在 Git 仓库中特定事件(certain points)触发后被调用的脚本。通过钩子可以自定义 Git 内部的相关(如 git push)行为,在开发周期中的关键点触发自定义的行为
1 | $ cd /blog.git/hooks |
输入以下内容,路径修改成自己的即可。
1 | $ git --work-tree=/var/www/blog --git-dir=/home/danielwei/blog.git checkout -f |
退出后保存,执行chmod +x post-receive
安装 Nginx
安装gcc
先检查一下系统环境是否有已经安装gccgcc -v
,如果提示未找到命令,可以通过以下命令安装:
1 | yum -y install gcc |
安装pcre、pcre-devel
pcre是一个perl库,包括perl兼容的正则表达式库,nginx的http模块使用pcre来解析正则表达式,所以需要安装pcre库
1 | $ yum install -y pcre pcre-devel |
安装zlib
zlib库提供了很多种压缩和解压缩方式nginx使用zlib对http包的内容进行gzip,所以需要安装
1 | $ yum install -y zlib zlib-devel |
安装openssl
1 | $ yum install -y openssl openssl-devel |
下载Nginx安装包
1 | $ wget http://nginx.org/download/nginx-1.9.9.tar.gz |
将文件移动到 /tmp 目录下
1 | $ mv nginx-1.9.9.tar.gz /tmp |
进入nginx-1.9.9
1 | $ cd nginx-1.9.9 |
配置Nginx
1 | $ cd /usr/local/nginx/conf |
编辑以下文件
1 | $ vi nginx.conf |
根据自己网站的域名以及服务器地址,填写以下内容
1 | user danielwei danielwei; |
一些Nginx的命令
1 | $ /usr/local/nginx/sbin/nginx #启动 |
强制停止Nginx
1 | $ ps -ef | grep nginx #查看 nginx 所有进程 |
设置开机启动
1 | $ vi /usr/lib/systemd/system/nginx.service |
写入以下内容:
1 | [Unit] |
如果现在 nginx 处于运行状态,首先要先关闭 nginx
1 | $ systemctl enable nginx.service #设置开机自启 |
如果查看 nginx 运行状态显示结果如下:
(Loaded: loaded (/usr/lib/systemd/svstem/nginx.service; enabled; vendor preset: disabled)
Active: inactive (dead)
那么需要先杀死所有nginx 进程:
1 | $ pkill -9 nginx #关闭所有 nginx 进程 |
启动后会看到以下关键词Active: active (running)
重启服务器reboot
,重启后直接查看nginx状态,就以上关键词,就是配置成功了
本地上传到服务器
进入到本机的 Hexo 博客根目录下,打开 _config.yml 文件,在
1 | deploy: |
保存后在此目录下打开终端,输入命令:
1 | $ hexo g -d |
此时你就可以在你的网站上看到所上传的blog内容了
网站组件配置
⚙️组件 | 🔗链接 |
---|---|
服务器 | BandwagonHOST |
域名 | NameSilo |
DNS | DNSPod |
SSL证书 | Let’s Encrypt |
框架 | Hexo |
主题 | NexT |
小结
水了一篇文章,水的很好,希望下次不要再水了