かぁくん本紀自作CMS・自作サーバーにて運用中
PC・サーバ >

FedoraでFossil鯖を立てる(Nginxと共存可能)

公開日時: 2022-09-20 11:28:38更新日時: 2022-09-29 16:03:10Fossilざっくり解説の6ページ目、ここでは、LinuxマシンにFossilをインストールしてサーバを公開する方法についてまとめます。

なお、筆者はOSとしてFedoraを使用したサーバ構築を行いましたが、RHELやCentOSでも同様の手順でサーバ環境を構築可能と思われます。

1. Fossil本体のインストール

Fossil本体のインストールについては、こちらの記事の手順で行ってください。

2. サーバマシン上でのリポジトリ作成

Fossil本体がインストールできたら、サーバマシン上でリポジトリを作成します。
プロジェクト名やパスは読み替えてください。
  1. サーバマシン上の適当な場所にソースコードを置くフォルダとFossilのデータDBを置くフォルダをそれぞれ作成します。(GUIサーバならNautilus等のファイルマネージャーから行っても問題ありません。)

  2. データDBフォルダでターミナルを開きます。(GUIのない環境ではcdコマンドでデータDBフォルダに移動してください。)

  3. 以下のコマンドを順に実行し、サーバ上にリポジトリを作成します。仮パスワードが生成されるのでメモしておいてください。

    fossil init プロジェクト名.fossil
    fossil open プロジェクト名.fossil -f --workdir ソースコードフォルダまでのパス

  4. なお、ここで生成される「プロジェクト名.fossil」をコピーすることで、リポジトリ本体と様々な設定をバックアップすることができます。

  5. Nginxをリバースプロキシとして共存させる場合は以下の「Nginxをリバースプロキシとして設定する」まで読み飛ばしてください。Nginxを使用しない場合は、以下のコマンドを順に実行してサーバのTCP8080番ポートをpublicゾーンに永続開放します。(GUIサーバの場合、GUIの「ファイアウォール」ツールでも設定可能です。)
    8080番を別のアプリケーションが使用済みの場合は、8081番や8082番を使用することも可能です。

    sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
    sudo firewall-cmd --reload


  6. 以下のコマンドを実行すると、FossilのGUIがサーバとして起動します。

    fossil server FossilのデータDBフォルダのパス --port 8080

    サーバにはhttp://サーバのIPアドレス:8080/プロジェクト名/でアクセスできます。
    サーバを停止する場合は端末エミュレータにCtrl+Cを入力して強制終了させることができます。

3. Nginxをリバースプロキシとして設定する

NginxをリバースプロキシとしてFossilと共存させる場合は以下の手順を実行します。
なお、Nginxの初期設定と、80番及び8080番ポートの開放、Let's Encryptのサーバ証明書取得は事前に済ませておいてください。
  1. 以下のコードをfossil.confという名前で/etc/nginx/conf.d/に保存してから(保存時、要ルート権限)、Nginxを再起動します。
    なお、コード中のドメイン名やファイルパスは使用環境に合わせて変更してください。(「http://127.0.0.1」の部分はNginxとFossilが同一マシン上で実行される場合は変更不要です)

    server {
        listen 80;
        server_name example.jp;
        rewrite ^ https://example.jp$request_uri? permanent;
    }

    server {
        listen 443 ssl;
        server_name example.jp;

        access_log /var/log/nginx/example.jp.access.log;

        ssl_certificate /etc/letsencrypt/live/example.jp/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/example.jp/privkey.pem;
        ssl_session_timeout 1d;
        ssl_session_cache shared:SSL:50m;
        ssl_session_tickets on;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers on;
        
        location / {
            proxy_pass http://127.0.0.1:8080;
            proxy_redirect off;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-Host $host;
            proxy_set_header X-Forwarded-Server $host;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }

  2. 以下のコマンドでFossilのサーバ機能を起動します。

    fossil server FossilのデータDBフォルダのパス --port 8080 --https

    サーバにはhttps://サーバのIPアドレス/プロジェクト名/でアクセスできます。 サーバを停止する場合は端末エミュレータにCtrl+Cを入力して強制終了させることができます。

4. Fossilサーバを自動起動する

上記の手順では、いずれもサーバマシンの再起動のたびにFossilの起動コマンドを実行する必要が生じます。

これを回避するため、SystemdにFossilを登録して、OSの起動時にFossilが自動起動するよう設定することが可能です。(以下の手順は、Nginxと共存する場合の設定例です。)
  1. ルート権限で/etc/systemd/systemfossil.serviceという名前でテキストファイルを作成し、以下のサービスの起動設定を書き込みます。
    設定中のデータDBフォルダのパスは読み替えてください。

    [Unit]
    Description=Fossil server
    After=network-online.target

    [Service]
    WorkingDirectory=/var/lib/nginx
    ExecStart=/usr/bin/fossil server FossilのデータDBフォルダのパス --port 8080 --https
    Restart=always
    RestartSec=3
    User=nginx
    Group=nginx

    [Install]
    WantedBy=multi-user.target


  2. Systemdに起動された状態のFossilはリポジトリを作成したユーザーとは異なる権限で実行されるため、FossilがデータDBフォルダとその中のファイルにアクセスできるように権限を設定します。

    chmod 777 -R FossilのデータDBフォルダのパス

  3. 以下のコマンドでFossilが自動起動されるよう設定します。

    sudo systemctl enable fossil

    設定後、サーバマシンを再起動すると、Fossilが自動で起動します。

5. サーバのトップページを転送する

単一のサーバで複数のリポジトリを管理する場合、FossilサーバのルートのURLにアクセスすると404エラーになってしまいます。
必須の設定ではありませんが、これを別のページに転送したい場合は、前述のnginx設定ファイルの「location / {」の行の前に行を追加して以下のように転送先を指定します。

    location = / {
        return 301 https://example2.jp/;
    }

この記事のタグ:
Fossil

この記事へのコメント