本文介绍不再受支持的 Ubuntu 版本。如果您当前运行的服务器运行 Ubuntu 12.04,我们强烈建议您升级或迁移到受支持的 Ubuntu 版本:
-
升级到Ubuntu 14.04.
- 从 Ubuntu 14.04 升级到 Ubuntu 16.04
- 将服务器数据迁移到支持的版本
Reason:
Ubuntu 12.04 已于 2017 年 4 月 28 日终止生命周期 (EOL)并且不再接收安全补丁或更新。本指南不再维护。
请参阅:本指南可能仍然可以作为参考,但可能不适用于其他 Ubuntu 版本。如果有的话,我们强烈建议您使用针对您所使用的 Ubuntu 版本编写的指南。您可以使用页面顶部的搜索功能来查找更新的版本。
Git 和 GitHub 是很棒的工具,可以轻松管理大量 Git 存储库及其相关权限。如果您正在编写开源软件,这非常棒,但是在编写闭源软件时,您可能不想将您的代码信任给第三方服务器。那么,如何在不将 git 存储库托管在您无法控制的服务器上的情况下,获得对 Github 或 BitBucket 之类的控制、灵活性和易用性呢?
进入亚搏体育app实验室。 GitLab 为您的 Git 存储库提供了一个简单但功能强大的基于 Web 的界面,就像 GitHub 一样,只有您可以将其托管在您自己的云服务器上,根据您的需要控制访问,并且存储库大小仅受您的服务器拥有的存储空间的限制。本教程将引导您完成将 DigitalOcean VPS 设置为 GitLab 服务器的过程。
Note:本教程介绍如何从源代码安装 GitLab。最初编写时,这是唯一的选择。如今,使用以下命令来启动和运行它要简单得多GitLab 的“omnibus”包。您还可以在 DigitalOcean 上启动 GitLab Droplet一键点击我们的应用程序图像.
本教程假设您使用的是全新的 Ubuntu 12.04 VPS。我们将安装 GitLab 运行所需的所有必要软件。如果您使用现有的 VPS (droplet) 或不同的 Linux 发行版,您可能会遇到问题,特别是在 Python 和 Ruby 版本不兼容的情况下。开始之前请确保已安装 Ruby 2.0 和 Python 2.7。
第一步是安装一些必需的软件包:
sudo apt-get update
sudo 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(这需要一段时间):
mkdir /tmp/ruby && cd /tmp/ruby
curl --progress ftp://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p247.tar.gz | tar xz
cd ruby-2.0.0-p247
./configure
make
sudo make install
完成后,您可以通过执行以下操作来检查以确保安装了 Ruby 2(而不是 1.8):
ruby --version
如果输出如下所示,那么就很好了:
ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-linux]
现在我们需要安装 Bundler gem:
sudo gem install bundler --no-ri --no-rdoc
并创建一个 git 用户供 GitLab 使用:
sudo adduser --disabled-login --gecos 'GitLab' git
使用以下命令下载 GitLab shell:
cd /home/git
sudo -u git -H git clone https://github.com/gitlabhq/gitlab-shell.git
cd gitlab-shell
sudo -u git -H git checkout v1.7.0
sudo -u git -H cp config.yml.example config.yml
您现在拥有 GitLab Shell 1.7.0 的副本,以及示例config.yml
准备出发了。
如果您有指向此 VPS 的域名,那么您应该花时间编辑config.yml
使用该域。
nano config.yml
靠近顶部会有一条线,如下所示:
gitlab_url: "http://localhost/"
改变http://localhost/
部分以匹配您的域名。所以如果您的域名是www.YOURDOMAIN.com该行应如下所示:
gitlab_url: "http://www.YOURDOMAIN.com/"
现在您可以运行 GitLab shell 安装程序:
sudo -u git -H ./bin/install
我们将设置 GitLab 以使用 MySQL 后端。第一步是使用以下命令安装 MySQL。在安装过程中,它会要求您设置 MySQL root 密码。将其设置为您喜欢的任何值,但请记下它,因为后续步骤将需要它。
sudo apt-get install -y mysql-server mysql-client libmysqlclient-dev
MySQL 现在已安装,并且 root 密码已设置为您在上一步中选择的值。我们现在需要创建一个 MySQL 用户供 GitLab 使用。为此,我们首先将必要的 SQL 查询保存到临时文件中。类型:
nano tempfile
粘贴以下内容,更改$password
在第一行输入真实密码。跟踪该密码,因为这将是您的 GitLab 数据库密码。
CREATE USER 'gitlab'@'localhost' IDENTIFIED BY '$password';
CREATE DATABASE IF NOT EXISTS `gitlabhq_production` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;
GRANT SELECT, LOCK TABLES, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON `gitlabhq_production`.* TO 'gitlab'@'localhost';
现在保存文件并执行以下命令(在提示符处输入第一步中的 MySQL root 密码)让 MySQL 执行您的查询:
cat tempfile | mysql -u root -p
为了确保您的新 MySQL 用户已成功创建,让我们登录mysql
使用gitlab
user:
mysql -u gitlab -p
如果您看到一些文本后跟:
mysql>
然后一切都成功了。继续输入:
exit;
at the mysql>
提示退出MySQL,并删除tempfile
文件,因为它包含密码:
rm tempfile
至此,我们已经完成了成功安装 GitLab 的所有配置,所以让我们继续安装:
cd /home/git
sudo -u git -H git clone https://github.com/gitlabhq/gitlabhq.git gitlab
cd /home/git/gitlab
sudo -u git -H git checkout 6-0-stable
sudo -u git -H cp config/gitlab.yml.example config/gitlab.yml
就像我们设置 GitLab shell 一样,如果您为 VPS 配置了域,我们需要编辑config.yml
使用该域。
sudo -u git -H nano config/gitlab.yml
在文件顶部附近,您应该有一个如下所示的文本块:
gitlab:
## Web server settings
host: localhost
port: 80
https: false
改变host:
条目以匹配您的域名。如果您的域名是www.YOURDOMAIN.com,那么它应该看起来像这样:
gitlab:
## Web server settings
host: www.YOURDOMAIN.com
port: 80
https: false
我们还设置一些linux文件权限,配置git
用户的 Git 配置,并设置一些 GitLab 配置和目录git
user:
cd /home/git/gitlab
sudo chown -R git log/
sudo chown -R git tmp/
sudo chmod -R u+rwX log/
sudo chmod -R u+rwX tmp/
sudo -u git -H mkdir /home/git/gitlab-satellites
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/
sudo -u git -H mkdir public/uploads
sudo chmod -R u+rwX public/uploads
sudo -u git -H cp config/unicorn.rb.example config/unicorn.rb
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
sudo -u git cp config/database.yml.mysql config/database.yml
现在我们需要告诉 GitLab 使用gitlab
我们之前设置的 MySQL 用户。为此,请编辑config/database.yml
file:
sudo -u git -H nano config/database.yml
靠近顶部会有一个名为production:
其中将包含username
and password
条目。默认情况下,它看起来像这样:
production:
adapter: mysql2
encoding: utf8
reconnect: false
database: gitlabhq_production
pool: 10
username: root
password: "secure password"
改变username
and password
条目以匹配我们之前设置的 GitLab 数据库用户。因此,如果您用于 GitLab MySQL 用户的密码是$password
编辑后的文件应如下所示:
production:
adapter: mysql2
encoding: utf8
reconnect: false
database: gitlabhq_production
pool: 10
username: gitlab
password: "$password"
保存文件,我们将保护它,以便服务器的其他用户无法看到密码:
sudo -u git -H chmod o-rwx config/database.yml
让我们安装一些更多需要的 gem(此步骤可能需要一段时间):
cd /home/git/gitlab
sudo gem install charlock_holmes --version '0.6.9.4'
sudo -u git -H bundle install --deployment --without development test postgres aws
并运行一些最终设置(当询问您是否要继续时输入 yes):
sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production
完成后,它会在屏幕上打印很多信息,最后会显示Administrator account created
并向您提供管理员凭据。它应该如下所示:
Administrator account created:
login.........admin@local.host
password......5iveL!fe
现在让我们将 GitLab 设置为在服务器启动时启动:
sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab
sudo chmod +x /etc/init.d/gitlab
sudo update-rc.d gitlab defaults 21
运行以下命令以确保一切正常:
sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production
如果没有错误消息并且该命令输出的数据看起来正确,那么您的 GitLab 安装正在运行。就快结束了!使用以下命令启动 GitLab:
sudo service gitlab start
GitLab 默认使用 nginx Web 服务器。如果您已经设置了自己的 Web 服务器(例如 Apache),则这些步骤不适用。查看这些食谱有关如何使用其他 Web 服务器配置 GitLab 的信息。否则,请按照以下说明安装和配置 nginx 以与 GitLab 配合使用:
sudo apt-get -y install nginx
cd /home/git/gitlab
sudo cp lib/support/nginx/gitlab /etc/nginx/sites-available/gitlab
sudo ln -s /etc/nginx/sites-available/gitlab /etc/nginx/sites-enabled/gitlab
Edit /etc/nginx/sites-available/gitlab
使用您的域名:
sudo nano /etc/nginx/sites-available/gitlab
距离文件顶部不远的地方你会看到一个条目server_name
其设置为YOUR_SERVER_FQDN
。与前面的步骤一样,替换YOUR_SERVER_FQDN
与您的域名。原始文件如下所示:
server {
listen *:80 default_server; # e.g., listen 192.168.1.1:80; In most cases *:80 is a good idea
server_name YOUR_SERVER_FQDN; #
如果您的域名是www.YOURDOMAIN.com那么你应该将其更改为如下所示:
server {
listen *:80 default_server; # e.g., listen 192.168.1.1:80; In most cases *:80 is a good idea
server_name www.YOURDOMAIN.com; #
并重新启动 nginx:
sudo service nginx restart
瞧!你完成了。使用上面的管理员登录名和密码通过 Web 浏览器连接到 GitLab(默认用户:admin@local.host
, pass: 5iveL!fe
)并享受 GitLab。
如果您使用 512MB VPS,那么由于 GitLab 的内存要求,您很可能会遇到502 Bad Gateway
错误。如果是这种情况,请继续阅读...
在完美的世界中,GitLab 现在应该可以完美运行。不幸的是,GitLab 对内存的要求高得惊人,所以在 512MB VPS 上,第一次登录时经常会卡住。这是因为 GitLab 在第一次登录时使用了大量内存。由于 Ubuntu 12.04 VPS 没有交换空间,当内存超出时,GitLab 的部分内容将被终止。不用说,当 GitLab 的某些部分意外终止时,它就无法正常运行。
最简单的解决方案就是为您的 VPS 分配更多内存,至少在第一次登录时是如此。如果您不想这样做,另一个选择是增加交换空间。 DigitalOcean 已经提供了有关如何执行此操作的完整教程here(尽管我建议添加超过 512MB 的交换空间)。快速修复方法是运行以下命令:
sudo dd if=/dev/zero of=/swapfile bs=1024 count=1024k
sudo mkswap /swapfile
sudo swapon /swapfile
您的交换文件现在正在运行并处于活动状态,但要设置它以便在每次启动时激活它,我们需要编辑/etc/fstab
:
sudo nano /etc/fstab
将以下内容粘贴到文件底部:
/swapfile none swap sw 0 0
现在重新启动您的 VPS:
sudo restart
等待一两分钟让 VPS 重新启动,然后再次尝试 GitLab。如果第一次不起作用,请刷新 Bad Gateway 页面几次,您应该很快就会看到 GitLab 登录页面。
参考:
- 查看优秀的 Gitlab 安装文档here.
- 有关 502 bad gateway 错误的信息,请检查这个线程.
提交者:Nik van der Ploeg