GitBucketの基本的な設定

動作環境

GitBucketの基本的な設定

自分好みの設定

GitBucketを使用していくにあたって、以下の設定をしておこうと思いました。 - GitBucketのホームディレクトリは、自分で指定した場所にしたい。 - 指定したディレクトリ丸ごとバックアップをとりたかったので。 - Port番号は変更したい - 8080はやっぱり、何かで使うかもしれないので開けておきたい。 - アップロードファイルの制限を緩和したい - ファイル管理するのに、デフォルトの3Mはちょっと心もとないなと。10Mぐらいかな。

 ということで設定ファイルの更新です。

[Unit]
Description=The GitBucket Server

[Service]
User=develop
ExecStart=/usr/bin/java -jar [gitbucket.warを置いてあるフルパス]/gitbucket.war \
                        --gitbucket.home=[フルパスで任意の場所]] \
                        --port=60001 \
                        --max_file_size=10485760 \
                        

[Install]
WantedBy=multi-user.target
  • ポイントは、gitbucket.war を起動するとのオプションを追加するだけ。(簡単)
  • --gitbucket.homeは、フルパス指定じゃないとダメみたい。
  • オプションに関するマニュアルはここから

GitBucketを自動起動させてみる。

動作環境

GitBucketを自動起動させてみる。

  • 当然だけど、GitBucketを導入しただけでは、 OSの起動時に勝手に起動してくれているわけではないです。
  • これから、OSの起動時に勝手に起動してくれるように設定していきます。

 自動起動させるまでの手順

  1. GitBucketが起動していないことを確認。
$ ps -ef | grep gitbucket | grep -v grep
$ 
  • 何も表示されなければ、GitBucketは起動していないということ。
  • さぁ、これから自動起動の設定を始めます。

  • サービス定義ファイルを作成。

  • まずはローカルで作成するので、ログインユーザで作成できるところに gitbucket.service を作成します。
  • 作成した gitbucket.service は、以下の内容で作成します。
[Unit]
Description=The GitBucket Server

[Service]
User=develop
ExecStart=/usr/bin/java -jar -jar [gitbucket.warを置いてあるフルパス]/gitbucket.war

[Install]
WantedBy=multi-user.target
  • Unit -> Description : サービスの説明を記入
  • Service -> User : 実行ユーザを指定(今回は、通常使用しているユーザアカウントを使用しています。)
  • Service -> ExecStart : 起動時のコマンドを指定。(すべてフルパスで)
  • Install -> WantedBy : ランレベル3で実行するので。
  • ランレベルの説明については、過去記事(Apache2の自動起動の設定)を参照して下さい。

  • サービス定義ファイルをコピーします。

$ sudo cp -p gitbucket.service /lib/systemd/system/.
$ sudo chown root:root /lib/systemd/system/gitbucket.service 
  1. GitbucketをOS起動時に実行させるようにします。
$ sudo systemctl enable gitbucket.service 
Created symlink /etc/systemd/system/multi-user.target.wants/gitbucket.service → /lib/systemd/system/gitbucket.service.

ちょっとつまづいたところ

自動起動させようとしたら、起動していなかった件

  • $ journalctl --boot -u gitbucket.service を用いてログを確認したところ、以下のようなエラーが発生していました。
$ journalctl --boot -u gitbucket.service 
-- Logs begin at Fri 2022-01-28 17:18:39 JST, end at Thu 2022-02-03 14:24:16 JST. --
 2月 03 14:23:13 ubuntu systemd[1]: Started The GitBucket Server.
 2月 03 14:23:14 ubuntu java[618]: エラー: メイン・クラス.home.develop.work.gitbucket.warが見つからなかったかロードできませんでした
 2月 03 14:23:14 ubuntu systemd[1]: gitbucket.service: Main process exited, code=exited, status=1/FAILURE
 2月 03 14:23:14 ubuntu systemd[1]: gitbucket.service: Failed with result 'exit-code'.
  • なんでかなぁと思っていたら、どうやら起動コマンドが誤っていたみたいでした。
(誤)ExecStart=/usr/bin/java /home/develop/work/02_Service/01_GitBucket/gitbucket.war
(正)ExecStart=/usr/bin/java -jar /home/develop/work/02_Service/01_GitBucket/gitbucket.war
  • -jar オプションをつけ忘れていたみたいです。Javaのことはあまりわからないので・・・

GitBucketの導入

動作環境

GitBucketの導入

GitBucketの導入背景

  • 無償で利用できるGitHubなどの利用も考えましたが、一般公開するほどのプログラムでもないので^^;
  • 個人的に使っているプログラムの履歴管理をしたかったので。
  • せっかくローカルサーバを立てたので活用したかった。
  • GitBucketは、以前から使っていて導入のしやすいところや、安定性にも問題なかったので、個人的に気に入っているOSSであるので。

GitBucketのインストールを始める。

  1. Java8をインストールします。
sudo apt-get install openjdk-8-jdk
  • GitBucketを動作させるには、Java8が必要です。

  • GitBucketをダウンロードします。

wget -v -O gitbucket.war https://github.com/gitbucket/gitbucket/releases/download/4.37.2/gitbucket.war
  • インストール方法の詳細が必要であれば、ここを参照くださいね。

  • gitbucket.war を 任意の場所にコピーします。

  • コピー先は、どこでもでいいです。ダウンロードした場所でも特に問題ないですが、几帳面な方は、どこか整理されたディレクトリに移しておいた方が良いですね。

  • GitBucket.war を実行してみます。

# gitbucket.warがある場所に移動して、以下のコマンドを実行して下さい。

$ java -jar ./gitbucket.war
  • 実行すると、標準出力にログが出力されます。
  • Ctrl + C で 止めることもできます。

  • 「4.」が実行されている状態で、ブラウザから以下のアドレスに接続します。

http://[domain]:8080/
  • 以下のような画面が表示されれば、ひとまずOKです。

    f:id:itachi900:20220202172633p:plain
    GitBucket初期画面

  • 必要最低限、動かすだけならすごく簡単でしょ ^^

  • 8080ポートが取られてしまいますが、まぁ仕方ないと割り切って使います。
    • ポートの変更が必要になったら、その時に真面目に考えます。

今後はぼちぼち

  • GitBucketを自動起動させてみたいなと思っています。
    • Ubuntu でのサービス登録は、Apache自動起動の時に調べたので、それを応用することでできるかなぁと楽観的に考えています。

Apache2の自動起動の設定

動作環境

Apache2の自動起動の設定

Ubuntuを再起動してみると

  • 以前インストールした Apache2 が自動的に起動されるようになっていました。
  • 特に設定したつもりはなかったのだけれど、sudo apt install -y apache2 を実行したときに、勝手に登録されていたのかなぁと。
  • では、ubuntu の機構でどのように登録されているのか気になったので、少しだけ掘り下げて確認してみました。

色々情報収集してわかったこと。

  • Ubuntuでは、自動起動の設定は systemd でサービスが管理されているようです。
  • systemd で管理されるサービスの定義ファイルは、 /etc/systemd/system/ ディレクトリに収録されているようです。
  • apache2 においては、/etc/systemd/system/ 配下の multi-user.target.wants ディレクトリに、 apache2.service が存在していました。
$ pwd
/etc/systemd/system/multi-user.target.wants
$ 
$ 
$ ls -l apache2.service
lrwxrwxrwx 1 root root 35  1月 31 15:04 apache2.service -> /lib/systemd/system/apache2.service
  • ざっくり結論として、自動起動させるには以下の手順が必要そうです。
    • サービス定義ファイルの実体を /lib/systemd/system/ に配置する
    • /etc/systemd/system/multi-user.target.wants 配下には、サービス定義ファイルの実態を指し示すためのシンボリックリンクが必要

まだ分からないことがあったので補足

multi-user.target.wants ディレクトリって何者?

$ ls -l /usr/lib/systemd/system/runlevel?.target
lrwxrwxrwx 1 root root 15  1月 10 13:56 /usr/lib/systemd/system/runlevel0.target -> poweroff.target
lrwxrwxrwx 1 root root 13  1月 10 13:56 /usr/lib/systemd/system/runlevel1.target -> rescue.target
lrwxrwxrwx 1 root root 17  1月 10 13:56 /usr/lib/systemd/system/runlevel2.target -> multi-user.target
lrwxrwxrwx 1 root root 17  1月 10 13:56 /usr/lib/systemd/system/runlevel3.target -> multi-user.target
lrwxrwxrwx 1 root root 17  1月 10 13:56 /usr/lib/systemd/system/runlevel4.target -> multi-user.target
lrwxrwxrwx 1 root root 16  1月 10 13:56 /usr/lib/systemd/system/runlevel5.target -> graphical.target
lrwxrwxrwx 1 root root 13  1月 10 13:56 /usr/lib/systemd/system/runlevel6.target -> reboot.target
  • ランレベルとターゲットについて、もう少し調べて整理してみたのが以下の表となります。
ランレベル ターゲット 説明
0 poweroff システムが停止された状態
1 rescue セーフモードなどで起動された状態。
2, 3, 4 multi-user マルチユーザモード。CUIのみで起動するときはこの状態
5 graphical グラフィカルモード。GUI付きで起動するとこの状態
6 reboot 再起動をするときの状態

Apacheが起動するタイミング

  • これまで調べてきた内容より、Apache2は、multi-user.target.wantsディレクトリにサービス定義されていたので、ランレベルとしては、2 or 3 or 4 の状態の時に起動していたということが分かりました。
    • GUIが起動する前に、すでにApache2が起動しているということですね。

Apache2のインストール(Ubuntu)

動作環境

Apache2のインストールから起動までの手順

Apache2のインストール

sudo apt install -y apache2
  • 端末によっては、ファイアウォールの設定が必要になりますので、気をつけて下さいね。
  • ubuntuでは、apache2としてインストールしますが、CentOSなんかはhttpdでインストールするんですよね。

Apache2が起動しているか確認

$ sudo systemctl status apache2
[sudo] develop のパスワード: 
● apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2022-01-31 15:04:19 JST; 2 days ago
       Docs: https://httpd.apache.org/docs/2.4/
    Process: 1004645 ExecReload=/usr/sbin/apachectl graceful (code=exited, status=0/SUCCESS)
   Main PID: 682294 (apache2)
      Tasks: 55 (limit: 2243)
     Memory: 4.7M
     CGroup: /system.slice/apache2.service
             ├─ 682294 /usr/sbin/apache2 -k start
             ├─1004649 /usr/sbin/apache2 -k start
             └─1004650 /usr/sbin/apache2 -k start

 1月 31 15:04:19 ubuntu systemd[1]: Starting The Apache HTTP Server...
 1月 31 15:04:19 ubuntu systemd[1]: Started The Apache HTTP Server.
 2月 02 00:00:02 ubuntu systemd[1]: Reloading The Apache HTTP Server.
 2月 02 00:00:02 ubuntu systemd[1]: Reloaded The Apache HTTP Server.
  • 「Loaded: loaded」Active: active (running) と表示されているので、ちゃんと起動しているっぽいですね。
  • 実は私は上記のコマンドはあまり使ってなくて。
  • 昔からのクセで ps コマンドを使って、apacheプロセスが起動しているかどうかで判断していたりします。
  • psコマンドで確認するときは、$ ps -ef | grep apache2 で確認したりします。

ブラウザから起動確認

  • ブラウザ(ChromeでもEdgeでもなんでもよし)を起動して、http://[ドメイン]/index.htmlをたたくと、デフォルトのページが表示されるはず。
    Apcheデフォルトページ
  • ちなみにデフォルトページ内に、今後設定していく予定の apache2.conf なんかが格納されているディレクトリも示されています。