标签 软件 下的文章

GitLab,是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。

它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序(Wall)进行交流。它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。

系统需求与安装前的准备

操作系统

Gitlab 官方提供支持的操作系统有:

  • Ubuntu Linux
  • Debian/GNU Linux

需要给官方支付费用而支持的操作系统有:

  • Red Hat Enterprise Linux (RHEL)
  • CentOS
  • Oracle Linux

官方不提供支持,但是可以已经得到第三方支持的操作系统有:

  • Arch Linux
  • Fedora
  • Gentoo

其它的如 FreeBSD 、Mac OS X等操作系统现在已经有成功配置的案例了,但是在BSD或者Unix系统上的安装配置流程相当的繁琐,如果你确定要在这些操作系统上面安装的话,请一定要做好耐心的准备。

Ruby

GitLab 是基于 Ruby on Rails 开发的程序,至本文撰写止(2014/01/12),GitLab最新版本要求Ruby 的版本达到 1.9.3 或者 2.0+ ,对于类似 JRuby 或者 Rubinius 等非原生的 Ruby 版本,也有安装成功的案例,但是同样需要你做大量的工作,因为 GitLab 使用了大量的原生 Gem。

硬件要求

CPU 要求

  • __100__用户以下,单核心CPU即可满足要求
  • 超过__100__用户,推荐至少使用双核心CPU
  • 超过__1000__用户,推荐至少使用4核心CPU
  • 超过__10000__用户,推荐至少使用8核心CPU

内存要求

  • GitLab最低要求(运行缓慢) 512MB 内存,同时还需要 250MB swap
  • 768MB 的内存能保证 GitLab 刚刚可以以正常的速度运行,但是不推荐
  • 1GB 内存 + 250MB swap 可以支持约100个用户的使用
  • 2GB 内存可以支持约1000名用户的使用
  • 4GB 内存可以支持约 10000名用户的使用

存储

可用存储空间的大小最终取决于你的项目大小与多少,但是要GitLab正常使用,你至少需要保证可用磁盘空间是你项目所占用空间的两倍,考虑到Git是一个只增不减的体系,所以建议你对磁盘使用LVM架构,以方便后期增加更多的磁盘。

依赖包

在Debian中, sudo 默认是没有安装的,这需要你手工安装,然后更新并升级系统至最新版本(以 root 帐户运行):

apt-get update -y
apt-get upgrade -y
apt-get install sudo -y

在整个 GitLab 的安装过程中,有一些文件需要编辑,所以你还需要带一个你熟悉的编辑器,比如你习惯使用 vim ,那么可以使用下面的命令安装它(安装并设置为默认编辑器):

sudo apt-get install -y vim
sudo update-alternatives --set editor /usr/bin/vim.basic

接下来安装必要的依赖包:

sudo apt-get install -y build-essential zlib1g-dev libyaml-dev libssl-dev libgdbm-dev libreadline-dev libncurses5-dev libffi-dev curl openssh-server redis-server checkinstall libxml2-dev libxslt-dev libcurl4-openssl-dev libicu-dev logrotate

安装成功之后,我们需要您确定安装了正确的 Python 版本(要求 Python 2.5+3.0 还没有被支持):

sudo apt-get install -y python
python --version
sudo apt-get install -y python2.7
python2 --version
sudo ln -s /usr/bin/python /usr/bin/python2
sudo apt-get install -y python-docutils

确定你的系统上已经安装了正确版本的 Git (GitLab要求Git的版本为 1.7.10 或者更高,比如 1.7.12 或者 1.8.4):

sudo apt-get install -y git-core
git --version

如果系统上安装的Git版本过低,请按下面的操作移除老版本的 Git ,并安装新版本的:

sudo apt-get remove git-core
sudo apt-get install -y libcurl4-openssl-dev libexpat1-dev gettext libz-dev libssl-dev build-essential
cd /tmp
curl --progress https://git-core.googlecode.com/files/git-1.8.4.1.tar.gz | tar xz
cd git-1.8.4.1/
make prefix=/usr/local all
sudo make prefix=/usr/local install

注意: ,如果要让系统可以接收邮件通知,你需要安装一个邮件服务器,默认的,不管是 Ubuntu 还是 Debian 都没有提供这样的软件,如果你需要安装,推荐你使用Postfix,你可以使用下面的命令它:

sudo apt-get install -y postfix

Ruby

移除老版本的 Ruby 1.8(如果存在的话):

sudo apt-get remove ruby1.8

下载并安装新的Ruby:

mkdir /tmp/ruby && cd /tmp/ruby
curl --progress ftp://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p353.tar.gz | tar xz
cd ruby-2.0.0-p353
./configure --disable-install-rdoc
make
sudo make install

然后安装 Bundler Gem:

sudo gem install bundler --no-ri --no-rdoc

系统用户

创建一个名为 git 的系统用户,GitLab 将以它来运行:

sudo adduser --disabled-login --gecos 'GitLab' git

GitLab shell

GitLab Shell 是专门为 GitLab 开发的用来进行SSH访问与项目仓库管理的软件,我们通过下面的方式安装它:

# 进入Git的家目录
cd /home/git
# 克隆GitLab Shell
sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-shell.git -b v1.8.0
cd gitlab-shell
sudo -u git -H cp config.yml.example config.yml

# 编辑配置文件,修改 gitlab_url 
# 比如: 'http://git.ofsz.com/'
sudo -u git -H editor config.yml

# 安装
sudo -u git -H ./bin/install

数据库

GitLab 支持以下数据库:

  • MySQL
  • PostgreSQL

你可以任选其一为 GitLab 使用,它们的配置方式如下:

使用 MySQL

# 如果服务器上还没有安装 MySQL,使用下面这一行命令安装它
sudo apt-get install -y mysql-server mysql-client libmysqlclient-dev

# 运行MySQL安全安装脚本,为数据库 root 帐户设置一个密码
# 然后再一次输入你设置的密码以验证其正确性
sudo mysql_secure_installation

# 以 root 身份登陆数据库
mysql -u root -p

# 为 GitLab 创建一个新的用户
# 在运行下面的命令时,请将 $password 修改成为你真正的密码
mysql> CREATE USER 'git'@'localhost' IDENTIFIED BY '$password';

# 数据GitLab的产品环境数据库
mysql> CREATE DATABASE IF NOT EXISTS `gitlabhq_production` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;

# 为 Gitlab 的数据库用户设定必须的权限
mysql> GRANT SELECT, LOCK TABLES, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON `gitlabhq_production`.* TO 'git'@'localhost';

# 退出MySQL
mysql> \q

# 尝试连接
sudo -u git -H mysql -u git -p -D gitlabhq_production

# 如果你看到下面这样的提示符则表示你的数据库配置是正确的
mysql> \q

# 现在可以进入GitLab的下一步安装了

使用PostgreSQL

# 如果服务器还没有安装 PostgreSQL,使用下面的命令安装
sudo apt-get install -y postgresql-9.1 postgresql-client libpq-dev

# 登陆至 PostgreSQL
sudo -u postgres psql -d template1

# 创建一个Gitlab使用的PostgreSQL用户
template1=# CREATE USER git;

# 创建GitLab使用的数据库,并为用户设定必须的权限
template1=# CREATE DATABASE gitlabhq_production OWNER git;

# 退出PostgreSQL命令行
template1=# \q

# 尝试连接是否正确
sudo -u git -H psql -d gitlabhq_production

GitLab

我们可以将 GitLab 安装至使用一个你想安装的目录下,推荐你安装在 /home/git/ 目录:

cd /home/git

克隆 GitLab 源代码

# 克 GitLab 代码
sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-ce.git -b 6-4-stable gitlab

# 进入 Gitlab 目录
cd /home/git/gitlab

配置 GitLab

cd /home/git/gitlab

# 复制 Gitlab 的示例配置文件
sudo -u git -H cp config/gitlab.yml.example config/gitlab.yml

# 注意修改 `localhost` 至你真正的域名
# 如果你是从 Git 源代码安装的 Git,请修改 bin_path 至 /usr/local/bin/git
sudo -u git -H editor config/gitlab.yml

# 确定 Gitlab 可以写入 log/ 与 tmp/ 目录
sudo chown -R git log/
sudo chown -R git tmp/
sudo chmod -R u+rwX  log/
sudo chmod -R u+rwX  tmp/

# 为 satellites 创建目录
sudo -u git -H mkdir /home/git/gitlab-satellites

# 为 sockets/pids 创建目录,并且确定 GitLab 可以写入这些目录
sudo -u git -H mkdir tmp/pids/
sudo -u git -H mkdir tmp/sockets/
sudo chmod -R u+rwX  tmp/pids/
sudo chmod -R u+rwX  tmp/sockets/

# 创建 public/uploads 目录
sudo -u git -H mkdir public/uploads
sudo chmod -R u+rwX  public/uploads

# 复制 Unicorn 示例配置文件
sudo -u git -H cp config/unicorn.rb.example config/unicorn.rb

# 开启集群模式,如果你需要一个支持高并发量的GitLab应用
# 比如在 2GB 内存的服务器上可以修改为 3
sudo -u git -H editor config/unicorn.rb

# 复制示例的 Rack attack 配置文件
sudo -u git -H cp config/initializers/rack_attack.rb.example config/initializers/rack_attack.rb

# 配置 git 用户的全局设置,这对于你通过Web编辑的时候是十分有用的
# 编辑 user.email 为你在 gitlab.yml 中设置的邮箱地址
sudo -u git -H git config --global user.name "GitLab"
sudo -u git -H git config --global user.email "gitlab@localhost"
sudo -u git -H git config --global core.autocrlf input

__重要提示__: 确定 gitlab.ymlunicorn.rb 中的配置都是一样的。

配置 GitLab 数据库设置

使用 MySQL 数据库

sudo -u git cp config/database.yml.mysql config/database.yml
sudo -u git -H editor config/database.yml

使用 PostgreSQL 数据库

sudo -u git cp config/database.yml.postgresql config/database.yml
sudo -u git -H chmod o-rwx config/database.yml

安装 Gems

cd /home/git/gitlab

# 使用 MySQL 数据库
sudo -u git -H bundle install --deployment --without development test postgres aws

# 使用 PostgreSQL
sudo -u git -H bundle install --deployment --without development test mysql aws

在这一步骤中,如果出现以下错误:

Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

很有可能是 MySQL 的开发包不存在,使用下面的命令安装一般都能解决问题:

sudo apt-get install mysql-client libmysqlclient-dev

初始化数据库,并激活高级功能

sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production

脚本运行完成之后,会得到如下的登陆帐户与密码:

login.........admin@local.host
password......5iveL!fe

安装 Init 脚本

下载 init 脚本(保存至 /etc/init.d/gitlab):

sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab
sudo cp lib/support/init.d/gitlab.default.example /etc/default/gitlab

让 GitLab 随系统启动而启动:

sudo update-rc.d gitlab defaults 21

设置 Logrotate

sudo cp lib/support/logrotate/gitlab /etc/logrotate.d/gitlab

检测应用状态

sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production

启动 GitLab 实例

sudo service gitlab start
# 或者
sudo /etc/init.d/gitlab restart

编辑静态文件

sudo -u git -H bundle exec rake assets:precompile RAILS_ENV=production

Nginx

Nginx 默认受GitLab官方支持。

安装 Nginx

如果你还没有安装 Nginx,可以使用以下命令直接安装它:

sudo apt-get install -y nginx

网站配置

下载 Nginx 默认配置文件

sudo cp lib/support/nginx/gitlab /etc/nginx/sites-available/git.ofsz.com
sudo ln -s /etc/nginx/sites-available/git.ofsz.com /etc/nginx/sites-enabled/git.ofsz.com

编辑 配置文件以使得它符合你的配置

sudo editor /etc/nginx/sites-available/git.ofsz.com

重启Nginx

sudo service nginx restart

完成

至现在为止,所有的安装已经完成,我们使用下面命令再一次检测安装运行环境是否正确:

sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production

初始化登陆

登陆你设置的网络地址,使用下面的用户名与密码登陆:

admin@local.host
5iveL!fe

登陆成功之后,请立马访问你的个人资料页面修改这些信息。

说明

关于智者科技

智者科技是一家专业从事于基于最选进的互联网技术的一站式解决方案供应商,我们向客户提供网站建设、SEO优化、移动应用开发、电子商务平台开发、品牌网站建设、微信二次开发等。

智者的每一位成员都有着超过五年的行业从业经验,或是来自大型企业的优秀设计师,或是在行业内有很高名望的怪才,我们因爱好而组合到一起,我们的理想是在这杂乱无章的互联网技术环境下,为企业带来真正能提升自身品牌形象、帮助自身成长的互联网产品。

联系方式

  • 网站地址:http://www.ofsz.com
  • 电话号码:18374888188 / 13973333488
  • QQ号码:54778899 / 425602
  • 邮箱地址:54778899 [at] qq.com

Sublime Text 是一款支持OS X、Windows、Linux等各种平台的代码编辑器,它支持但不限于 C, C++, C#, CSS, D, Erlang, HTML, Groovy, Haskell, HTML, Java, JavaScript, LaTeX, Lisp, Lua, Markdown, Matlab, OCaml, Perl, PHP, Python, R, Ruby, SQL, TCL, Textile and XML 等主流编程语言的语法高亮,除此之外,还提供了只有你想不到没有它做不到的太多强大的功能,作为一个Sublime Text 的忠实用户,我将它推荐给每一个和我一样每天劳作在电脑面前的码农们。

Sublime Text 2 软件界面截图

代码编辑器或者文本编辑器,对于程序员来说,就像剑与战士一样,谁都想拥有一把可以随心驾驭且锋利无比的宝剑,而每一位程序员,同样会去追求最适合自己的强大、灵活的编辑器,相信你和我一样,都不会例外。本人用过的代码编辑工具很多,从入门时用了不到一个月的DreamWeaver再到后来包括现在某些时候也还在使用的NotePad++,还有VIM、EMacs、BBEdit、Coda……不管曾经用过什么神器,最终的结果都是(至少在新的神器出现之前)以Sublime Text 为终点。

Sublime Text 现在还处于更新的频繁期,而且 Sublime Text 3的测试版也都已经出来了,其官方网站地址是:http://www.sublimetext.com/,通过官方网站就可以下载到任何一个适合你的操作系统的版本,而且 Sublime Text 2 与 Sublime Text 3可以同时下载得到。

Sublime Text 本身是一个收费软件,价格对于用导了盗版的我们来说真不地道:

1 license: USD $70
10+ licenses: USD $60 / license
25+ licenses: USD $55 / license
50+ licenses: USD $50 / license

我购买的时候还只是 $59,其实算算,和其功能比较一下,这个价格其实并不算贵,当然了,如果不想用盗版(其实这个软件真心没有盗版的必要),也不想花钱,你下载安装就可以使用,只不过有一个很不高频率会提醒你还木有购买,完全不会影响它的使用。

软件及其包管理工具安装

Sublime Text 的优点并不仅限于它本身的功能,而在于它还有一个强大的插件体系,在我们安装完成Sublime Text 之后,打开软件,按下 Ctrl + ~ 键(反引号键) 即可开启命令行工具,然后按你安装的版本复制下面的代码至命令行工具中并点击回车运行它。

Sublime Text 2 包管理器安装脚本

import urllib2,os; pf='Package Control.sublime-package'; ipp = sublime.installed_packages_path(); os.makedirs( ipp ) if not os.path.exists(ipp) else None; urllib2.install_opener( urllib2.build_opener( urllib2.ProxyHandler( ))); open( os.path.join( ipp, pf), 'wb' ).write( urllib2.urlopen( 'http://sublime.wbond.net/' +pf.replace( ' ','%20' )).read()); print( 'Please restart Sublime Text to finish installation')

Sublime Text 3 包管理器安装脚本

import urllib.request,os; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); open(os.path.join(ipp, pf), 'wb').write(urllib.request.urlopen( 'http://sublime.wbond.net/' + pf.replace(' ','%20')).read())

安装完成之后,你需要重启 Sublime Text 才能使安装生效。为了方便你搜索、查找插件,你可以直接访问 https://sublime.wbond.net/browse 网站。

手工安装包管理器

如果在为某些变态的原因,命令行工具无法成功安装包管理器,你还可以手工安装:

  1. 点击 Preferences » Browse Packages... 菜单,这会打开包存储目录;
  2. Packages 目录的父文件夹中,有一个名为 Installed Packages 目录,进入 Installed Packages 目录;
  3. 下载 Package Control.sublime-package 包,然后移动至 Installed Packages/ 目录下;
  4. 重启 Sublime Text 即可。

初步窥探 Sublime Text

Sublime Text 的使用

Sublime Text 本身就只是一个编辑器而已,所以使用它,无非就是打开它,创建新文件,然后输入即可,基本的快捷键与其它的编辑器类似,都属于系统黑夜的,比如 Ctrl + S 是保存等等。

创建一个新项目

在 Sublime Text 中,一个项目就是一个文件夹,创建方式也很简单:

  1. 在电脑上创建一个新的文件夹
  2. 把这个文件夹拖动到 Sublime Text 程序界面(在OS X下可以直接拖动到图标上)即可创建一个新的项目

一个Sublime Text 进程可以同时打开多个文件夹,也就是可以创建多个项目,但是对于新建的文件默认都会保存在第一个项目中,也就是左侧文件夹目录最上面的那一个目录中。

Goto Anything

Goto Anything

呃,这个名头可真不小,在 Sublime Text 里面有一个小神器,就叫作 Goto Anything,它能带你随心所欲地进入任何你想进入的地方,使用起来也是十分的简单,几个快捷键即可搞定所有。

Command+P 之所以被叫做 Goto Anything 并不是虚名:

  • Command+P 可以快速跳转到当前项目中的任意文件,可进行关键词匹配。
  • Command+P@ (或是Command+R)可以快速列出/跳转到某个函数(很爽的是在 markdown 当中是匹配到标题,而且还是带缩进的!)。
  • Command+P# 可以在当前文件中进行搜索。
  • Command+P: (或是Ctrl+G)加上数字可以跳转到相应的行。
  • 而更酷的是你可以用 Command+P 加上一些关键词跳转到某个文件同时加上 @ 来列出/跳转到目标文件中的某个函数,或是同时加上 # 来在目标文件中进行搜索,或是同时加上 : 和数字来跳转到目标文件中相应的行。

深入了解 Sublime Text

自带快捷键

  • Ctrl+Shift+P:打开命令面板
  • Ctrl+P:搜索项目中的文件
  • Ctrl+G:跳转到第几行
  • Ctrl+W:关闭当前打开文件
  • Ctrl+Shift+W:关闭所有打开文件
  • Ctrl+Shift+V:粘贴并格式化
  • Ctrl+D:选择单词,重复可增加选择下一个相同的单词
  • Ctrl+L:选择行,重复可依次增加选择下一行
  • Ctrl+Shift+L:选择多行
  • Ctrl+Shift+Enter:在当前行前插入新行
  • Ctrl+X:删除当前行
  • Ctrl+M:跳转到对应括号
  • Ctrl+U:软撤销,撤销光标位置
  • Ctrl+J:选择标签内容
  • Ctrl+F:查找内容
  • Ctrl+Shift+F:查找并替换
  • Ctrl+H:替换
  • Ctrl+R:前往 method
  • Ctrl+N:新建窗口
  • Ctrl+K+B:开关侧栏
  • Ctrl+Shift+M:选中当前括号内容,重复可选着括号本身
  • Ctrl+F2:设置/删除标记
  • Ctrl+/:注释当前行
  • Ctrl+Shift+/:当前位置插入注释
  • Ctrl+Alt+/:块注释,并Focus到首行,写注释说明用的
  • Ctrl+Shift+A:选择当前标签前后,修改标签用的
  • F11:全屏
  • Shift+F11:全屏免打扰模式,只编辑当前文件
  • Alt+F3:选择所有相同的词
  • Alt+.:闭合标签
  • Alt+Shift+数字:分屏显示
  • Alt+数字:切换打开第N个文件
  • Shift+右键拖动:光标多不,用来更改或插入列内容
  • 鼠标的前进后退键可切换Tab文件
  • 按Ctrl,依次点击或选取,可需要编辑的多个位置
  • 按Ctrl+Shift+上下键,可替换行

不得不用的插件

ZenCoding
: 不得不用的一款前端开发方面的插件,Write less , show more.安装后可直接使用,Tab键触发,Alt+Shift+W是个代码机器。

Alignment
: 代码对齐,如写几个变量,选中这几行,Ctrl+Alt+A,哇,齐了。

Prefixr
: 写 CSS可自动添加 -webkit 等私有词缀,Ctrl+Alt+X触发。

Tag
: Html格式化,右键Auto-Format Tags on Ducument。

Clipboard History
: 剪贴板历史记录,显示更多历史复制,Ctrl+Shift+V触发。

SideBarEnhancements
: 侧栏右键功能增强,非常实用

Theme – Soda
: 完美的编码主题,用过的都说好,Setting user里面添加”theme”: “Soda Dark.sublime-theme”

GBK to UTF8
: 将文件编码从GBK转黄成UTF8,菜单 – File里面找

SFTP
: 直接编辑 FTP 或 SFTP 服务器上的文件,绝对FTP浮云

WordPress
: 集成一些WordPress的函数,对于像我这种经常要写WP模版和插件的人特别有用

PHPTidy
: 整理排版PHP代码

YUI Compressor
: 压缩JS和CSS文件