Ubuntu 上搭建 Git 服务器

背景

我发现最近访问 GitHub 越来越慢了,还有就是一些东西不方便直接放到 GitHub 上,于是想到自己搭建一个 Git 服务器。

看了 Git 官方文档后试着自己搭建了一个,不难,现在主要用于同步笔记、博客还有一些代码。

环境

  • Ubuntu 18.04
  • Git v2.17.1

步骤

  1. 在服务器创建一个用户,取名为 git,然后创建所需文件:

    1
    2
    3
    4
    useradd -d /home/git -m git

    mkdir /home/git/.ssh
    touch /home/git/.ssh/authorized_keys
  2. 将客户端的 SSH 公钥(cat ~/.ssh/id_rsa.pub)添加到上面创建的 authorized_keys 文件中,用来免密登录。

  3. 在本地创建裸的 Git 仓库,然后把裸仓库放到服务器上:

    1
    2
    3
    4
    5
    git init project

    git clone --bare project/.git project.git

    scp -r project.git git@ip:repos/project
  4. 搭建完毕,现在仓库的地址是 git@ip:repos/project

  5. 配置远程仓库地址:

    1
    2
    3
    4
    git remote add origin git@ip:repos/project
    git remote set-url origin git@ip:repos/project

    git push --set-upstream origin master

最后

上面的 project 项目在服务器上的 /home/git/repos/project 位置,位置当然可以随意指定。

给 hexo-theme-even 主题点个赞

昨天我在做博客迁移的时候,突然想换一个主题,然后在知乎上看到了现在的这个主题 Even

整体来说主题非常的棒,干净简洁,同时支持配置:

  • 版权信息
  • 百度统计
  • 主题颜色
  • 社交链接图标

照着官方文档安装配置后,部署到了服务器上,顿时心情舒畅了许多,感谢作者🌹。

ps: 如果 hexo generate 后发现修改的配置没有生效,可以尝试先使用 hexo clean 清除缓存。

我现在是把博客部署到了自己的服务器上,搭建了 Git 服务器后,使用 Git Hooks 更新代码、生成静态文件,本地只要 push 即可。后面打算写一下实现方式,先立个 flag。

解决 macOS Catalina 中 Alfred 3 的应用搜索结果重复的问题

昨天我将系统更新到了 macOS Catalina,万幸目前为止没遇到什么大的问题,但是小问题还是有的,例如标题描述的这个。

macOS Catalina 有了专用的系统宗卷:

macOS Catalina 在专属的只读系统宗卷中运行,因此独立于 Mac 上的所有其他数据,并有助于增强 macOS 的可靠性。

打开磁盘工具后就会看到原来的一个宗卷现在变成了两个:
macOS Catalina 磁盘宗卷分为了两个

数据的挂载点变为了 /System/Volumes/Data,因此在使用 Alfred 搜索 App 时,会同时显示旧路径与新路径下的缓存:

As the location for default applications has changed, some apps may appear in the cache in both the old and new location.

Alfred 官方已经给出了解决方法,使用 reload 命令刷新缓存即可。

你可能会用到的 Sublime Text 3 插件

Package Control

https://packagecontrol.io/installation

Sublime Text 包管理器。

All Autocomplete

https://github.com/alienhard/SublimeAllAutocomplete

Sublime Text 默认只提示当前文件中的单词,而安装 All Autocomplete 之后会提示所有打开文件中的单词。

Material Theme

https://github.com/equinusocio/material-theme

一款主题插件,配置方便。

SideBarEnhancements

https://github.com/titoBouzout/SideBarEnhancements

增强对 Sidebar 的文件、目录操作。

Terminal

https://github.com/wbond/sublime_terminal

使用快捷键打开终端,并进入当前文件所在目录,或项目所在目录。可配置打开的终端,例如配置为 iTerm。

Git

https://github.com/kemayo/sublime-text-git

支持在 Sublime Text 内部调用 Git 命令。

GitGutter

https://github.com/jisaacks/GitGutter

Git 文件提示。

Gofmt

https://github.com/noonat/sublime-gofmt

可以配置成保存文件时自动运行 Gofmt 格式化代码。

masOS 上安装 Consolas 字体

我在 Sublime Text、印象笔记等常用软件上,会将 Consolas 设置成默认字体。

macOS 上没有预装 Consolas 字体,不过可以手动安装。

原文在这里,下面是安装方法:

1
2
3
4
5
6
7
8
brew install cabextract
cd ~/Downloads
mkdir consolas
cd consolas
curl -O http://download.microsoft.com/download/f/5/a/f5a3df76-d856-4a61-a6bd-722f52a5be26/PowerPointViewer.exe
cabextract PowerPointViewer.exe
cabextract ppviewer.cab
open CONSOLA*.TTF

如果微软的下载地址失效,可以使用下面的地址:

1
curl -LO https://sourceforge.net/projects/mscorefonts2/files/cabs/PowerPointViewer.exe

又可以开开心心地写代码了😉。

记一次 MySQL 死锁解决过程

代码中要执行一个 SQL 语句,去更新表数据,这个 SQL 并没有在一个事务中,但是每次都会报错:

1
Lock wait timeout exceeded; try restarting transaction

后来我找到了这篇文章,于是使用 SELECT * FROM information_schema.INNODB_TRX 查看事务,发现有五个 trx_stateRunning 的事务,于是再使用 show processlist 查看线程,发现五个事务全部在 show preprocesslist 里面的 sleep 线程中,kill 掉这五个线程,再次执行 SQL 时没有发生死锁,问题得到解决。

解决 yaml_parse_file 函数解析空文件报错的问题

yaml_parse_file 函数用于解析一个 YAML 文件,根据 PHP 官方文档中对于这个函数返回值的描述,函数在失败时会返回 false。

但是我在解析一个空文件时,直接报错了:

1
PHP Warning: yaml_parse_file(): end of stream reached without finding document 0 in php shell code on line 1

后来知道我的 YAML 扩展版本太低了,PHP 的 YAML 扩展在 2.0.3 版本修复了这个 Bug

升级 YAML 扩展后就没有这个问题了,当然也可以使用 set_error_handler 函数接管错误处理。