armbian nginx 部署博客_通过Git将Hexo博客部署到服务器

本文首发于我的个人博客https://orxing.top,欢迎来访
服务器是用的阿里云ECS CentOS,本来是用来部署WordPress的,后来接触了Hexo,就把Hexo直接部署到了GitHub pages和Coding Pages上,但是最近发现Coding pages经常抽风,所以我决定将hexo重新部署回服务器上

基础

  • 使用hexo生成静态文件
  • 在云主机上搭建git环境,并将静态文件通过git上传到云主机
  • 使用git-hooks实现自动部署
  • Nginx用做静态文件服务器,实现外界对博客的访问

d7ff7a8afa9e0ea1d092a047810c9823.png

环境

  • 本地桌面为Win10,使用的终端为cmder,cmder自带git,理论上使用bash也一样
  • 服务器为 CentOS 7 64bit,默认状态,不使用宝塔面板

开始

登录服务器

$ ssh root@123.125.114.144   
#这里假设服务器外网ip为123.125.114.144(悄悄告诉你一个大秘密,这是百度的ip地址) 
#登陆密码就是你拿到服务器一开始设置的密码

安装git和nginx

$ yum install git
$ yum install nginx

添加一个git用户

$ adduser git   #添加git用户
$ chmod 740 /etc/sudoers   #改变sudoers文件的权限为文件所有者可写
$ vim /etc/sudoers   #vim是一个很强大的编辑器,使用方法自行Google

找到root ALL=(ALL) ALL,在它下方加入一行

git ALL=(ALL) ALL

564d7c7c4818f2d6c840e8554ce0241f.png
$ chmod 400 /etc/sudoers   #将其权限修改为文件所有者可读
$ sudo passwd git  #设置git用户的密码

给git用户添加ssh密钥

如果以前使用过给github或者是coding之类的,应该知道这个密钥指的什么,这里我不多说

$ su git    #切换到git用户
$ mkdir ~/.ssh  #创建.ssh文件夹
$ touch ~/.ssh/authorized_keys  #创建authorized_keys文件
$ chmod 600 ~/.ssh/authorzied_keys  #为authorized_keys文件赋予文件所有者可读可写的权限
$ chmod 700 ~/.ssh  #为.ssh文件夹赋予文件夹所有者可读可写可执行的权限
$ vim ~/.ssh/authorized_keys    #将ssh密钥粘贴进去

关闭终端,使用ssh git@123.125.114.144重新登录服务器,测试是否能不要密码登录到git用户

创建git仓库并使用git-hooks实现自动部署

$ sudo mkdir /var/repo    #新建目录,这是git仓库的位置
$ sudo mkdir /var/www         #
$ sudo mkdir /var/www/hexo  #这是博客源文件的目录
$ cd /var/repo  #转到git仓库的文件夹
$ sudo git init --bare blog.git #创建一个名叫blog的仓库
$ sudo vim /var/repo/blog.git/hooks/post-update

增加下面两行,当我们从本地push上去时,git-hooks会自动执行下列命令,这是git自带的的方法,表示在/var/repo/blog.git中对/var/www/hexo执行checkout -f命令,可以在我们每次 push 完之后,把部署目录更新到博客的最新状态,这里我也有点糊涂,不太懂为什么checkout的作用是这个

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

然后给权限

$ cd blog.git/hooks/
$ sudo chown -R git:git /var/repo/      #进行文件夹及其子文件所有者变更
$ sudo chown -R git:git /var/www/hexo  #进行文件夹及其子文件所有者变更,我也不知道为什么git:git
$ sudo chmod +x post-update  #赋予其可执行权限

其实还有一种办法,即push后,先删除之前的文件,再clone仓库到/var/www/hexo,可以自行尝试,链接在此

配置nginx

$ sudo nginx -t  #查看nginx配置路径,宝塔面板安装nginx非下列路径
$ sudo vim /etc/nginx/nginx.conf

找到server配置块,主要配置listen, server_name, root三个字段。listen是端口,server_name是你的域名orxing.top ,root为博客源文件路径 /var/www/hexo

域名没备案,不允许使用80端口,不能添加server_name,端口可以换为任意端口,如果你的80端口被占,也可以修改为其他端口,自定义端口的填一个listen即可,另一个可以删除

d035ff3d0d0240118b73d636aaef5932.png

域名备案了,那把域名填上,并且去域名控制台将域名解析到你的服务器ip上

da628ecd8234f844e36fc94b0865cf38.png

由于阿里云服务器默认没有开启80端口,所以你必须去自行开启,其他端口也是同理

给git用户设置权限

给git用户设置权限,使其不能通过ssh git@123.125.114.144登录,也不能通过su git切换到git用户,

git操作不影响

$ sudo vim /etc/passwd
#修改最后一行
#将/bin/bash修改为/usr/bin/git-shell

a418327bec2ce078935d118ec734c251.png

参考链接

  • 阿里云ECS环境下搭建基于Hexo+Git+Nginx的静态博客平台
  • Hexo搭建技术博客部署在阿里云服务器上教程
  • Git 如何针对其他路径下的Repository 执行指令

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/503669.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

shell把mysql每句导出_shell实现,将mysql每个存储过程导出为单个文件_MySQL

#shell实现,将mysql中存储过程代码直接导出为文件dbcn"mysql -h172.16.1.194 -uroot -p123456 ";dbBCReport_Sync_Executor;ii0;ct$dbcn -N -e " select count(1) from mysql.proc as p where 11 and p.db$db and p.type like P%;";mkdir -p /c…

python弹出窗口后卡死_python的tkinter模块GUI编程为啥用了while循环之后就会使得程序出现卡死未响应崩溃?...

这位同学,首先无代码无真相。只能在这里猜测一下,你在GUI界面中点击了某个按钮,调用的函数然后触发了某种while循环,这个时候前台GUI将“未响应”卡死。不过一旦调用函数的while循环结束,GUI界面将再次可用。 不使用线…

python 字符串格式化语法_Python基础语法--字符串格式化

PS:在学习到Python的字符串格式化一些个人的总结,利用字符串格式化可以更好的对代码结果进行格式化输出语法栗子 例子中通过接收用户输入的值,赋值给sex_input和age_input生成两个变量,并根据判断输出相应的语句,and是…

springmvc跳转html_SpringMVC基础(三)

本篇文章主要整理了数据处理、乱码处理和Json的相关知识。参考的狂神说的公众号以及视频。所有代码亲测有效。数据处理主要包括处理提交的数据以及将数据显示到前端。处理提交的数据一般有三种情况:(1)提交的域的名称和方法的参数名称一致时:RequestMapp…

mysql-5.7.24初始化数据库_MySQL5.7.28 初始化数据库

1)初始化随机密码 mysqld --initialize[roothost-172-16-61-102 bin]# ./mysqld --initialize2020-02-15T07:01:38.309015Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documenta…

查看本机所有请求_【松勤教育】Fiddler抓包-只抓APP的请求

fiddler抓手机app的请求,估计大部分都会,但是如何只抓来自app的请求呢?把来自pc的请求过滤掉,因为请求太多,这样会找不到重要的信息了。环境准备:1.电脑上已装fiddler2.手机和电脑在同一局域网一、设置1.fi…

ubuntu18.04升级python_Ubuntu18.04一次性升级Python所有库的方法步骤

pip是什么pip 是 Python 包管理工具,该工具提供了对Python 包的查找、下载、安装、卸载的功能。升级pip版本默认Ubuntu自带的pip (pip 9.0.1)是基于Python2.7的版本我们需要重新安装基于Python3的pip:sudo apt-get install python3-pip升级pip3版本&…

icmp报文格式_TCP/IP(二):IP报文格式详解

1. IP 报文格式0bit是指位于最左边的最高位,31bit是指位于最右边的最低位,4个字节的32bit按照 bigendian(大端格式:低字节位于高地址)字节序传输:首先是0~7bit,其次 8~15bit,然后 16~23bit,最后…

java多线程交替打印_java实现多线程交替打印

本文实例为大家分享了java实现多线程交替打印的具体代码,供大家参考,具体内容如下notifywait实现import org.junit.Test;import java.util.concurrent.*;public class TestThreadLocal {Object o new Object();CountDownLatch cnew CountDownLatch(2);T…

plot函数_时间序列:python移动窗口函数前言

一起学习,一起成长!在移动窗口(可以带有指数衰减权数)上计算的各种统计函数也是一类常见于时间序列的数组变换。它们称为移动窗口函数,其中还包括那些窗口不定长的函数(如指数加权移动平均)。跟其他统计函数一样,移动窗口函数也会…

织梦检测环境不支持mysql_本地测试织梦dedeCMS 安装环境

本地测试织梦dedeCMS 安装环境2018-08-21 134织梦好多想本地测试织梦DEDECMS网站,今天介绍如何在本地安装测试环境,安装织梦系统。第一:环境测试 DedeAMPZ 织梦官方测试软件DedeAMPZ 是直接整合PHP Apache MySql 的服务器环境管理软件&…

一页纸项目管理模板_项目管理职场必备读物!这一次全部送给你!

“大圣,此去欲何?”“踏南天,碎项目。”“若一去不归...”“便一去不复返归!”hello~hello~大家好上一次找到的一篇项目管理书籍送给大家毫无意外地大家纷纷在后台留言要求我还有没有更多的书籍答应你们,这次一次性全部…

浏览器无法运行java_window_浏览器无法运行JAVA脚本的解决方法,1、浏览器无法运行JAVA脚本的 - phpStudy...

浏览器无法运行JAVA脚本的解决方法1、浏览器无法运行JAVA脚本的解决方法。rundll32.exe advpack.dll /DelNodeRunDLL32 %systemroot%System32dacui.dllrundll32.exe advpack.dll /DelNodeRunDLL32 %systemroot%Catrooticatalog.mdbregsvr32 /s comcat.dllregsvr32 /s asctrls.o…

python android自动化_python在Android下的自动化测试用法

# This Python file uses the following encoding: utf-8from com.android.monkeyrunner import MonkeyRunner,MonkeyDevicefrom com.android.monkeyrunner.easy import EasyMonkeyDevice #提供了根据ID进行访问from com.android.monkeyrunner.easy import By #根据ID返回PyObj…

第五届蓝桥杯校内选拔赛试题java组_第五届蓝桥杯校内选拔赛试题java组

第五届“蓝桥杯”全国软件和信息技术专业人才大赛校内选拔赛试题(Java组)第一部分:准备工作:1、在D:盘中建立一个以自己“学号姓名”命名的考生文件夹。如:学号:123456,姓名:张三,则…

nfs需要开通什么端口_创业板开通需要什么条件?开通创业板门槛,要怎么样开通创业板?...

开通创业板需要什么条件,创业板要怎么开通?根据这两个问题进行详细分析创业板股票开通的条件和具体怎么开通,开通创业板之前必须要满足创业板开通条件。一、旧创业板开通条件就得创业板开通是非常简单的,只要满足以下两点&#xf…

java自学报告_Vi,Java,Ant和Junit自学报告

vi自学报告概述vi 编辑器是所有 Unix 及 Linux 系统下最基本的编辑器,它直接以命令行窗口作为显示界面。vim是vi的升级版,完全兼容vi并提供了一些新的特性。因为vi、vim完全脱离鼠标而使用纯键盘控制,所以熟练以后能大大提高编辑效率。vi的模…

java开发文档怎么写_程序员该不该写技术文档,怎么写文档,易懂又能提升自己...

最近公司项目的调用量突然涨了一大波,很多系统都纷纷扛不住了,于是需要对系统进行优化,系统优化的第一步,便是梳理业务!在这个过程中,经常出现了这样一些情况,发现数据库的某些字段,…

java矩阵类_java矩阵类,矩阵的乘法

问题如下我采用的是3重循环,先计算的列的结果,应该还可以先计算行的结果,然后求出矩阵的乘法。没有过多的技巧,就是循环的使用。相关的codepackage day20180728;import java.util.Scanner;class Matrix{private int m,n;private i…

python个人网站系统_利用基于Python的Pelican打造一个自己的个人纯静态网站

其实呢这么多年以来我一直建议每个有技术追求的开发者都要有写技术博客记笔记的良好习惯,一来可以积累知识,二来可以帮助别人,三来可以把开发中遇到的问题记录用来自省,第四可以通过交换友链来结识更多的技术领域的同仁。之前我曾…