hexo网站部署到云服务器的详细步骤新手指南

前段时间薅羊毛了腾讯云的羊毛,花了360软妹纸买了6年的云服务。。。
打算把以前托管在github上的hexo部署到个人云服务器。折腾了良久,便有了以下的文章。

一、环境安装

1.1 node js 安装

yum install gcc-c++ make
yum -y install nodejs

验证:

node -v
npm -v

1.2 安装git、nginx

Git 用于版本管理和部署,Nginx 用于静态博客托管。

yum install git nginx -y

1.3 安装hexo

  • 我们使用 Node.js 的包管理器 npm 安装 hexo-cli 和 hexo-server

    npm install hexo-cli hexo-server -g

hexo-cli 是 Hexo 的命令行工具,可用于快速新建、发布、部署博客;hexo-server 是 Hexo 的内建服务器,可用于部署前的预览和测试。-g 选项,表示全局安装。

  • 验证

    hexo

二、创建git环境

参考地址

2.1 在云服务器上创建一个 GIT 用户,用来运行 GIT 服务

  • 创建用户:adduser git

  • 设置密码:passwd git

2.2 创建证书

  • 切换到git用户:su git

  • 创建.ssh目录:mkdir .ssh && chmod 700 .ssh

  • 然后在云服务创建authorized_keys公钥保存文件:touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys
    __ tip: __ 公钥保存文件authorized_keys是一行添加一个

2.3 创建git仓库目录

创建一个名为blog的git仓库

mkdir /var/repo
cd /var/repo
git init --bare blog.git

2.4 配置 GIT HOOKS

vim /var/repo/blog.git/hooks/post-receive

添加

#!/bin/sh
git --work-tree=/var/www/hexo --git-dir=/var/repo/blog.git checkout -f

然后保存退出,并设置权限

chmod +x /var/repo/blog.git/hooks/post-receive

2.5 改变 BLOG.GIT 目录的拥有者为 GIT 用户

chown -R git:git blog.git

2.6 创建静态文件目录并将2.3步骤生成的git仓库链接到静态文件目录下

  • 创建静态文件目录(文章网页):mkdir /var/www/hexo

  • 链接git仓库:chown -R git:git /var/www/hexo

  • 配置权限:chmod -R 755 /var/www/hexo
    这样git仓库更新便会自动同步到hexo目录下

2.7、为了安全考虑,禁用GIT用户的SHELL 登录权限配置(下面两个步骤非常重要,否则客户端总是提示密码错误!!!)

  • 首先你必须确保 git-shell 已存在于 /etc/shells 文件中

    /bin/sh
    /bin/dash
    /bin/bash
    /bin/rbash
    /usr/bin/tmux
    /usr/bin/screen
    /usr/bin/git-shell # 添加你的git-shell
    ```

    • 使用命令which git-shell判断系统是否安装了git-shell。如果已经安装,则返回git-shell的安装目录,如:/usr/bin/git-shell;如果未安装则需要安装git-shell命令,安装命令:yum install git

    • 判断shells文件是否存在,判断命令:cat /etc/shells

    • 如果文件不存在或没有/usr/bin/git-shell,则需要使用vim增加这个路径:
      sudo vim /etc/shells,在最后一行添加git-shell路径

      # /etc/shells: valid login shells
  • 现在你可以使用 chsh 命令修改任一系统用户的shell权限了
    现在我们修改第一步中创建的git用户的登录权限,禁止git用户使用shell权限:
    终端中输入sudo chsh git
    [图片上传失败...(image-86e8df-1521642804894)]

    然后在Login Shell [/bin/bash]: 后输入git-shell路径/usr/bin/git-shell

修改完成后验证: vim /etc/passwd找到类似git:x:1000:1000:,,,:/home/git:/usr/bin/git-shell,看看git用户是否是以git-shell结尾

  • 这样,git用户就只能使用SSH连接对Git仓库进行推送和拉取操作,而不能登录机器并取得普通shell命令

2.8 测试

当上述步骤都完成后,我们就可以测试下git服务器是否部署成功,最简单的方法便是使用clone来校验
用户电脑(window or mac)git客户端执行clone操作git clone git@服务器ip:/var/repo/blog.git
当出现下面这种框,然后输入我们在第一步时创建git这个用户的密码就能成功clone了。

git_server

git_server

如果clone成功,表示git服务器搭建成功

三、hexo配置

打开hexo博客目录,编辑_config.yml文件
修改repository为:

deploy:
  type: git
  repository: git@ip或域名:/var/repo/blog.git
  branch: master

然后执行hexo g -d将文件上传到你部署的服务器上,如果上传成功,将如下图所示:
article_upload_finish.png

四、nginx配置

最后,为了能让浏览器能直接访问静态页面,需要使用nginx将端口或域名指向hexo静态文件目录

4.1 修改 NGINX 的 DEFAULT 设置

  • ubuntu

    vim /etc/nginx/sites-available/default
  • centos

    vim /etc/nginx/conf.d/blog.conf

注意:不同版本的nginx或系统,nginx的配置文件不一定相同,根据具体情况来修改配置

4.2 将其中的 ROOT 指令指向 /var/www/hexo 目录(也就是GIT钩子目录)

server {
    listen 80;
    listen [::]:80;
    root /var/www/hexo; # 修改的地方
    server_name laoyuyu.me www.laoyuyu.me; # 如果需要改域名访问,修改server_name 为域名便可
    location / {
            # First attempt to serve request as file, then
            # as directory, then fall back to displaying a 404.
            try_files $uri $uri/ =404;
    }
}

4.3 最后重启服务,让NGINX生效

service nginx restart

4.4 nginx 常见错误

我在配置完Nginx后,启动的时候总是无法正常访问到我的web应用,查看日志文件(/var/log/nginx/error.log)后发现:

connect() to 127.0.0.1:8080 failed (13: Permission denied)

从这个错误信息中可以看出是访问权限的问题,解决办法如下:

vi /etc/nginx/nginx.conf
#user nginx;
user root;

其实就是将nginx的用户修改为root用户即可,当然也可以为nginx用户增加相应的权限。

如果你也一样使用的是阿里云服务器,那么可以在这里领取一下代金券

(0)

相关推荐

  • hexo部署云服务器(华为云 宝塔 hexo matery)

    Hexo部署华为云 准确来说,这部分是介绍,如何将hexo部署到云服务器.也就说这部分是面向那些想把自己的博客网站放到自己的云服务器上运行的朋友们! 云服务器 云服务器配置 云服务器 参数 Linux ...

  • PHP中环境变量的操作

    PHP中环境变量的操作 在 PHP 中,我们可以通过 phpinfo() 查看到当前系统中的环境变量信息(Environment).在代码中,我们也可以通过两个函数,查看和修改相应的环境变量信息. g ...

  • FristiLeaks v1.3靶机渗透

    靶机下载地址: https://download.vulnhub.com/fristileaks/FristiLeaks_1.3.ova.torrent https://download.vulnhu ...

  • 申请Let's Encrypt永久免费SSL证书

    Let's Encrypt简介 Let's Encrypt作为一个公共且免费SSL的项目逐渐被广大用户传播和使用,是由Mozilla.Cisco.Akamai.IdenTrust.EFF等组织人员发起 ...

  • oh my zsh安装过程、还原和安装失败的问题解决

    oh my zsh shell的类型有很多种,linux下默认的是bash,虽然bash的功能已经很强大,但对于以懒惰为美德的程序员来说,bash的提示功能不够强大,界面也不够炫,并非理想工具. 而z ...

  • 将hexo个人博客部署到个人云服务器的方法步骤

    使用 hexo 搭建一个简约的个人博客并部署到云服务器上. 环境简介 我使用的是 ubuntu 系统,使用的是阿里云服务器ECS,域名是已经备案的 远程连接使用的 xshell 以及 vscode s ...

  • Docker安装solo博客部署到云服务器教程

    目录 1. Docker 部署 2. 日志配置 3. Nginx 反向代理 Solo 是一款小而美的开源博客系统,专为程序员设计.Solo 有着非常活跃的社区,可将文章作为帖子推送到社区,来自社区的回 ...

  • 把你的shiny网页工具部署在云服务器

    之前我在生信菜鸟团已经发布的:购买入门级服务器免费送Linux直播培训服务 ,提到了可以每个月花几块钱购置一款<1核2G服务器>标准品,既可以练习Linux命令,也可以打搭建一个博客:五分 ...

  • 数据湾干货分享——搭建DHCP服务器的详细步骤

    什么是DHCP服务器? 指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码. 所以DHCP服务器分为以下三点: IP地址(例:192.168.1.0) ...

  • FTP服务器搭建详细步骤

    前言: FTP服务器(File Transfer Protocol Server)是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务. FTP是File Transfer Prot ...

  • 腾讯云服务器搭建wordpress网站的两种方式(详细图文新手版)

    对于建站新手来说,使用云服务器的上手难度要比云虚拟主机大一些,因为虚拟主机都有一个操作面板,所以使用起来更简单些. 但从灵活性和性能方面来看,选择云服务器有更大的优势,而且现在使用云服务器的个人和企业 ...

  • 再见云服务器!教你将 Python 脚本快速部署在手机上(详细)

    再见云服务器!教你将 Python 脚本快速部署在手机上(详细)

  • 香港云服务器影响国内网站优化吗?

    香港云服务器影响国内网站优化吗?香港云服务器一直以来都以免备案.省时省力.开通即用等优势被大众喜爱,大多数企业或者个人使用香港云服务器都是为了优化,以在互联网上接单为主,但近年由于国内政策让很多优化人 ...