故梦丶
2025-12-18
点 赞
1
热 度
13
评 论
1

Hexo部署到个人服务器

  1. 首页
  2. 技术
  3. Hexo部署到个人服务器

文章摘要

智阅GPT

Hexo部署到个人服务器

一、搭建一个Git服务端

1. 安装Git及创建用户
# 安装Git
yum install git

创建一个git用户组和用户,用来运行git服务

groupadd git
adduser git -g git

禁止git用户登录:

修改 /etc/passwd文件,修改

# 找到这句:
git:x:503:503::/home/git:/bin/bash

改为:

git:x:503:503::/home/git:/bin/git-shell

2. 创建证书登录
mkdir /home/git/.ssh
chmod 700 /home/git/.ssh
touch 700 /home/git/.ssh/authorized_keys
chmod 600 /home/git/.ssh/authorized_keys

注意,如果是采用的 sudo方式来创建git和相应的文件的,需要设置 /home/git/.ssh/的owner为git,否则还是每次要输入密码的。

# owner改为git
sudo chown -R git:git /home/git/.ssh/

编辑 /home/git/.ssh/authorized_keys,把客户端的公钥放进去,1个公钥1行。

附:如何创建私钥:

# 创建私钥,文件位于用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件
ssh-keygen -t rsa -C "youremail@example.com"
3. 初始化git仓库
cd /home
mkdir gitrepo
chown git:git gitrepo/
cd gitrepo

创建一个空的Git仓库,服务器上的Git仓库通常都以.git结尾

git init --bare blog.git

将仓库所属用户改为git

chown -R git:git blog.git

4. 克隆仓库

在另一台电脑上(下面称为:Client),安装git,并且运行下面的命令:

git clone git@10.123.123.123:/srv/gitrepo/project.git
5. 验证安装
# 在本地Client的project目录下,创建一个文件:text.txt,内容随意,然后上传到远端:
git push origin master

在本地Client的另外一个目录下,克隆一下:

git clone git@10.123.123.123:/srv/gitrepo/project.git

6. 常用Git命令
git add . 添加所有文件  注意有个 . 
git commit -m '注释' 提交本地
git push origin master提交给默认分支
git -rm 删除
git pull origin master 从默认分支下载
git branch -v 查看所有分支

二、后续配置

1. 本地_config.yml配置

将_config.yml中deploy配置修改为服务器自己生成的个人仓库地址;例:

deploy:
  type: git
  message: update
  repo: git@101.34.70.247:/home/gitrepo/blog.git
  branch: master
2. 配置Git脚本

成功推送到自己的仓库后;需要利用脚本将仓库的public资源拉取到一个文件夹下,作为Nginx后面在配置的映射地址;进入配置的仓库下的Hooks文件夹;例:

cd /home/blog.git/hooks

touch post-receive

vim post-receive

写入以下脚本:

#!/bin/sh
GIT_REPO=/home/gitrepo/blog.git
TMP_GIT_CLONE=/home/gitrepo/tmp/blog
PUBLIC_WWW=/home/gitrepo/project/blog

rm -rf ${TMP_GIT_CLONE}
git clone $GIT_REPO $TMP_GIT_CLONE
rm -rf ${PUBLIC_WWW}
cp -rf ${TMP_GIT_CLONE} ${PUBLIC_WWW}

脚本内容是为了让Git仓库每次检测到push行为后,将最新的资源文件Git clone在你要访问的文件夹下。

并且需要修改文件夹的读写权限,不然是无法自动执行该脚本:

sudo chown -R root:git /home/gitrepo/tmp
chmod -R g+w /home/gitrepo/tmp

3. 配置Nginx
server {                                                                         
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    root /home/gitrepo/project/blog;  
                                          
    server_name 域名或IP;  
                                   
    access_log  /srv/nginxlog/blog_access.log;
    error_log   /srv/nginxlog/blog_error.log;                                
    location ~* ^.+\.(ico|gif|jpg|jpeg|png)$ {                      
        root /home/gitrepo/project/blog;                              
        access_log   off;           
        expires      1d;                      
    }                                                                        
    location ~* ^.+\.(css|js|txt|xml|swf|wav)$ {                             
        root /home/gitrepo/project/blog;                                                  
        access_log   off;                                                    
        expires      10m;                                                    
    }                                                                        
    location / {                                                             
        root /home/gitrepo/project/blog;                                          
        if (-f $request_filename) {                                      
           rewrite ^/(.*)$  /$1 break;                              
        }                                                                
    }             
}


成功是一时的,但失败和平凡是我们生命的主旋律,我们在平凡的路上,一直和你们相伴!

故梦丶

intp 逻辑家

站长

具有版权性

请您在转载、复制时注明本文 作者、链接及内容来源信息。 若涉及转载第三方内容,还需一同注明。

具有时效性

目录

欢迎来到故梦丶的站点,为您导航全站动态

33 文章数
3 分类数
3 评论数
8标签数
最近评论
测试人

测试人


不错

故梦丶

故梦丶


1111

热门文章