「GNU social JP Fossil」の版間の差分
Gnusocialjp (トーク | 投稿記録) (新規作成。) |
Gnusocialjp (トーク | 投稿記録) 細 (→Repository) |
||
(同じ利用者による、間の4版が非表示) | |||
1行目: | 1行目: | ||
[[Category:GNU social]] | [[Category:GNU social]] | ||
==About== | |||
== About == | |||
GNUプロジェクトのソースコードのホスティングには、フリーソフトを使用したサービスしか使用できない。 | GNUプロジェクトのソースコードのホスティングには、フリーソフトを使用したサービスしか使用できない。 | ||
それもあって、リポジトリーを自己ホストするために調査した。 | それもあって、リポジトリーを自己ホストするために調査した。 | ||
* phorge | *phorge | ||
* trac | *trac | ||
* kallithea | *kallithea | ||
* fossil | *fossil | ||
上記4ソフトのインストール・動作を2024-12に検証 (https://gnusocial.jp/notice/8089277) して、その結果fossilに決めた。fossslが唯一以下を満たした。 | 上記4ソフトのインストール・動作を2024-12に検証 (https://gnusocial.jp/notice/8089277) して、その結果fossilに決めた。fossslが唯一以下を満たした。 | ||
* CGIで動作 | *CGIで動作 | ||
* リポジトリーと管理UIの統合 | *リポジトリーと管理UIの統合 | ||
Tracもインストールはできたが、これはBTS機能のみで、リポジトリー自体のホスティングはgitwebやcgitなど別サービスが必要だった。2個に分かれるのが面倒くさい。 | Tracもインストールはできたが、これはBTS機能のみで、リポジトリー自体のホスティングはgitwebやcgitなど別サービスが必要だった。2個に分かれるのが面倒くさい。 | ||
21行目: | 19行目: | ||
FossilはSQLiteの著者が管理するプロジェクト。Gitが使いにくいと思っており、そこをうまく解消している。さすがのプロジェクト。 | 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 | |||
なお、「 [https://fossil-scm.org/home/doc/tip/www/server/ Fossil: How To Configure A Fossil Server]」に記載があるように、Fossil自体はFastCGI/SCGI/単独サーバーに対応している。ただ、FastCGIはOpenBSDのhttpd専用。残り2個は常駐プロセスで共用サーバーでは安定稼働できないのでCGIを選ぶ。 | |||
=== Binary === | |||
情報源=[https://fossil-scm.org/home/doc/trunk/www/index.wiki 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-2.25.tar.gz 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 === | |||
情報源 | |||
* [https://fossil-scm.org/home/doc/tip/www/server/any/cgi.md Fossil: Serving via CGI] | |||
* [https://fossil-scm.org/home/doc/tip/www/cgi.wiki Fossil: CGI Script Configuration Options] | |||
バイナリーを取得したので、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> | |||
<nowiki><html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml"></nowiki> | |||
<head> | |||
<meta charset="UTF-8" /> | |||
<meta name="author" content="SENOO, Ken" /> | |||
<title>GNU social JP Fossil</title> | |||
</head> | |||
<body> | |||
<nowiki><h1>GNU social JP Fossil</h1></nowiki> | |||
<main> | |||
<section> | |||
<nowiki><h1>About</h1></nowiki> | |||
<nowiki><p>This site hosts GNU social fossil repositories.<p></nowiki> | |||
</section> | |||
<section> | |||
<nowiki><h1>Link</h1></nowiki> | |||
<nowiki><ul></nowiki> | |||
<nowiki><li><a href="fossil">fossil</a></nowiki>: repository list.<nowiki></li></nowiki> | |||
<nowiki><li><a href="fossil/gnusocial">fossil/gnusocial</a></nowiki>: GNU social main repository<nowiki></li></nowiki> | |||
<nowiki></ul></nowiki> | |||
</section> | |||
</main> | |||
</body> | |||
<nowiki></html></nowiki> | |||
index.htmlは仮。必要になったタイミングで、内容やスタイルを改良する。 | |||
これで一旦稼働する。 | |||
* https://fossil.gnusocial.jp/ | |||
* https://fossil.gnusocial.jp/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に取り込む。 | |||
共用サーバーで作業する場合、インポートに時間がかかって、処理が中断する可能性が高い。 | |||
この作業はインポートの初回だけなので、コミット履歴が1000以上の膨大な場合、ローカルパソコンで作業して、インポート完了後のsqliteファイルだけ転送した方が確実。 | |||
まず以下のコマンドで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 | |||
実行が完了すると以下が表示される。 | |||
project-id: 6ebf1a799a9d9fd8fcb55a9a6c816fadcc2e0e4f | |||
server-id: e45ff282026d409ea80f78f6d1ea62d663b31dda | |||
admin-user: password is "password" | |||
sh -c 451.82s user 27.95s system 96% cpu 8:16.84 total | |||
このパスワードが管理画面の初期パスワードなので重要。保存しておく。gnusocial.fossilのサイズは225MBだった。 | |||
作成したgnusocial.fossilを共用サーバーの~/public_html/fossilに配置する。[https://fossil.gnusocial.jp/fossil/gnusocial/index<nowiki>] でアクセスできる。</nowiki> | |||
この後、Fossilの設定をいろいろ行う。特に重要なのがダウンロードページの作成。このページの作成が、composerなどの外部パッケージの配布などと密接に絡んでくるので重要。 | |||
後は、GNU social関係のプロジェクトのアーカイブもしたい。 | |||
* plugin | |||
* theme | |||
* tool | |||
上記の3ディレクトリーでサードパーティーのツール類を全部取り込んでここで一元管理したい。 |
2024年12月29日 (日) 10:50時点における版
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への変換が必要となる。
この作業は緊張する。
- git cloneでgitリポジトリーをローカルに取得。
- fossilに取り込む。
共用サーバーで作業する場合、インポートに時間がかかって、処理が中断する可能性が高い。
この作業はインポートの初回だけなので、コミット履歴が1000以上の膨大な場合、ローカルパソコンで作業して、インポート完了後のsqliteファイルだけ転送した方が確実。
まず以下のコマンドで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
実行が完了すると以下が表示される。
project-id: 6ebf1a799a9d9fd8fcb55a9a6c816fadcc2e0e4f server-id: e45ff282026d409ea80f78f6d1ea62d663b31dda admin-user: password is "password" sh -c 451.82s user 27.95s system 96% cpu 8:16.84 total
このパスワードが管理画面の初期パスワードなので重要。保存しておく。gnusocial.fossilのサイズは225MBだった。
作成したgnusocial.fossilを共用サーバーの~/public_html/fossilに配置する。[https://fossil.gnusocial.jp/fossil/gnusocial/index] でアクセスできる。
この後、Fossilの設定をいろいろ行う。特に重要なのがダウンロードページの作成。このページの作成が、composerなどの外部パッケージの配布などと密接に絡んでくるので重要。
後は、GNU social関係のプロジェクトのアーカイブもしたい。
- plugin
- theme
- tool
上記の3ディレクトリーでサードパーティーのツール類を全部取り込んでここで一元管理したい。