美文网首页
在aws服务器上部署hexo

在aws服务器上部署hexo

作者: 帅气的我要加油 | 来源:发表于2017-08-09 15:22 被阅读87次

这是第一篇,加油~~~

网上有很多用hexo搭博客的文章都只讲过程,有时照着执行一遍完全不知道自己在干什么,而且报错了根本不知道是什么问题。前几天用hexo搭了一个博客主页,反反复复遇到很多问题,所以打算把整个流程和踩过的坑记录下来。
其实参考博客已经写得很好了,本文具体写一下实践中我的操作,还是有些改动的。
服务器:ubuntu
本地:mac os

1.整个搭建流程:

image.png

2.服务器环境搭建:

2-1.安装git 和 NodeJS(ubuntu环境)

curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
sudo apt-get install -y nodejs​ 

参考NODEJS官方文档:https://nodejs.org/en/download/package-manager/

2-2 创建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用户的密码,

#需要root权限
sudo passwd git​ 

切换至git用户,创建 ~/.ssh 文件夹和 ~/.ssh/authorized_keys 文件,并赋予相应的权限

su git
mkdir ~/.ssh
vim ~/.ssh/authorized_keys

#然后将电脑中执行 cat ~/.ssh/id_rsa.pub | pbcopy ,将公钥复制粘贴到authorized_keys
chmod 600 ~/.ssh/authorzied_keys
chmod 700 ~/.ssh 

然后就可以执行ssh 命令测试是否可以免密登录

ssh -v git@SERVER​ 

3 nginx的安装与配置

3-1安装nginx

参考官方文档(http://nginx.org/en/linux_packages.html

apt-get update
apt-get install nginx 

3-2 启动nginx

$sudo nginx​ 

如果开了防火墙,记得把HTTP 和 HTTPS 端口添加到防火墙允许列表

配置完成后,访问使用浏览器服务器 ip ,如果能看到nginx界面,表示运行成功。

配置虚拟主机

虚拟主机(Virtual Host)可以在一台服务器上绑定多个域名,架设多个不同的网站,一般在开发机或者要部署多个小网站的服务器上需要配置虚拟主机。

创建新的网站目录

Nginx 默认把网页文件存在 /var/www/html 目录。为了方便期间,我们在 /var/www/ 目录下为每个站点创建一个文件夹。

$ sudo mkdir -p /var/www/blog/html
$ sudo chown -R $USER:$USER /var/www/blog/html
$ sudo chmod -R 755 /var/www

在 /var/www/blog/html/ 目录下创建 index.html 文件。写上以下内容,用于测试虚拟主机运行情况。

<html>
    <head>
        <title>Welcome to Blog!</title>
    </head>
    <body>
        <h1>Success! The Blog server block is working!</h1>
    </body>
</html> 

3-3创建虚拟主机配置文件

在 /etc/nginx/conf.d/ 创建虚拟主机配置文件 blog.conf

server {
        listen 80;
        listen [::]:80;
        root /var/www/blog/html;
        index index.html index.htm index.nginx-debian.html;
        server_name eliyar.biz www.eliyar.biz;
        location / {
                try_files $uri $uri/ =404;
        }
}  

重启 Nginx 服务器,使服务器设定生效

sudo nginx -s reload 

3-4修改本地host,验证结果

在绑定域名到服务器之前,需要修改本地 host 文件来测试。本地电脑上修改 /etc/hosts 文件。

45.xx.xxx.150 exxxx.xxxz 

能看到以下结果就表示虚拟主机配置成功。

image.png

4 本地Hexo程序

4-1 初始化hexo博客

首先要安装 hexo-cli,安装hexo-cli 需要 root 权限,使用 sudo 运行

sudo npm install -g hexo-cli 

然后初始化Hexo程序

cd ~/Documents/code
hexo init blog 

等执行成功以后安装两个插件, hexo-deployer-git 和 hexo-server ,这俩插件的作用分别是使用Git自动部署,和本地简单的服务器。
hexo-deployer-git帮助文档
hexo-server帮助文档

cd blog
npm install hexo-deployer-git --save
npm install hero-server​ 

4-2. 生成自己的第一篇文章 hello world !

使用 hexo new <文章名称> 来新建文章,该命令会成成一个 .md文件放置在 sources/_posts文件夹。

hexo new "hello Hexo"
vim sources/_posts/hello-hexo.md 

编辑完毕以后, 使用hexo g将 .md文件渲染成静态文件,然后启动hexo-server:

hexo g
hexo server 

现在便可以打开浏览器访问 http://localhost:4000 来查看我们的博客了!

5. 自动化部署

5-1:服务器上建立git裸库

创建一个裸仓库,裸仓库就是只保存git信息的Repository, 首先切换到git用户确保git用户拥有仓库所有权
一定要加 --bare,这样才是一个裸库。

su git
cd ~ 
mkdir blog.git && cd blog.git​
git init --bare 

5-2. 使用 git-hooks 同步网站根目录

在这里我们使用的是 post-receive这个hook,当git有收发的时候就会调用这个hook。 在 ~/blog.git 裸库的 hooks文件夹中,
新建post-receive文件。

vim ~/blog.git/hooks/post-receive

#!/bin/sh
git --work-tree=/var/www/blog/html checkout -f​ 

保存后,要赋予这个文件可执行权限

chmod +x post-receive​ 

5-3. 配置本地_config.yml,完成自动化部署

在本地~/Documents/code​/blog中打开 _config.yml, 找到 deploy

deploy:
    type: git
    repo: git@SERVER:/home/git/blog.git    //<repository url>
    branch: master            //这里填写分支   [branch]
    message: 提交的信息         //自定义提交信息 (默认为 Site updated: {{ now('YYYY-MM-DD HH:mm:ss') }}) 

保存后,尝试将我们刚才写的"hello hexo"部署到服务器

hexo clean
hexo generate --deploy​ 

访问服务器地址,就可以看到我们写的文章"Hello hexo",以后写文章只需要:

hexo new "Blog article name"
···写文章
hexo clean && hexo generate --deploy​ 

参考:
https://segmentfault.com/a/1190000005723321
https://eliyar.biz/how_to_build_hexo_blog/

问题1

vim ~/.ssh/authorized_keys文件手抖写错了导致sudo不能用了,也没法改该文件,因为必须sudo了才能改

报错信息:

sudo: parse error in /etc/sudoers near line 23
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin​ 

解决方式:

https://stackoverflow.com/questions/11931840/getting-fatal-this-operation-must-be-run-in-a-work-tree-on-bare-repository
https://stackoverflow.com/questions/4043609/getting-fatal-not-a-git-repository-when-using-post-update-hook-to-execut

问题2

nginx各种配置文件冲突一直调不好而且配置文件缺少很多内容,这里完全卸载然后重装了(注意:卸载三思而后行)
比较靠谱的卸载解决办法是:root权限下载命令行敲入如下命令:

   rm -rf /etc/nginx/
   rm -rf /usr/sbin/nginx
   rm /usr/share/man/man1/nginx.1.gz
   apt-get remove nginx*

问题3

执行hexo generate --deploy 报错如下图:

image.png
原因在于
https://stackoverflow.com/questions/4043609/getting-fatal-not-a-git-repository-when-using-post-update-hook-to-execut
https://stackoverflow.com/questions/10507942/git-checkout-in-post-receive-hook-not-a-git-repository
(没看懂一知半解的)
反正我就是把服务器上的/home/git/hexo.git/hooks/post-receive文件改为:(这里去掉了--git-dir参数配置就好了) image.png

问题4.

mac osx 下 hexo DTraceProviderBindings 错误
错误提示:

Error: Cannot find module './build/Release/DTraceProviderBindings'​​

尝试了Stack Overflow的很多答案都没有效果
最终找到链接解决了该问题
https://kikoroc.com/2016/05/04/resolve-hexo-DTraceProviderBindings-MODULE-NOT-FOUND.html

npm uninstall hexo-cli -gnpm install hexo-cli -g​

相关文章

  • 在aws服务器上部署hexo

    这是第一篇,加油~~~ 网上有很多用hexo搭博客的文章都只讲过程,有时照着执行一遍完全不知道自己在干什么,而且报...

  • 简单几部,从零开始搭建自己的博客网站之部署示例

    部署示例 Hexo Hexo的服务器部署相对简单,由于其对服务器要求低的特性,在网络上薅免费羊毛也较容易,但对内容...

  • hexo部署到centos服务器上

    本文介绍将hexo部署到腾讯云的centos服务器上。 准备一台centos云服务器。 搭建本地hexo服务 搭建...

  • nginx 403错误

    在部署hexo博客时,由于使用hexo server启动经常停止,所以便想将hexo静态部署到nginx上。但在部...

  • NAS服务器的搭建-NAS介绍

    NAS服务器的搭建-NAS介绍 最近为了安装 huginn,在aws和 aliyun 上都尝试部署了,发现性能过差...

  • 4.服务部署

    参见:hexo官方网站Hexo 提供了快速方便的一键部署功能,让您只需一条命令就能将网站部署到服务器上。 安装 h...

  • tomcat相关配置

    一 把域名分别以不同端口配置在github上和tomcat服务器上 我的博客项目是hexo搭建的,直接部署在git...

  • 你不知道的HEXO deploy

    因hexo搭建也有一段时间了,刚开始部署的时候,直接部署在了服务器上,还是有些不方便,每次写完都要vi。后来查查文...

  • Hexo部署到云服务器

    本篇内容用来讲述如何将 hexo 博客部署到腾讯云的服务器上。只要通过三步即可成功部署:云服务器端 git 的配置...

  • HEXO常用命令笔记

    hexo 间写 服务器 监视文件变动 完成后部署 草稿 模版 title: 使用Hexo搭建个人博客layout:...

网友评论

      本文标题:在aws服务器上部署hexo

      本文链接:https://www.haomeiwen.com/subject/vhxxrxtx.html