「GNU social JP Fossil」の版間の差分

提供:GNU social JP Wiki
(→‎CGI)
(Repository)
113行目: 113行目:


あとはFossilリポジトリーの用意。
あとはFossilリポジトリーの用意。
=== Repository ===
* [https://fossil-scm.org/home/doc/trunk/www/inout.wiki Fossil: Import And Export]
Fossil自体の用意はできたので、public_html/fossilにリポジトリーを配置する。GitからFossilへの変換が必要となる。
この作業は緊張する。
# git cloneでgitリポジトリーをローカルに取得。
# fossilに取り込む。
共用サーバーで作業する場合、リポジトリーの取得に時間がかかる可能性があるので、ネットワーク帯域の節約のため分割して確実に取得する。
cd ~/public_html/fossil
まず以下のコマンドでgitリポジトリー全体を取得する。
git clone --depth 1 https://notabug.org/gnusocialjp/gnusocial
cd gnusocial
git config remote.origin.fetch '+refs/heads/*:refs/remotes/origin/*'
git fetch --unshallow
cd ..
以下のコマンドでgitリポジトリーをFossilリポジトリーに変換する。
git -C gnusocial fast-export --all | fossil import --git gnusocial.fossil
このコマンドは実行に時間がかかるからローカルパソコンでやったほうがいいかもしれない。あるいは、再開する方法がないか?

2024年12月29日 (日) 09:55時点における版

About

GNUプロジェクトのソースコードのホスティングには、フリーソフトを使用したサービスしか使用できない。

それもあって、リポジトリーを自己ホストするために調査した。

  • phorge
  • trac
  • kallithea
  • fossil

上記4ソフトのインストール・動作を2024-12に検証 (https://gnusocial.jp/notice/8089277) して、その結果fossilに決めた。fossslが唯一以下を満たした。

  • CGIで動作
  • リポジトリーと管理UIの統合

Tracもインストールはできたが、これはBTS機能のみで、リポジトリー自体のホスティングはgitwebやcgitなど別サービスが必要だった。2個に分かれるのが面倒くさい。

FossilはSQLiteの著者が管理するプロジェクト。Gitが使いにくいと思っており、そこをうまく解消している。さすがのプロジェクト。

Install

Condition

wiki.gnusocial.jpなどをホストしているCORESERVERに追加する形でインストールする。

  • ドメイン=fossil.gnusocial.jp
  • ホスティングサービス=CORESERVER
  • 方式=CGI
  • Web Server=Apache HTTP Server 2.4.37
  • OS=GNU/Linux

なお、「 Fossil: How To Configure A Fossil Server」に記載があるように、Fossil自体はFastCGI/SCGI/単独サーバーに対応している。ただ、FastCGIはOpenBSDのhttpd専用。残り2個は常駐プロセスで共用サーバーでは安定稼働できないのでCGIを選ぶ。

Binary

情報源=Fossil: A Coherent Software Configuration Management System

インストールに先立って、fossilのバイナリーを取得する。

ソースコードからコンパイルするか、コンパイル済みバイナリーを配置するだけ。設置先の共用サーバーにログインして、以下のコマンドを実行する。

VER=2.25
mkdir -p ~/.local/stow/fossil-$VER ~/.local/bin
cd ~/.local/stow/fossil-$VER
curl -O https://fossil-scm.org/home/uv/fossil-linux-x64-$VER.tar.gz
tar -xf fossil-$VER.*
ln -fns ../stow/fossil-$VER/fossil ../../bin/

.bashrcなどに以下を記入して、PATHを設定しておく。

export PATH="$PATH:~/.local/bin"

CGI

情報源

バイナリーを取得したので、CGIで動作させるために設定する。

ディレクトリー構成は以下とする。

  • public_html
    • fossil: fossilリポジトリーの格納場所。
    • fossil.gnusocial.jp: 公開ディレクトリー。
      • .htaccess
      • fossil: FossilのCGI。
      • index.html

以下のコマンドでディレクトリーを作ってCGIファイルなどを配置する。

mkdir -p ~/public_html/fossil ~/public_html/fossil.gnusocial.jp
cd ~/public_html/fossil.gnusocial.jp

cat <<-'EOT' >.htaccess
<FilesMatch fossil$>
	SetHandler cgi-script
</FilesMatch>
EOT

cat <<-EOT >fossil
#!$HOME/.local/bin/fossil
directory: $HOME/public_html/fossil
notfound: /fossil
repolist
EOT

cat <<-'EOT' >index.html
<!DOCTYPE html>
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta charset="UTF-8" />
    <meta name="author" content="SENOO, Ken" />
    <title>GNU social JP Fossil</title>
  </head>
  <body>
    <h1>GNU social JP Fossil</h1>
    <main>
<section>
<h1>About</h1>
<p>This site hosts GNU social fossil repositories.<p>
</section>
<section>
<h1>Link</h1>
<ul>
<li><a href="fossil">fossil</a>: repository list.</li>
<li><a href="fossil/gnusocial">fossil/gnusocial</a>: GNU social main repository</li>
</ul>
</section>
    </main>
  </body>
</html>

index.htmlは仮。必要になったタイミングで、内容やスタイルを改良する。

これで一旦稼働する。

あとはFossilリポジトリーの用意。

Repository

Fossil自体の用意はできたので、public_html/fossilにリポジトリーを配置する。GitからFossilへの変換が必要となる。

この作業は緊張する。

  1. git cloneでgitリポジトリーをローカルに取得。
  2. fossilに取り込む。

共用サーバーで作業する場合、リポジトリーの取得に時間がかかる可能性があるので、ネットワーク帯域の節約のため分割して確実に取得する。

cd ~/public_html/fossil

まず以下のコマンドでgitリポジトリー全体を取得する。

git clone --depth 1 https://notabug.org/gnusocialjp/gnusocial
cd gnusocial
git config remote.origin.fetch '+refs/heads/*:refs/remotes/origin/*'
git fetch --unshallow
cd ..

以下のコマンドでgitリポジトリーをFossilリポジトリーに変換する。

git -C gnusocial fast-export --all | fossil import --git gnusocial.fossil

このコマンドは実行に時間がかかるからローカルパソコンでやったほうがいいかもしれない。あるいは、再開する方法がないか?