金钱(警告)
** 状态:** 被贬值
如果您目前正在运行运行 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使用我们之前设置的gitlab
MySQL用户,以便编辑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 登录页面。
参考:
- 查看优秀的 Gitlab 安装文档(https://github.com/gitlabhq/gitlabhq/blob/master/doc/install/installation.md)。
- 有关 502 坏网关错误的信息,请查看 这条线。