ステータス:非推奨

この記事では、サポートされなくなったバージョンのUbuntuについて説明します。 現在Ubuntu12.04を実行しているサーバーを運用している場合は、サポートされているバージョンのUbuntuにアップグレードまたは移行することを強くお勧めします。

理由:
Ubuntu 12.04は2017年4月28日に保守終了(EOL)に達しました and no longer receives security patches or updates. This guide is no longer maintained.

代わりに参照してください:このガイドは参照として役立つ場合がありますが、他のUbuntuリリースでは機能しない場合があります。 可能な場合は、使用しているUbuntuのバージョン用に作成されたガイドを使用することを強くお勧めします。 ページ上部の検索機能を使用して、より新しいバージョンを見つけることができます。

序章


GitとGitHubは、多くのGitリポジトリとそれに関連する権限を簡単に管理および管理できる優れたツールです。 これは、オープンソースソフトウェアを作成している場合はすばらしいことですが、クローズドソースソフトウェアを作成している場合は、コードをサードパーティのサーバーに信頼したくない場合があります。 では、制御外のサーバーでgitリポジトリをホストせずに、GithubやBitBucketなどの制御、柔軟性、使いやすさをどのように実現できるでしょうか。

GitLabに入ります。 GitLabは、GitHubを使用してGitリポジトリにシンプルで強力なウェブベースのインターフェースを提供します。自分のクラウドサーバーでホストし、必要に応じてアクセスを制御できます。リポジトリのサイズは、サーバーのストレージ容量によってのみ制限されます。 このチュートリアルでは、DigitalOceanVPSをGitLabサーバーとして設定する方法について説明します。

注:このチュートリアルでは、ソースからGitLabをインストールする方法について説明します。 最初に書かれたとき、これが唯一のオプションでした。 今日では、GitLabの「オムニバス」パッケージを使用して起動して実行する方がはるかに簡単です。 アプリケーションイメージを使用して、ワンクリックでDigitalOceanでGitLabドロップレットを起動することもできます。

このチュートリアルは、新しいUbuntu12.04VPSを使用していることを前提としています。 GitLabを機能させるために必要なすべてのソフトウェアをインストールします。 既存のVPS(ドロップレット)または別のLinuxディストリビューションを使用している場合、特に互換性のないPythonバージョンとRubyバージョンで問題が発生する可能性があります。 開始する前に、Ruby2.0とPython2.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]

次に、Bundlergemをインストールする必要があります。

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

そして、GitLabが使用するgitユーザーを作成します。

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

GitLabシェルのインストール


次のコマンドを使用してGitLabシェルをダウンロードします。

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

これでGitLabShell1.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シェルインストーラーを実行できます。

sudo -u git -H ./bin/install

データベースの設定


MySQLバックエンドを使用するようにGitLabをセットアップします。 最初のステップは、以下のコマンドを使用してMySQLをインストールすることです。 インストールプロセス中に、MySQLのrootパスワードを設定するように求められます。 好きなように設定しますが、次の手順で必要になるので書き留めておきます。

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

これでMySQLがインストールされ、rootパスワードが前の手順で選択した値に設定されます。 次に、GitLabが使用するMySQLユーザーを作成する必要があります。 これを行うには、最初に必要なSQLクエリを一時ファイルに保存します。 タイプ:

nano tempfile

以下を貼り付けて、1行目の$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ユーザーが正常に作成されたことを確認するには、gitlabユーザーを使用してmysqlにログインします。

mysql -u gitlab -p

いくつかのテキストの後に:が続く場合:

mysql>

その後、すべてが正常に機能しました。 先に進み、次のように入力します。

exit;

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シェルを設定した場合と同様に、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構成を構成し、gitユーザー用にいくつかのGitLab構成とディレクトリを設定しましょう。

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 "[email protected]"
sudo -u git -H git config --global core.autocrlf input
sudo -u git cp config/database.yml.mysql config/database.yml

次に、前に設定したgitlabMySQLユーザーを使用するようにGitLabに指示する必要があります。 これを行うには、config/database.ymlファイルを編集します。

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

上部近くにproduction:というセクションがあり、usernameおよびpasswordエントリが含まれます。 デフォルトでは、次のようになります。

production:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: gitlabhq_production
  pool: 10
  username: root
  password: "secure password"

usernameおよびpasswordエントリを、前に設定したGitLabデータベースユーザーと一致するように変更します。 したがって、GitLabMySQLユーザーに使用したパスワードが$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:

[email protected]
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

NGINXの設定


GitLabはデフォルトでnginxWebサーバーと連携します。 Apacheなどの独自のWebサーバーを既にセットアップしている場合、これらの手順は適用されません。 他のWebサーバーでGitLabを構成する方法については、これらのレシピを確認してください。 それ以外の場合は、次の手順に従って、GitLabで動作するようにnginxをインストールおよび構成します。

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

/etc/nginx/sites-available/gitlabを編集して、ドメイン名を使用します。

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

ファイルの先頭から少し離れると、YOUR_SERVER_FQDNに設定されたエントリserver_nameが表示されます。 前の手順と同様に、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

出来上がり! 完了です。 上記の管理者ログインとパスワード(デフォルトユーザー:[email protected]、パス:5iveL!fe)を使用してWebブラウザーからGitLabに接続し、GitLabをお楽しみください。

512MBのVPSを使用している場合、GitLabのメモリ要件により、502 Bad Gatewayエラーが発生する可能性が非常に高くなります。 その場合は、以下をお読みください…

トラブルシューティング


502不正なゲートウェイエラー


完璧な世界では、GitLabは完全に実行されます。 残念ながら、GitLabには驚くほど高いメモリ要件があるため、512MBのVPSでは、最初のサインイン時にチョークすることがよくあります。 これは、GitLabが最初のログインで大量のメモリを使用するためです。 Ubuntu 12.04 VPSにはメモリを超えるとスワップスペースがないため、GitLabの一部が終了します。 言うまでもなく、GitLabの一部が予期せず終了した場合、GitLabは正常に動作しません。

最も簡単な解決策は、少なくとも最初のサインインのために、VPSにより多くのメモリを割り当てることです。 それを望まない場合、別のオプションはスワップスペースを増やすことです。 DigitalOceanには、これをここで利用できるようにする方法に関する完全なチュートリアルがすでにあります(ただし、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が再起動するまで1〜2分待ってから、GitLabを再試行してください。 初めて機能しない場合は、Bad Gatewayページを数回更新すると、すぐにGitLabログインページが表示されます。

参照:

  1. 優れたGitlabインストールドキュメントこちらをご覧ください。
  2. また、502の不正なゲートウェイエラーに関する情報については、このスレッドを確認してください。

投稿者:Nik van der Ploeg