将 Gitlab 迁移到新服务器

今天把一台服务器上的 Gitlab 换了个地儿, 记录一下遇到的大大小小的各种坑们:

  • 原服务器系统是 Ubuntu, 而新的是 Debian, 各种库版本不一样(从 glibc 开始), 于是 Ruby 的 vender 文件夹显然不能留, 各种清空重新跑 bundle.
  • Gitlab 用到了 Redis, 虽然主要的配置说明里没有用力提及. 因此搬的时候连 Redis 的数据库一起搬过去. (当然主力数据库比如 MySQL 也必须不能忘记啦)
  • /home/git/.ssh/authorized/keys 保存了能用 git 帐号登陆服务器的所有小伙伴的 SSH PubKey 们, 需要一起搬过来
  • gitlab-shell 需要重新安装以走进科学 (只需要跑它那个 bin/install)
  • initscript 脚本和 logrotate 配置都要重新安装不能忘记的说
  • nginx 需要访问 gitlab 的 socket, 而 rsync 过来的目录里因为 exclude 掉了 gitlab/tmp/ 里的内容, 自动新创建的目录默认会变成 700 权限, 导致 nginx 读取失败 – 嗯 chmod 回来

至于其他系统软件包和 ruby 的基本配置就不再赘述了.

最后详细记录下环境:
原服务器: Ubuntu 12.04, 开启了 nginx/git 等等 PPA. 本体是 42qu 的一台 VPS.
新服务器: Debian 7.2, 开启了 dotdeb 仓库. 本体是美团云的一台 VPS.

Apple Magic Mouse 多点触控在 Linux 里的安装与配置

Felix 弄来一只 Apple Magic Mouse 小白, 蓝牙配对上后发现各种scrolling很靠谱, 三键也支持好了, 但是多指动作没有支持…
在各种Google之后, 找到了有人使用 PyMT 来实现 Magic Mouse 多点触控手势的脚本, 由于原脚本(参考资料1)是针对GNOME/compiz的, 而且网上没有靠谱的KDE可用版本, 于是本猫自己Hack了一下…

安装说明:
首先要安装pymt, ArchLinux用户可以直接

yaourt -S pymt

Ubuntu用户可以直接

sudo apt-get install python-pymt

接下来, 配置pymt识别MagicMouse的多点触控:
编辑 ~/.pymt/config
找到 [input] 段, 修改为:

[input]
default = hidinput,/dev/input/event

上面的<n>需要替换成MagicMouse对应的编号, 可以用下面这个本猫写的挫挫的语句察看:

cat /var/log/Xorg.0.log|grep udev|grep -i apple|grep /dev/input/event

然后, 给这个文件(设备?信号?事件? = =不知道怎么称呼了)加上读属性, 以使得pymt可以用当前用户身份读取:

sudo chmod a+r `cat /var/log/Xorg.0.log|grep udev|grep -i apple|grep /dev/input/event|sed -e 's/.*\(\/dev\/input[^\)]*\).*/\1/'`

至此, 可以认为pymt安装好啦!
测试:

python -m pymt.tools.demo

(arch用户自行改为python2 = =)

接下来…可以试试我的脚本啦!

— Changelog:
2011/4/19 – 第二个版本, 增加了三指上下调节系统音量的功能~~
2011/4/19 – 第一个版本, 仅简单实现了双指Swipe Left/Right 切换虚拟桌面的效果.

Continue reading Apple Magic Mouse 多点触控在 Linux 里的安装与配置

Ubuntu 命令行调节屏幕亮度

今天本猫的本本突然开机后最大亮度只能调到30%, 各种漆黑一片纠结无比, 感觉有可能是intel驱动的bug(未确定)…
然后…很笨笨的一度以为是高压条灯管之类的出问题了, 直到某次重启发觉引导界面很亮- –
各种Google之后找到一篇blog及其评论里比较详细的介绍了两种命令行调节屏幕亮度的方法 原理不一样.其中的第一种解决了我屏幕亮度的问题, 第二种让我写出了一个很蛋疼的程序..恩..下面分别介绍.

1, 用setpci命令对显卡设备操作来硬调节亮度:

sudo setpci -s 00:02.0 F4.B=xx

其中的00:02.0来自于

lspci

命令输出结果中显卡对应的序号, 比如我的:

00:02.0 VGA compatible controller: Intel Corporation Mobile 4 Series Chipset Integrated Graphics Controller (rev 07)

而xx对于不同显卡有不一样的取值规律, 在我这里是00最暗, ff最亮(16进制), 而原文作者和我正相反, 读者可以自己试试~~ 🙂

2, 用xgamma来软调节亮度:

xgamma -gamma x

这里x的取值在0.1到10之间, 0.1最暗, 10最亮.

Continue reading Ubuntu 命令行调节屏幕亮度

在 Ubuntu 里用 DVD-RAM 光硬盘

Felix 弄来了一摞光硬碟(DVD-RAM), 打开 Wikipedia 看到了那个夸张的10W次重写和30年不损坏, 感到各种爽, 于是插入光驱随便存了一堆东西进去…
于是, 问题来了: Nautilus 把这张 DVD-RAM 当作普通空光碟了, gvfs 仅挂载了一个空刻录目录(就像WinXP自带的刻录功能一样), 而我把一坨东西拖进去点刻录, 会调用 brasero, 然后提示: 剩余空间不足…
WTF? 我的 DVD-RAM 是双面的, 每个单面也有 4.7G, 怎么可能装不下 3.3G 的不大的(小)电影呢?
于是跑去问谷哥, 悲剧的没有遇到和我遇到同样问题的人(貌似 DVD-RAM 实在太小众了?). 但是大家都纷纷指出(见这里)要用udf这个文件系统..于是我打开 Disk Utility, 点Format, 但是在列表中并没有找到udf这个文件系统…
于是…上命令行吧!

sudo apt-get install udftools

然后看看 Disk Utility 里这光盘的设备在哪里(我的在/dev/sr1), 然后手动建文件系统:

sudo mkudffs --utf8 --media-type=dvdram /dev/sr1

然后你会看到类似这样的输出:

start=0, blocks=16, type=RESERVED 
start=16, blocks=3, type=VRS 
start=19, blocks=237, type=USPACE 
start=256, blocks=1, type=ANCHOR 
start=257, blocks=16, type=PVDS 
start=273, blocks=1, type=LVID 
start=274, blocks=2236173, type=PSPACE 
start=2236447, blocks=1, type=ANCHOR 
start=2236448, blocks=239, type=USPACE 
start=2236687, blocks=16, type=RVDS 
start=2236703, blocks=1, type=ANCHOR 

然后等光驱没动静之后手动弹出一下光盘再插入, Disk Utility 里就会惊喜的看到插入的 DVD-RAM 被识别出来了! 卷标 LinuxUDF 文件系统: udf. 然后用 Nautilus 挂载上来, 就可以和普通可移动磁盘一样操作了:)
PS: 值得一提的是写入速度确实够慢(3M/s), 不过仅仅用来 Data Backup 还是很不错的.

Ubuntu uwsgi + nginx / bottle 的配置方法

首先赞PT大牛帮了很多忙, 本文大部分原型来源于 http://apt-blog.net/moinmoin-on-nginx-via-fastcgi-and-uwgi

UPDATE: 更新到 nginx 1.0 / uwsgi 0.9.6.8 的配置 – 2011/4/15
然而由于现在那几个玩意版本更新挺厉害, 有许多配置都不一样了, 再加上本猫是要让它运行bottle, 所以决定重新整理一下:)

下面这段关于 uwsgi 的介绍 来自PT牛的那篇文章:

uwsgi充当了python解析器的角色,使用wsgi的接口和Python程序交互,这个过程中做了优化,和上层nginx之间则设计了更加轻量的协议。nginx0.8.40以后官方默认带了uwsgi的协议模块,所以使用很方便。

恩, 由上面这段话 我们可以淡定的看出, 官方源里那个残念的0.7.x的nginx肯定是满足不了要求的啦!

Continue reading Ubuntu uwsgi + nginx / bottle 的配置方法

把完美的notify-osd找回来

写在前面: 本文希望通过一个具体的修改编译安装Ubuntu系统软件包的过程 帮助在编译安装时遇到类似问题的盆友解决问题.

恩, 首先呢, 这个问题仅仅针对启用了 ppa:xorg-edgers/ppa 的 alpha tester 盆友…
这个悲剧已经有两个多月(以上)的历史拉(因为两个多月前Felix才忍不住去report了), 我report的错误参见: https://bugs.launchpad.net/ubuntu/+source/pixman/+bug/623272
不过某位大大(Peter Clifton)给出了解决方案, 这里简单解释一下…

首先获得当前版本的notify-osd的源代码:

sudo apt-get source notify-osd

完成后进入目录, 把下面的patch存成文件 然后用patch命令应用上去:

=== modified file 'src/tile.c'
--- src/tile.c	2009-07-31 11:07:29 +0000
+++ src/tile.c	2010-12-06 00:24:55 +0000
@@ -180,7 +180,7 @@
 
 	// top right
 	cairo_matrix_init_scale (&matrix, -1.0f, 1.0f);
-	cairo_matrix_translate (&matrix, -width, 0.0f);
+	cairo_matrix_translate (&matrix, -1.0f * width, 0.0f);
 	cairo_pattern_set_matrix (pattern, &matrix);
 	cairo_rectangle (cr,
 			 width - pad_width,
@@ -193,7 +193,7 @@
 
 	// bottom right
 	cairo_matrix_init_scale (&matrix, -1.0f, -1.0f);
-	cairo_matrix_translate (&matrix, -width, -height);
+	cairo_matrix_translate (&matrix, -1.0f * width, -1.0f * height);
 	cairo_pattern_set_matrix (pattern, &matrix);
 	cairo_rectangle (cr,
 			 pad_width,
@@ -206,7 +206,7 @@
 
 	// bottom left
 	cairo_matrix_init_scale (&matrix, 1.0f, -1.0f);
-	cairo_matrix_translate (&matrix, 0.0f, -height);
+	cairo_matrix_translate (&matrix, 0.0f, -1.0f * height);
 	cairo_pattern_set_matrix (pattern, &matrix);
 	cairo_rectangle (cr,
 			 x,

然后

patch -p1 -i xxx.patch
Continue reading 把完美的notify-osd找回来

找回 Ubuntu Natty 里 Compiz 0.9.2.1 版本丢失的附加特效包

Compiz 更新到 0.9 虽然已经过去挺长时间了, 但是 Ubuntu 源似乎一直没有打算把 plugins-extra 也跟上更新到0.9.2.1版本. 搜索了一阵, 在 LinuxQuestion 找到了一个可行的编译方法以配合系统源里的compiz.
步骤:
1, 到 http://releases.compiz-fusion.org/0.9.2.1/ 下载合适版本的plugins-extra.
传送门: http://releases.compiz-fusion.org/0.9.2.1/compiz-plugins-extra-0.9.2.1.tar.gz

2, 解压之:

tar xzvf compiz-plugins-extra-0.9.2.1.tar.gz
cd plugins-extra

3, 执行下面的命令:

mkdir build && cd build
cmake ..

4, 编辑 CMakeCache.txt

gedit CMakeCache.txt

5, 查找下面的内容:

CMAKE_INSTALL_PREFIX:PATH=/usr/local

替换为

CMAKE_INSTALL_PREFIX:PATH=/usr
Continue reading 找回 Ubuntu Natty 里 Compiz 0.9.2.1 版本丢失的附加特效包

让Ubuntu不在设备变化时将网卡重新编号

如果你和我一样, 常常把硬盘在不同的电脑上插来插去, 或许会烦恼于网卡命名 eth0/eth1, wlan0/wlan1 之类的问题. 如果不喜欢更改电脑后 Ubuntu 自动累加这个计数, 可以用下面的方法设置一下:

sudo mv /lib/udev/rules.d/75-persistent-net-generator.rules /lib/udev/rules.d/75-persistent-net-generator.rules.disabled
sudo mv /etc/udev/rules.d/70-persistent-net.rules /etc/udev/rules.d/70-persistent-net.rules.disabled

这样重启后, 第一张有线网卡总是 eth0, 第一张无线网卡一定是 wlan0 了, conky等东西也不用重新配置啦 🙂

继续我的Ubuntu之旅 (3)

恩,在开头先提醒各位小白鼠: ppa:network-manager/ppa 和 ppa:xorg-edgers/ppa 是两门毒药, 慎装!!
(因为它们的杯具, Felix 重装系统了 =.=||)
这段时间小纠结了一下路由表/服务器方面的问题, 下面是一部分最近的笔记
照例先给个目录:
1, Ubuntu 10.04 Server 短按电源键热关机:
2, Xorg版本过新导致nvidia驱动不加载的workaround
3, HUST/Tsinghua/SJTU的 6in4 tunnel 开启方法
4, 三种HUST能使用的Linux下的锐捷认证工具(mystar/xrgsu/mentohust)
5, 更通用的路由表脚本

1, Ubuntu 10.04 Server 短按电源键热关机:
Ubuntu 10.04 Server 默认没有安装acpid, 先装上:

sudo apt-get install acpid

然后编辑 /etc/acpi/events/powerbtn:

sudo vi /etc/acpi/events/powerbtn

找到下面这行:

action=/etc/acpi/powerbtn.sh

修改为:

action=/sbin/poweroff

然后重启,就大功告成啦:)
参考: http://linux.chinaunix.net/bbs/thread-1113446-1-1.html

Continue reading 继续我的Ubuntu之旅 (3)

Ubuntu 多网环境自动路由表(区别教育网内外) + 分享到多张网卡网络的实现

首先, 感谢 @BOYPT @jimmy_xu_wrk @tjmao @yegle 等朋友的帮忙!

1, 多网环境, Felix 的环境是 VPN over cernet2 + cernet 双网.

2, 自动路由表, 采用 www.nic.edu.cn 的官方 Free IP 数据.
以下是 Felix 用 Python 写的一个小小的自动生成脚本:

import re
import urllib
a=urllib.urlopen('http://www.nic.edu.cn/RS/ipstat/internalip/real.html').read()
b=re.compile("([\d\.]+)\s+[\d\.]+\s+([\d\.]+)")
c=b.findall(a)
m=["#!/bin/bash","OLDGW=$1","NEWGW=$2","route del -net 0.0.0.0 netmask 0.0.0.0","route add -net 0.0.0.0 netmask 0.0.0.0 gw $NEWGW"]
n=["#!/bin/bash"]
for d in c:
    m.append("route add -net "+d[0]+" netmask "+d[1]+" gw $OLDGW")
    n.append("route del -net "+d[0]+" netmask "+d[1])
e=open('gtwcernet',"w")
e.write("\n".join(m))
e.close()
f=open('gtwcernetd',"w")
f.write("\n".join(n))
f.close()

会在当前目录生成 gtwcernet 和 gtwcernetd 两个文件
然后给他们加上执行权限

chmod +x gtwcernet
chmod +x gtwcernetd

前一个是启用自动路由表
Usage: gtwcernet <教育网网关> <VPN/电信网网关>
后一个是禁用自动路由表
Usage: gtwcernetd

Continue reading Ubuntu 多网环境自动路由表(区别教育网内外) + 分享到多张网卡网络的实现
QR Code Business Card