• 右边那个既可以是服务器也可以是github
  • 左边我之前就已经在本地弄好了,包括安装node.js,hexo(e盘下的hexo2就是了),以及博客的初始美化和文章撰写。
  • 接下来是服务器的环境搭建

服务器端

安装git

  • 思路:在阿里云服务器上搭建git仓库,本地博客目录下运行hexo g -d生成静态文件,并提交到git仓库

    yum install git
    
  • 检查安装信息

    git --version
    
  • 创建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
    
  • 生成一对ssh认证密钥(这个应该是为了git push之类的时候免密吧)

    su git
    cd /home/git
    mkdir /blog/.ssh
    cd blog/.ssh
    ssh-keygen -t rsa
    
  • 下面是本地端的操作,主要是为了ssh连接远程服务器的时候可以免密
  • 在本地生成公钥和密钥

    ssh-keygen -t rsa //因为本地已经有了所以应该会提示已存在,那其实也可以直接跳过这一步
    
  • 将本机生成的公钥发送到服务器上建立信任关系,目的是ssh连接的时候可以不输入密码

    ssh-copy-id -i C:/Users/14103/.ssh/id_rsa.pub git@47.107.237.149
    
  • 测试ssh远程登录是否成功,必须免密才算成功

    ssh git@47.107.237.149
    
  • 把上一步、上上一步的git换成root就可以实现ssh连接root用户免密了
  • 然后回到服务端
  • 新建git仓库

    mkdir -p /home/git/blog/hexo.git #准备成为Git仓库
    mkdir /home/git/blog/hexo #存储网站文件(文章啦渲染之类的)
    git init --bare /home/git/blog/hexo.git #设为git仓库,--bare代表这是裸库,裸库没有工作区,我们不会在裸库上进行操作,它只为共享而存在
    cd /home/git/blog/hexo.git/hooks //进入该仓库
    vim /home/git/blog/hexo.git/hooks/post-update.sample //配置post-update.sample
    
  • 追加一行

    git --work-tree=/home/git/blog/hexo --git-dir=/home/git/blog/hexo.git checkout -f
    
  • 保存之后更改文件名为post-update
  • 赋予可执行权限(这一步好像需要root用户,前面也是,有的需要root用户,那就切换用户再切换回来就是了,或者直接在命令前面加个sudo更好)

    chmod +x post-update
    

    安装Nginx

  • nginx就是我们的web服务器了
  • 首先进行服务端的系统更新,时间可能有点久

    yum update -y
    
  • 切换git用户,直接使用root用户是不符合安全规范的

    su git
    
  • 安装nginx

    yum install nginx
    
  • 修改配置文件

    vim /etc/nginx/nginx.conf
    
  • 有两个user,都要改成root
  • server_name改成服务器ip地址
  • root改成hexo网站文件存储路径
  • location里面要不要加都随便
  • 看到上面的默认端口是80了吧,我们来看看服务器上有没有这个端口,没有的话选择新建。PS:之前是直接把配置文件的默认端口改成服务器已有的22,但不知道为什么访问直接响应网页走丢

PS:下载nano

  • 一种文本编辑器,其实用vim也一样

    yum install nano
    //下载好之后直接
    nano 文件名 //即可创建文件,然后Ctrl+O保存,Ctrl+X退出
    
  • 修改了Nginx的配置文件nginx.conf后要重启Nginx:nginx -s reload出现错误:

    nginx: [error] open() "/run/nginx.pid" failed (2: No such file or directory)
    
  • 执行其他命令:nginx或nginx -s stop也报错:
  • 这是因为重启nginx后丢失nginx.pid,我们要先停止nginx,首先查询nginx的进程号

    ps -ef | grep nginx
    
  • 其中9011就是进程号了
  • 从容停止nginx

    kill -QUIT 9011
    
  • 在重启之前,我们先检查一下刚才的修改是否正确

    nginx -t -c /etc/nginx/nginx.conf
    
  • 正确的话再执行

    nginx -c /etc/nginx/nginx.conf
    
  • 最后重启

    nginx -s reload
    
  • 浏览器输入ip地址:47.107.237.149
  • 出现这个页面就算成功,不过我们刚才在location下配置类index.html,那个实际是我们自己写在/home/git/blog/hexo下面的一个代替此页面的网页,所以看到那个网页也算对

本地

  • C://用户/14103/.ssh下Git Bash

    vim config

  • 新建config文件并编辑

    Host hexo #SSH主机配置的识别名,配置好后直接"ssh 识别名"即可快速连接
    HostName 47.107.237.149 #SSH主机的地址
    Port 22 #SSH主机端口
    User git #用户,本例是Git
    IdentityFile ~/.ssh/id_rsa #私钥文件的存放地址,建议复制到~/.ssh下统一管理
    
  • 然后修改E://hexo2/_config.yml

    deploy:
    type: git #用户名
    repo: git@hexo:/home/git/blog/hexo.git #Git仓库地址,:符号后为Git仓库服务器路径;hexo可以换成服务器ip地址
    branch: master #分支,由于我们只用Git进行发布,master即可
    
  • 进入E://hexe2,执行

    hexo clean & hexo deploy -g //清除工作区加部署到git
    
  • 浏览器访问

    47.107.237.149:80
    
  • 即可出现我的博客啦~