Zervan的小站 Zervan的小站
首页
  • 测评

    • 蓝牙耳机测评
  • 渗透

    • 网络渗透学习指南
  • 前端

    • 学习web开发
  • 版本控制与管理

    • Github入门与实践
  • 博客开发指南

    • 利用GitHub建立博客
  • 网文梗概-序
  • 我们的文学之路
  • 《世界观体系》
  • 《人物设定集》
  • 《诗集》
  • 《素材》
  • universe

    • 新冠疫情与外星人
  • human

    • 人的自由意志论
  • social

    • 科技的未来
  • school

    • 我们的大学
  • philosophy

    • 关于虚无主义
  • 日志
  • 支持我们
  • 友情链接
about
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Zervan

天下最普通的人之一
首页
  • 测评

    • 蓝牙耳机测评
  • 渗透

    • 网络渗透学习指南
  • 前端

    • 学习web开发
  • 版本控制与管理

    • Github入门与实践
  • 博客开发指南

    • 利用GitHub建立博客
  • 网文梗概-序
  • 我们的文学之路
  • 《世界观体系》
  • 《人物设定集》
  • 《诗集》
  • 《素材》
  • universe

    • 新冠疫情与外星人
  • human

    • 人的自由意志论
  • social

    • 科技的未来
  • school

    • 我们的大学
  • philosophy

    • 关于虚无主义
  • 日志
  • 支持我们
  • 友情链接
about
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 测评

  • 渗透

  • 工具

  • 前端

  • 英语考试攻略

  • 区块链投资

  • 版本控制与管理

    • 博客开发指南

      • 部署博客-GitHub Pages
      • Nginx安装配置-Ubuntu2004
      • MySQL的安装及使用-Ubuntu2004
      • 服务器上的Git-配置服务器
        • 创建一个Git用户
        • 限制git用户的shell
        • 创建blog 对应的git仓库
        • 配置git-hooks
        • 创建静态文件目录,并赋予权限
        • 测试
        • 配置hexo
        • nginx配置http强制跳转https
          • rewrite 方法
      • 静态Blog的theme开发
      • 发布dll
      • 修改nginx_conf部分配置
      • 关于 Nodejs
    • Github入门与实践
    • GitHub资源使用指南
    • Git初学指南
    • license相关
    • Git实际操作
  • code
  • 版本控制与管理
  • 博客开发指南
Zervan
2022-01-24

服务器上的Git-配置服务器原创

来源https://git-scm.com/book/zh/v2/%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E7%9A%84-Git-%E9%85%8D%E7%BD%AE%E6%9C%8D%E5%8A%A1%E5%99%A8

  1. 在服务器上搭建Git环境,创建Git仓库
  2. 在主机生成blog(hexo or vuepress)静态文件,通过与服务器连接,推到服务器上的Git仓库
  3. 通过git-hooks实现自动部署到网站资源目录
  4. Nginx做静态文件服务器,实现外界对网站资源目录的访问

# 创建一个Git用户

创建一个git用户,并在home目录下建立一个.ssh目录,赋予其700权限。

sudo adduser -m git
su git
mkdir ~/.ssh && chmod 700 ~/.ssh
touch ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys

然后只需要将ssh连接的公钥复制到authorized_keys文件中就可以通过ssh 连接git用户了

接着,我们需要为系统用户 git 的 authorized_keys 文件添加一些开发者 SSH 公钥。 假设我们已经获得了若干受信任的公钥,并将它们保存在临时文件中。

创建用户并配置其仓库
创建用户 useradd git
设置密码 passwd git
切换用户 su git
进入git用户的家目录 cd /home/git/
项目存在的真实目录(当然你可以创建在其他地方) mkdir -p projects/blog
创建文件夹 mkdir repos && cd repos
创建一个裸露的仓库 git init --bare blog.git
cd blog.git/hooks
创建 hook 钩子函数,输入了内容如下 vi post-receive 
-------------分割线不需要复制------------- 
#!/bin/sh git --work-tree=/home/git/projects/blog --git-dir=/home/git/repos/blog.git checkout -f 
-------------分割线不需要复制-------------

按住ESC,然后输出`:wq`可以保存退出哦! // 为刚才的文件添加可执行的权限 chmod +x post-receive // 退出到 root 登录 exit  // 添加权限 chown -R git:git /home/git/repos/blog.git

一、通过Git生成SSH密钥

// 假如没有设置git的全局信息需要先设置 设置过了可以忽略
git config --global user.name "yourname"
git config --global user.email youremail@example.com
// 生成SSH密钥
ssh-keygen -t rsa -C "youremail@example.com"
// 禁用自动转换,这个不设置后面上传时会出现警告
git config --global core.autocrlf false
  1. 命令,不过无妨,既然不能使用命令,那么我就手动。如果你上面的两个命令没有问题,那么可以跳过我手动建立信任关系的过程。 手动设置:

     依次执行以下命令
    切换到git用户    su git 
    进入家目录,如果没有.ssh目录,那么需要创建。如果存在直接进入即可    cd ~  
    创建.ssh目录    mkdir .ssh  
    赋予权限    chmod 700 .ssh/   
    进入.ssh目录 cd .ssh  
    编辑一个名为authorized_keys的文件,并写入公钥(id_rsa.pub)内容 vi authorized_keys 
    添加完成后赋予权限 chmod 600 authorized_keys
    

    图片中的命令如果与给出代码命令有出入,请以给出代码为准,图片仅作参考。

    1. 在自己电脑测试能否连接成功。 ssh git@server_ip此时登录就需要密码了。

    完成以上步骤后通过ssh git@server_ip连接服务器是不需要密码的。如果还是需要密码,请检查你是否遗漏的哪一步没有做

  2. 为了安全,禁用 git 用户的 shell 登录权限。从而只能用 git clone,git push 等登录 在服务器端输入以下命令: // 如果不是root用户请切换至root用户 su root // 查看 git-shell 是否在登录方式里面 cat /etc/shells // 查看是否安装 which git-shell vi /etc/shells // 添加上2步显示出来的路劲,通常在 /usr/bin/git-shell

修改/etc/passwd中的权限

修改passwd文件 vi /etc/passwd

将原来的 git❌1000:1000::/home/git:/bin/bash

修改为 git❌1000:1000::/home/git:/bin/git-shell

# 限制git用户的shell

上面创建的git用户可以通过ssh连接,进行任何操作。为了安全性,我们需要将git用户的活动限制在与Git相关的范围,也就是把git用户的shell改成 git-shell

sudo chsh git -s $(which git-shell)

当然通过修改/etc/profile也可以达成这一目的。

# 创建blog 对应的git仓库

在 /var/repo下,创建一个空的blog.git仓库,请灵活替换。

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

# 配置git-hooks

也就是配置git推送后执行的脚本

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

添加

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

意思是从blog.git仓库覆盖掉/var/hexo目录,达到更新的目的。为其添加执行权限

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

改变blog.git目录的拥有者

chown -R git:git blog.git

# 创建静态文件目录,并赋予权限

mkdir /var/www/hexo
chown -R git:git /var/www/hexo
chmod -R 755 /var/www/hexo

# 测试

配置完git后,可以通过git clone git@<ip地址或域名>:/var/repo/blog.git来测试git ssh

# 配置hexo

打开hexo blog的目录,修改_config.yml文件,然后就可以使用npx hexo clean && npx hexo g -d进行生成部署了

deploy:
  type: git
  repository : git@&lt;ip地址或与域名>:/var/repo/blog.git
  branch: master

# nginx配置http强制跳转https

很多网站虽然支持 https, 但是直接在浏览器地址栏输入网址后, 默认仍是以 http 协议去访问的, http 强制跳转 https 的需求应运而生,

# rewrite 方法

这是最常用的实现方法, 将所有 http 请求通过 rewrite 重定向到 https 即可

进入nginx.conf文件下

vim /usr/local/nginx/nginx.conf
或
vim /etc/nginx/sites-available/default

打开之后文件,可以将没用的东西都删除掉,删除的时候注意,括号要对应起来。

然后进行配置,输入:

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
  server {
  #监听443端口
    listen 443 ssl;
    #index index.html index.htm;
    #access_log  /var/log/nginx/docs.log  main;
    #你的域名
    server_name zervan.cn; 
    ssl on;
    #ssl证书的pem文件路径
    ssl_certificate   /etc/nginx/cert/7105204_zervan.cn.pem;
    #ssl证书的key文件路径
    ssl_certificate_key /etc/nginx/cert/7105204_zervan.cn.key;
    location / {
      root /var/www/hexo;
     #proxy_pass  http://公网地址:项目端口号;
    }
}

server {
    listen 80;
    server_name zervan.cn;
    #将请求转成https
    rewrite ^(.*)$ https://$host$1 permanent;
     # return 302 https://$host$request_uri;
}
}

###
 server {

    listen 443 ssl;

    server_name zervan.cn; 

    ssl_certificate   /etc/nginx/cert/7105204_zervan.cn.pem;

    ssl_certificate_key /etc/nginx/7105204_zervan.cn.key;
    location / {
      root /var/www/hexo;

    }
}
server {
        listen 80 default_server;
        listen [::]:80 default_server;
        root /var/www/hexo;

        server_name _;
        location / {
                try_files $uri $uri/ =404;
        }
}

注意:这里需要在安全组中开放443端口。

配置完成,重启nginx服务。

编辑 (opens new window)
#git
上次更新: 2023/3/6 17:05:49
MySQL的安装及使用-Ubuntu2004
静态Blog的theme开发

← MySQL的安装及使用-Ubuntu2004 静态Blog的theme开发→

最近更新
01
修改nginx_conf部分配置
02-22
02
高学历宗教人士
12-04
03
理性思维
12-04
更多文章>
Zervan的小站 · VERSION: 1.0.128 · 基于vilivala构建 | pv と uv | Copyright © 2021-2023 | 鲁ICP备2021036977号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式