如何将 GitLab 设置为您自己的私有 GitHub 克隆

金钱(警告)

** 状态:** 被贬值

如果您目前正在运行运行 Ubuntu 12.04 的服务器,我们强烈建议升级或迁移到支持的 Ubuntu 版本:

** 原因:** Ubuntu 12.04 已于 2017 年 4 月 28 日到期(EOL)并且不再收到安全补丁或更新。

** 相反,请参阅:** 此指南可能仍然有用作为参考,但可能不会在其他Ubuntu版本上工作. 如果可用,我们强烈建议使用为您正在使用的Ubuntu版本撰写的指南。

介绍


Git 和 GitHub 是很棒的工具,可以让管理和管理大量的 Git 存储库及其相关权限变得令人兴奋。如果您正在编写开源软件,这是很棒的,但在编写闭源软件时,您可能不想信任您的代码到第三方服务器。

GitLab 提供了一个简单但强大的基于 Web 的界面,以您的 Git 存储库 a la GitHub,只有你可以托管它在自己的云服务器上,控制您认为合适的访问,并且 Repo 尺寸仅受您的服务器的存储空间限制。

**注:**本教程解释了如何从源头上安装GitLab。当它最初被写成时,这是唯一的选择。今天,使用GitLab的omnibus包(https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md)来获取并运行它更容易(https://andsky.com/tech/tutorials/how-to-use-the-gitlab-one-click-install-image-to-manage-git-repositories)。

本教程假定您正在使用全新的 Ubuntu 12.04 VPS. 我们将安装所有必要的软件,使GitLab工作. 如果您正在使用现有的VPS(滴)或不同的Linux发行版,您可能会遇到问题,特别是与不兼容的Python和Ruby版本。 确保您有Ruby 2.0和Python 2.7安装在开始之前。

第一步是安装一些必要的包:

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

确保您没有安装Ruby 1.8(在默认的Ubuntu 12.04 VPS上它不会)。

安装 Ruby 2.0(这将需要一段时间):

1mkdir /tmp/ruby && cd /tmp/ruby
2curl --progress ftp://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p247.tar.gz | tar xz
3cd ruby-2.0.0-p247
4./configure
5make
6sudo make install

当它完成时,您可以检查是否安装了Ruby 2(而不是1.8)。

1ruby --version

如果输出看起来像下面那么你是好的:

1ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-linux]

现在我们需要安装 Bundler 宝石:

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

然后为 GitLab 创建一个 git 用户来使用:

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

安装 GitLab 壳


使用以下命令下载 GitLab 壳:

1cd /home/git
2sudo -u git -H git clone https://github.com/gitlabhq/gitlab-shell.git
3cd gitlab-shell
4sudo -u git -H git checkout v1.7.0
5sudo -u git -H cp config.yml.example config.yml

现在你有一个GitLab Shell 1.7.0的副本,而例子config.yml已经准备好了。

如果你有一个域名指向这个VPS,那么你应该花时间编辑‘config.yml’来使用这个域。

1nano config.yml

在顶部将有一个线,看起来像:

1gitlab_url: "http://localhost/"

更改http://localhost/部分以匹配您的域名,所以如果您的域名是 www.YOURDOMAIN.com 则线应该是这样的:

1gitlab_url: "http://www.YOURDOMAIN.com/"

现在您可以运行 GitLab 壳安装程序:

1sudo -u git -H ./bin/install

数据库设置


我们将设置GitLab以使用MySQL后端。第一步是使用下面的命令安装MySQL。在安装过程中,它将要求您设置MySQL根密码。

1sudo apt-get install -y mysql-server mysql-client libmysqlclient-dev

现在安装了MySQL,并将根密码设置为您在最后一步中选择的值。我们现在需要为GitLab创建一个MySQL用户来使用。

1nano tempfile

插入以下内容,将第一个行上的$password更改为真实密码. 跟踪此密码,因为这将是您的GitLab数据库密码。

1CREATE USER 'gitlab'@'localhost' IDENTIFIED BY '$password';
2CREATE DATABASE IF NOT EXISTS `gitlabhq_production` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;
3GRANT SELECT, LOCK TABLES, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON `gitlabhq_production`.* TO 'gitlab'@'localhost';

现在保存文件并执行以下命令(从提示的第一步输入您的MySQL根密码),以便MySQL执行您的查询:

1cat tempfile | mysql -u root -p

要确保您的新 MySQL 用户成功创建,让我们使用gitlab用户登录到mysql:

1mysql -u gitlab -p

如果你看到一个文本,然后是a:

1mysql>

然后,一切都顺利地工作了,然后继续进来,输入:

1exit;

mysql>提示中退出MySQL,并删除tempfile文件,因为它包含密码:

1rm tempfile

在此时刻,我们已经配置了一切,以便成功安装GitLab,所以让我们继续安装:

1cd /home/git
2sudo -u git -H git clone https://github.com/gitlabhq/gitlabhq.git gitlab
3cd /home/git/gitlab
4sudo -u git -H git checkout 6-0-stable
5sudo -u git -H cp config/gitlab.yml.example config/gitlab.yml

正如我们在 GitLab 壳设置中所做的那样,如果您为您的 VPS 配置了域,我们需要编辑 config.yml 来使用该域。

1sudo -u git -H nano config/gitlab.yml

在文件的顶部,你应该有一个文本块,看起来如下:

1gitlab:
2## Web server settings
3host: localhost
4port: 80
5https: false

如果你的域名是 www.YOURDOMAIN.com,那么它应该看起来像这样:

1gitlab:
2## Web server settings
3host: www.YOURDOMAIN.com
4port: 80
5https: false

让我们也设置一些 Linux 文件权限,配置git用户的 Git 配置,并为git用户设置一些 GitLab 配置和目录:

 1cd /home/git/gitlab
 2sudo chown -R git log/
 3sudo chown -R git tmp/
 4sudo chmod -R u+rwX log/
 5sudo chmod -R u+rwX tmp/
 6sudo -u git -H mkdir /home/git/gitlab-satellites
 7sudo -u git -H mkdir tmp/pids/
 8sudo -u git -H mkdir tmp/sockets/
 9sudo chmod -R u+rwX tmp/pids/
10sudo chmod -R u+rwX tmp/sockets/
11sudo -u git -H mkdir public/uploads
12sudo chmod -R u+rwX public/uploads
13sudo -u git -H cp config/unicorn.rb.example config/unicorn.rb
14sudo -u git -H git config --global user.name "GitLab"
15sudo -u git -H git config --global user.email "gitlab@localhost"
16sudo -u git -H git config --global core.autocrlf input
17sudo -u git cp config/database.yml.mysql config/database.yml

现在我们需要告诉GitLab使用我们之前设置的gitlabMySQL用户,以便编辑config/database.yml文件:

1sudo -u git -H nano config/database.yml

顶部将有一个名为生产:的部分,其中将包含用户名密码条目。

1production:
2  adapter: mysql2
3  encoding: utf8
4  reconnect: false
5  database: gitlabhq_production
6  pool: 10
7  username: root
8  password: "secure password"

更改用户名密码的条目,以匹配我们之前设置的GitLab数据库用户,所以如果您为您的GitLab MySQL用户使用的密码是$password,编辑的文件应该是这样的:

1production:
2  adapter: mysql2
3  encoding: utf8
4  reconnect: false
5  database: gitlabhq_production
6  pool: 10
7  username: gitlab
8  password: "$password"

保存文件,我们将保护它,以便服务器的其他用户无法看到密码:

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

让我们安装一些需要的宝石(这个步骤可能需要一段时间):

1cd /home/git/gitlab
2sudo gem install charlock_holmes --version '0.6.9.4'
3sudo -u git -H bundle install --deployment --without development test postgres aws

并运行一些最终设置(当它问您是否想要继续时键入是):

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

完成后,它将在屏幕上打印大量信息,并在最后显示创建管理员帐户,并为您提供您的管理员凭证。

1Administrator account created:
2
3[email protected]
4password......5iveL!fe

现在让我们设置 GitLab 每当您的服务器启动时启动:

1sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab
2sudo chmod +x /etc/init.d/gitlab
3sudo update-rc.d gitlab defaults 21

执行以下操作以确保一切正常工作:

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

如果没有错误消息,并且该命令输出的数据看起来是正确的,那么你的GitLab安装工作了。

1sudo service gitlab start

设置 NGINX


GitLab 默认情况下与 nginx 网页服务器一起工作. 如果您已经有自己的网页服务器,如 Apache 设置,那么这些步骤不适用。 查看 这些食谱 有关如何与其他网页服务器配置 GitLab 的信息。

1sudo apt-get -y install nginx
2cd /home/git/gitlab
3sudo cp lib/support/nginx/gitlab /etc/nginx/sites-available/gitlab
4sudo ln -s /etc/nginx/sites-available/gitlab /etc/nginx/sites-enabled/gitlab

编辑/etc/nginx/sites-available/gitlab以使用您的域名:

1sudo nano /etc/nginx/sites-available/gitlab

从文件的顶部,你会看到一个server_name的条目,该条目设置为YOUR_SERVER_FQDN。 与之前的步骤一样,用您的域名取代YOUR_SERVER_FQDN

1server {
2  listen *:80 default_server;     # e.g., listen 192.168.1.1:80; In most cases *:80 is a good idea
3  server_name YOUR_SERVER_FQDN;       #

如果你的域名是 www.YOURDOMAIN.com,那么你应该改变它看起来像这样:

1server {
2  listen *:80 default_server;         # e.g., listen 192.168.1.1:80; In most cases *:80 is a good idea
3  server_name www.YOURDOMAIN.com;     #

重新启动 nginx:

1sudo service nginx restart

连接到GitLab通过您的Web浏览器使用上面的管理员登录和密码(默认用户: [email protected],通过: 5iveL!fe)并享受GitLab。

如果你使用的是 512MB VPS,那么由于GitLab的内存需求,很可能你会遇到一个502 Bad Gateway错误。

故障解析


502错误网关错误


在一个完美的世界里,GitLab现在会运行完美,不幸的是,GitLab具有惊人的高内存要求,所以在512MB VPS上,它经常在第一次登录时窒息,这是因为GitLab在第一次登录时使用大量的内存,因为Ubuntu 12.04 VPS在超过内存时没有交换空间,GitLab的部分被终止。

最简单的解决方案是仅仅将更多的内存分配给您的VPS,至少在第一次登录时。如果你不想这样做,另一个选择是增加交换空间。DigitalOcean已经有一个完整的教程,如何做到这一点(这里)(https://www.digitalocean.com/community/articles/how-to-add-swap-on-ubuntu-12-04)(尽管我建议添加超过仅 512MB的交换)。

1sudo dd if=/dev/zero of=/swapfile bs=1024 count=1024k
2sudo mkswap /swapfile
3sudo swapon /swapfile

您的交换文件现在正在运行和活跃,但要将其设置为在每个启动时被激活,我们需要编辑 /etc/fstab:

1sudo nano /etc/fstab

将以下内容粘贴到文件的底部:

1/swapfile none swap sw 0 0

现在重新启动您的VPS:

1sudo restart

等待一两分钟,VPS 重新启动,然后再试试 GitLab. 如果它第一次不起作用,请更新 Bad Gateway 页面几次,你很快就会看到 GitLab 登录页面。

参考:

  1. 查看优秀的 Gitlab 安装文档(https://github.com/gitlabhq/gitlabhq/blob/master/doc/install/installation.md)。
  2. 有关 502 坏网关错误的信息,请查看 这条线
Submitted by: Nik van der Ploeg
Published At
Categories with 技术
comments powered by Disqus