qiita2review
「qiita2reviewの使い方」
https://qiita.com/nanbuwks/items/5625acb49580084696c5
「Re:VIEW を apache で動かす」
https://qiita.com/nanbuwks/items/dd15819ec7798a9eca7b
で紹介した、マルチユーザーで記事を執筆してPDF本を作るオンラインシステムをインストールする説明です。
環境
- Ubuntu 22.04 LTS
- Re:VIEW 5.8
2024/12/25 追記
以下でも動作確認OKでした。
- Ubuntu 24.04 LTS
- Re:VIEW 5.10
「AWS 上に Re:VIEW 環境を構築する (Ubuntu22.04 + Re:VIEW5.8)」
https://qiita.com/nanbuwks/items/653dda3993ebc23e6081
でインストールした環境です。
下準備
まず、Webサーバで動作させるために apache と php をインストールします
$ sudo apt install apache2 php python3-pip
apache の動作を確認してみます。
次に、qiita2review は、内部で markdown パーサ mdmd を使っています。mdmd が必要とするライブラリをインストールします。
$ sudo pip install mistletoe
作業場所 /var/www/html
での作業のため、root
ユーザになっておきます。
$ sudo bash
インストール
httpd の DocumentRoot で作業します。その他の場所を使う場合は適宜読み替えてください。
# cd /var/www/html
テストページを削除
# rm index.html
小冊子ごとにディレクトリを分けることにします。今回は milkV というディレクトリにしました。
# mkdir milkV
# chown www-data:www-data milkV
# cd milkV
ここに、github.com:nanbuwks/qiita2review.git
https://github.com/nanbuwks/qiita2review
の内容を展開します。
/var/www/html/milkV に以下のものがあるようにします。
# ls
README.md compile.php make.php md2review_special.sh new.php qiitaget.sh scalemd.rb test.sh
articles escapeincode.rb makeauthor.rb mdmd preimage.rb qiitagetold.sh slash2braceincode.rb texblock.rb
book index.php makeurl.rb mdmdorig preprocess.rb qiitamd.rb template texinline.rb
また、qiita2review が用いる markdown パーサ mdmd
を milkV/mdmd
に展開します。
milkV/mdmd
の中身が以下のようになっているようにします。
# ls mdmd
LICENSE README.md mdmd.py mdmd_renderer.py
ファイル所有者を調整します。
# chown -R www-data:www-data *
動作テスト
サーバにWebブラウザでアクセスします。
milkV/
ディレクトリをクリックすると以下の画面になります。
書誌デザインの調整
「Re:VIEW でレイアウトを調整してみよう」
https://qiita.com/nanbuwks/items/4dd9230058d1510dc93c
などの変更については、この時点でインスールしておくのが楽です。
template ディレクトリ内に書誌デザインに係るファイルを配置していきます。
今回は、config.yml および review-ext.yb,Gemfile, sty/review-custom.sty を配置しました。
つかっていく
あとは 「qiita2reviewの使い方」
https://qiita.com/nanbuwks/items/5625acb49580084696c5
を見て設定していきます。
トラブルシューティング
記事を登録したけど pdf 化がうまくいかないとき
今回記事名として webserver
という名前にしています。
個別記事は articles
ディレクトリに収容されています。
その中の webserver
ディレクトリに移ります。
# cd articles/webserver/
# ls
Gemfile catalog.yml doc lib normalmd2.md qiitaall.md sty temp.md webserver.pdf
Rakefile config.yml images normalmd1.md qiita2review.yml qiitanopreample.md style.css webserver.md webserver.re
実行プログラムは 記事ディレクトリから見て 2つ上の階層にあります。
ls ../..
README.md compile.php make.php md2review_special.sh new.php qiitaget.sh scalemd.rb test.sh
articles escapeincode.rb makeauthor.rb mdmd preimage.rb qiitagetold.sh slash2braceincode.rb texblock.rb
book index.php makeurl.rb mdmdorig preprocess.rb qiitamd.rb template texinline.rb
この中の、compile.php
が pdf 化するスクリプトです。
該当箇所
<?php
passthru("export LC_CTYPE=en_US.UTF-8; export LANG=en_US.UTF-8; cd articles/".$sectionName." ; ../../qiitaget.sh > /dev/null ".$sectionName);
?>
シェルスクリプトを記事名を引数にとって実行しています。
この処理をコマンドラインで実行してみます。
# ../../qiitaget.sh webserver
qiita から記事と画像ファイルをダウンロードし、markdown を re 形式に変換して Re:VIEW にかけます。
https://qiita.com/kazueda/items/736fa17584659426f056
rm: cannot remove 'qiita.md': No such file or directory
--2024-01-25 10:20:16-- https://qiita.com/kazueda/items/736fa17584659426f056.md
Resolving qiita.com (qiita.com)... 52.199.238.89, 57.181.68.9, 35.73.20.90, ...
Connecting to qiita.com (qiita.com)|52.199.238.89|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/x-markdown]
Saving to: ‘qiitaall.md’
qiitaall.md [ <=> ] 2.74K --.-KB/s in 0s
2024-01-25 10:20:17 (288 MB/s) - ‘qiitaall.md’ saved [2802]
python3: can't open file '/var/www/html/milkV/articles/webserver/../../mdmd/mdmd.py': [Errno 2] No such file or directory
No URLs found in images.list.
review-pdfmaker config.yml
ℹ INFO compiling webserver.tex
ℹ INFO uplatex -interaction=nonstopmode -file-line-error -halt-on-error __REVIEW_BOOK__.tex
ℹ INFO uplatex -interaction=nonstopmode -file-line-error -halt-on-error __REVIEW_BOOK__.tex
ℹ INFO uplatex -interaction=nonstopmode -file-line-error -halt-on-error __REVIEW_BOOK__.tex
ℹ INFO dvipdfmx -d 5 -z 9 __REVIEW_BOOK__.dvi
✔ SUCCESS built book.pdf
book.pdf はできているけど 途中でエラーが出てますね。
python3: can't open file '/var/www/html/milkV/articles/webserver/../../mdmd/mdmd.py': [Errno 2] No such file or directory
これは、markdown パーサ mdmd が必要なところに配置されていないためです。
mdmd をインストールしなおせば、解決しました。