独自のプライベートGitHubクローンとしてGitLabを設定する方法
ステータス:非推奨
この記事では、サポートされなくなったバージョンの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リポジトリにシンプルで強力なWebベースのインターフェイスを提供します。これは、独自のクラウドサーバーでホストし、必要に応じてアクセスを制御できます。リポジトリのサイズは、サーバーのストレージ容量によってのみ制限されます。 このチュートリアルでは、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ルートパスワードを設定するように求められます。 好きなように設定しますが、次の手順で必要になるので書き留めておきます。
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ルートパスワードを入力)、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 "gitlab@localhost" sudo -u git -H git config --global core.autocrlf input sudo -u git cp config/database.yml.mysql config/database.yml
次に、前に設定したgitlab
MySQLユーザーを使用するように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ログインページが表示されます。
参照: