CentOS7の最小構成にGitLabをインストールしてみた
僕はプログラマではないので、Gitを使ったことがない。だが、会社でサーバを管理していると、Configファイルの追加・修正は頻繁に行っている。Configを変更する際にはバックアップを取っているのだが、なんでその変更を行ったのかの管理はエクセルで実施していた。このエクセルでの修正がかなり面倒で、非生産的な仕事になっている。
Gitの使い方を雑誌などで読むと、プログラムのソースコード管理しかできないわけではなく、configファイルのバージョン管理にも十分使えそうだということがわかってきた。
ということで、会社にGitサーバを建てる前にGitとはどういうものなのか、どう使えば良いのかを試すためにGitLabサーバを自分の家に建ててみた。
yumを使わずにrpmだけでGitLabをインストールする
会社のサーバが置かれているセグメントはInternetに対する接続性がない。ここにGitLabのサーバを作ることを考えるとGitLabはリポジトリを追加して、yumコマンドでインストール一発!というわけには行かない。そこで、rpmを取ってきてrpmコマンドでインストールしてみた。
CentOS7の最小構成インストール
VirtualBoxにCentOS7を最小構成でインストールする。この辺の手順は割愛。
VirtualPCを作るときに、公式ページに、"We also strongly recommend at least 4GB of free memory to run GitLab." なんてことが書いてあるので、メモリは4G以上にしておく。
公式の手順を確認する
GitLab公式の手順ではyumを使ったり、curlをつかったりしてインストールすることになっているが、yumを使わないでインストールするためにGitLabの GitLab公式に書いてある必要なものを確認し、インストールする。
まず、公式では
sudo yum install -y curl policycoreutils-python openssh-server
をやれと書いてある。
CentOS7のインストールを最小構成で行うと、curl
とopenssh-server
は初めからインストールされている。しかしpolicycoreutils-python
はインストールされていない。
また、
sudo systemctl enable sshd
sudo systemctl start sshd
でsshサーバを起動するように書いてあるが、これもインストールするとsshサーバは自動で起動するようになっている。
自動でsshdが起動するようになっているが、rootでもリモートからsshログインできてしまうので、/etc/ssh/sshd_configを編集してこれをできないようにしておく。
$ sudo /etc/ssh/sshd_config
PermitRootLogin No
$ sudo systemctl restart sshd.service
firewalldでhttpの穴が空いていないのでポリシーを追加する。
ちなみに、一般的なサービスは以前書いたように穴を開けるのではなく、多くの場合以下のように開けるのが普通らしい。
$ sudo firewall-cmd --permanent --add-service=http
$ sudo systemctl reload firewalld
次にpostfixをインストールするように書かれているが、これも初めからインストールされていて、自動起動するようになっているので以下は、特にやる必要はない。
sudo yum install postfix
sudo systemctl enable postfix
sudo systemctl start postfix
rpmファイルを取ってくる
policycoreutils-python
がインストールされていないので、RPMファイルをどこかのCentOS7のミラーサーバから取ってくる。僕がよく使うのは、理研さんのところでosとupdatesからダウンロードする。
RPMファイルをインストールする
さて、取ってきたpolicycoreutils-python-2.5-22.el7.x86_64.rpm
をrpmコマンドでインストールしようとすると、依存関係が満たされていないといって怒られてしまう。
依存関係を満たすまで、rpmを取ってきては入れ、取ってきては入れ、とやればよいのだが、いつ依存関係が解消されるのかわからない。そこでチートだが、rpmの依存関係がどうなっているのかを一発で調べるため、internetに接続環境があるところで、yumコマンドをつかって必要なrpmファイルを調べてみる。(ここでインストールしたらつまらないので、インストールはしない)
すると、policycoreutils-python-2.5-22.el7.x86_64.rpm
をインストールするには、以下のものが必要であることがわかった。
audit-libs-2.8.1-3.el7_5.1.x86_64.rpm
audit-libs-python-2.8.1-3.el7_5.1.x86_64.rpm
checkpolicy-2.5-6.el7.x86_64.rpm
libcgroup-0.41-15.el7.x86_64.rpm
libsemanage-python-2.5-11.el7.x86_64.rpm
policycoreutils-python-2.5-22.el7.x86_64.rpm
python-IPy-0.75-6.el7.noarch.rpm
setools-libs-3.3.8-2.el7.x86_64.rpm
これらも、個別にダウンロードしておく。
また、GitLabのRPMをダウンロードしてくる。
一気にインストール!
取ってきたrpmファイルを一気にインストールする。普通は一つ一つ指定してインストールする。
$ sudo rpm -ivh audit-libs-2.8.1-3.el7_5.1.x86_64.rpm audit-libs-python-2.8.1-3.el7_5.1.x86_64.rpm checkpolicy-2.5-6.el7.x86_64.rpm libcgroup-0.41-15.el7.x86_64.rpm libsemanage-python-2.5-11.el7.x86_64.rpm policycoreutils-python-2.5-22.el7.x86_64.rpm python-IPy-0.75-6.el7.noarch.rpm setools-libs-3.3.8-2.el7.x86_64.rpm gitlab-ce-11.2.5-ce.0.el7.x86_64.rpm
こんなやり方でインストールする方法もある。数が多くて面倒なとき。
$ pwd
/home/hoge/git
$ ls
audit-libs-2.8.1-3.el7_5.1.x86_64.rpm gitlab-ce-11.2.5-ce.0.el7.x86_64.rpm policycoreutils-python-2.5-22.el7.x86_64.rpm
audit-libs-python-2.8.1-3.el7_5.1.x86_64.rpm libcgroup-0.41-15.el7.x86_64.rpm python-IPy-0.75-6.el7.noarch.rpm
checkpolicy-2.5-6.el7.x86_64.rpm libsemanage-python-2.5-11.el7.x86_64.rpm setools-libs-3.3.8-2.el7.x86_64.rpm
$ sudo rpm -Uvh *.rpm
ただし下の方法だと、必要ないRPMファイルがあるとそれも一緒にインストールされてしまうので、必要なものだけを抽出しておく必要がある。
インストール後の設定
external_url の行をhost名に。(host名がgit.example.comの場合)
external_url 'http://git.example.com/'
gitlab-ctl コマンドを使って、設定ファイルでreconfig。
$ sudo gitlab-ctl reconfigure
これでとりあえず動いて、Webでアクセスできるようになった。
さて、これから使い方を勉強しよう。