AWS上にRe:VIEW環境を構築する (Ubuntu20.04 + Re:VIEW5.3)


「AWS上にRe:VIEW環境を構築する」
https://qiita.com/nanbuwks/items/da9136f1b6f789aaffcf
では、Ubuntu 16.04 AMD64 上に Re:VIEW Ver.2系をインストールしました。

更に、
「qiita2reviewの使い方」
https://qiita.com/nanbuwks/items/5625acb49580084696c5
ではそれを使ってWebベース+コマンドラインで使えるやり方たを記しました。

今回は、2021年12月21日現在に使える組み合わせで構築を試しました。

:::note

 新しい環境でのテストを以下の記事で行っています。
 「qiita2review をインストール」
 https://qiita.com/nanbuwks/items/5b2c1bd9b45916559789
 
:::

# 環境

- AMAZON AWS t2.micro
 - 1VCPU
 - 1GIB
 - EBS のみ
- Ubuntu 20.04 AMD64
- Ruby 2.7

# 環境構築編
## Ruby インストール

Ubuntu 付属の Ruby と Rails をインストールします。

```

$ sudo apt install ruby-full
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  fonts-lato javascript-common libgmp-dev libgmpxx4ldbl libjs-jquery
  libruby2.7 rake ri ruby ruby-dev ruby-minitest ruby-net-telnet
  ruby-power-assert ruby-test-unit ruby-xmlrpc ruby2.7 ruby2.7-dev ruby2.7-doc
  rubygems-integration unzip zip
Suggested packages:
  apache2 | lighttpd | httpd gmp-doc libgmp10-doc libmpfr-dev bundler
The following NEW packages will be installed:
  fonts-lato javascript-common libgmp-dev libgmpxx4ldbl libjs-jquery
  libruby2.7 rake ri ruby ruby-dev ruby-full ruby-minitest ruby-net-telnet
  ruby-power-assert ruby-test-unit ruby-xmlrpc ruby2.7 ruby2.7-dev ruby2.7-doc
  rubygems-integration unzip zip
0 upgraded, 22 newly installed, 0 to remove and 0 not upgraded.
Need to get 9908 kB of archives.
After this operation, 58.8 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
```

これで入る Ruby は2.7。 rubygems-integration とあるので、 gem も使えるようになるのかな？


```
$  sudo apt install rails
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  chromium-browser chromium-chromedriver libc-ares2 libjs-coffeescript
  libjs-jquery-ui libjs-source-map libjs-uglify libnode64 node-turbolinks
  nodejs nodejs-doc puma ruby-actioncable ruby-actionmailer ruby-actionpack
  ruby-actionview ruby-activejob ruby-activemodel ruby-activerecord
  ruby-activestorage ruby-activesupport ruby-addressable ruby-archive-zip
  ruby-arel ruby-atomic ruby-bindex ruby-bootsnap ruby-builder ruby-bundler
  ruby-byebug ruby-capybara ruby-childprocess ruby-chromedriver-helper
  ruby-coffee-rails ruby-coffee-script ruby-coffee-script-source
  ruby-columnize ruby-concurrent ruby-crass ruby-erubi ruby-execjs ruby-ffi
  ruby-globalid ruby-hike ruby-i18n ruby-io-like ruby-jbuilder
  ruby-jquery-rails ruby-listen ruby-loofah ruby-mail ruby-marcel
  ruby-method-source ruby-mimemagic ruby-mini-mime ruby-molinillo ruby-msgpack
  ruby-multi-json ruby-net-http-persistent ruby-nio4r ruby-nokogiri ruby-oj
  ruby-pkg-config ruby-public-suffix ruby-rack ruby-rack-test ruby-rails
  ruby-rails-deprecated-sanitizer ruby-rails-dom-testing
  ruby-rails-html-sanitizer ruby-railties ruby-rb-inotify ruby-regexp-parser
  ruby-sass ruby-sass-rails ruby-sdoc ruby-selenium-webdriver ruby-spring
  ruby-spring-watcher-listen ruby-sprockets ruby-sprockets-rails ruby-sqlite3
  ruby-thor ruby-thread-safe ruby-tilt ruby-turbolinks ruby-turbolinks-source
  ruby-tzinfo ruby-uglifier ruby-web-console ruby-websocket-driver
  ruby-websocket-extensions ruby-xpath ruby-zip sqlite3
Suggested packages:
  coffeescript libjs-jquery-ui-docs npm ruby-launchy ruby-sass-listen
  firefoxdriver sqlite3-doc
The following NEW packages will be installed:
  chromium-browser chromium-chromedriver libc-ares2 libjs-coffeescript
  libjs-jquery-ui libjs-source-map libjs-uglify libnode64 node-turbolinks
  nodejs nodejs-doc puma rails ruby-actioncable ruby-actionmailer
  ruby-actionpack ruby-actionview ruby-activejob ruby-activemodel
  ruby-activerecord ruby-activestorage ruby-activesupport ruby-addressable
  ruby-archive-zip ruby-arel ruby-atomic ruby-bindex ruby-bootsnap
  ruby-builder ruby-bundler ruby-byebug ruby-capybara ruby-childprocess
  ruby-chromedriver-helper ruby-coffee-rails ruby-coffee-script
  ruby-coffee-script-source ruby-columnize ruby-concurrent ruby-crass
  ruby-erubi ruby-execjs ruby-ffi ruby-globalid ruby-hike ruby-i18n
  ruby-io-like ruby-jbuilder ruby-jquery-rails ruby-listen ruby-loofah
  ruby-mail ruby-marcel ruby-method-source ruby-mimemagic ruby-mini-mime
  ruby-molinillo ruby-msgpack ruby-multi-json ruby-net-http-persistent
  ruby-nio4r ruby-nokogiri ruby-oj ruby-pkg-config ruby-public-suffix
  ruby-rack ruby-rack-test ruby-rails ruby-rails-deprecated-sanitizer
  ruby-rails-dom-testing ruby-rails-html-sanitizer ruby-railties
  ruby-rb-inotify ruby-regexp-parser ruby-sass ruby-sass-rails ruby-sdoc
  ruby-selenium-webdriver ruby-spring ruby-spring-watcher-listen
  ruby-sprockets ruby-sprockets-rails ruby-sqlite3 ruby-thor ruby-thread-safe
  ruby-tilt ruby-turbolinks ruby-turbolinks-source ruby-tzinfo ruby-uglifier
  ruby-web-console ruby-websocket-driver ruby-websocket-extensions ruby-xpath
  ruby-zip sqlite3
0 upgraded, 96 newly installed, 0 to remove and 0 not upgraded.
Need to get 13.2 MB of archives.
After this operation, 64.8 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
```
それぞれのバージョンを確認します。

```

$ ruby -v
ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-linux-gnu]
$ gem -v
3.1.2
$ rails -v
Rails 5.2.3
```
## フォントをインストール

後ほどインストールする tex にフォントは含まれているぽい？ ここで入れなくてもいいかな？

```
$ sudo apt install ipaexfonts-noto-cjk-extra

```



## Re:VIEW インストール

```

$ gem install review
Fetching tty-color-0.6.0.gem
Fetching rouge-3.26.1.gem
Fetching tty-logger-0.6.0.gem
Fetching pastel-0.8.0.gem
Fetching review-5.3.0.gem
Fetching image_size-3.0.1.gem
ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /var/lib/gems/2.7.0 directory.

```

おっ。今回は、Apache 上で使うためにシステムにインストールすることにします。


```



$ sudo gem install review
Fetching tty-logger-0.6.0.gem
Fetching rouge-3.26.1.gem
Fetching review-5.3.0.gem
Fetching pastel-0.8.0.gem
Fetching tty-color-0.6.0.gem
Fetching image_size-3.0.1.gem
Successfully installed image_size-3.0.1
Successfully installed rouge-3.26.1
Successfully installed tty-color-0.6.0
Successfully installed pastel-0.8.0
Successfully installed tty-logger-0.6.0
Successfully installed review-5.3.0
Parsing documentation for image_size-3.0.1
Installing ri documentation for image_size-3.0.1
Parsing documentation for rouge-3.26.1
Installing ri documentation for rouge-3.26.1
Parsing documentation for tty-color-0.6.0
Installing ri documentation for tty-color-0.6.0
Parsing documentation for pastel-0.8.0
Installing ri documentation for pastel-0.8.0
Parsing documentation for tty-logger-0.6.0
Installing ri documentation for tty-logger-0.6.0
Parsing documentation for review-5.3.0
Installing ri documentation for review-5.3.0
Done installing documentation for image_size, rouge, tty-color, pastel, tty-logger, review after 11 seconds
6 gems installed

```


```

$ sudo gem instal md2review
Fetching md2review-1.12.1.gem
Fetching redcarpet-3.5.1.gem
Building native extensions. This could take a while...
ERROR:  Error installing md2review:
	ERROR: Failed to build gem native extension.

    current directory: /var/lib/gems/2.7.0/gems/redcarpet-3.5.1/ext/redcarpet
/usr/bin/ruby2.7 -I /usr/lib/ruby/2.7.0 -r ./siteconf20211213-17433-198317t.rb extconf.rb
creating Makefile

current directory: /var/lib/gems/2.7.0/gems/redcarpet-3.5.1/ext/redcarpet
make "DESTDIR=" clean
sh: 1: make: not found

current directory: /var/lib/gems/2.7.0/gems/redcarpet-3.5.1/ext/redcarpet
make "DESTDIR="
sh: 1: make: not found

make failed, exit code 127

Gem files will remain installed in /var/lib/gems/2.7.0/gems/redcarpet-3.5.1 for inspection.
Results logged to /var/lib/gems/2.7.0/extensions/x86_64-linux/2.7.0/redcarpet-3.5.1/gem_make.out

```

おっと、何も設定していない Ubuntu なので make が入っていませんでした。まとめて build-essential でインストールします。 

```

$ sudo apt install build-essential
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  binutils binutils-common binutils-x86-64-linux-gnu cpp cpp-9 dpkg-dev fakeroot g++ g++-9 gcc gcc-9 gcc-9-base
  libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl libasan5 libatomic1 libbinutils libc-dev-bin
  libc6-dev libcc1-0 libcrypt-dev libctf-nobfd0 libctf0 libdpkg-perl libfakeroot libfile-fcntllock-perl libgcc-9-dev libgomp1
  libisl22 libitm1 liblsan0 libmpc3 libquadmath0 libstdc++-9-dev libtsan0 libubsan1 linux-libc-dev make manpages-dev
Suggested packages:
  binutils-doc cpp-doc gcc-9-locales debian-keyring g++-multilib g++-9-multilib gcc-9-doc gcc-multilib autoconf automake
  libtool flex bison gdb gcc-doc gcc-9-multilib glibc-doc bzr libstdc++-9-doc make-doc
The following NEW packages will be installed:
  binutils binutils-common binutils-x86-64-linux-gnu build-essential cpp cpp-9 dpkg-dev fakeroot g++ g++-9 gcc gcc-9
  gcc-9-base libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl libasan5 libatomic1 libbinutils
  libc-dev-bin libc6-dev libcc1-0 libcrypt-dev libctf-nobfd0 libctf0 libdpkg-perl libfakeroot libfile-fcntllock-perl
  libgcc-9-dev libgomp1 libisl22 libitm1 liblsan0 libmpc3 libquadmath0 libstdc++-9-dev libtsan0 libubsan1 linux-libc-dev make
  manpages-dev
0 upgraded, 41 newly installed, 0 to remove and 0 not upgraded.
Need to get 43.0 MB of archives.
After this operation, 189 MB of add
```

改めて。

```

$ sudo gem install md2review
Building native extensions. This could take a while...
Successfully installed redcarpet-3.5.1
Successfully installed md2review-1.12.1
Parsing documentation for redcarpet-3.5.1
Installing ri documentation for redcarpet-3.5.1
Parsing documentation for md2review-1.12.1
Installing ri documentation for md2review-1.12.1
Done installing documentation for redcarpet, md2review after 0 seconds
2 gems installed
```

## tex インストール

uplatex とフォントをインストールします。

```
$ sudo apt-get install texlive-lang-japanese  texlive-latex-extra texlive-fonts-recommended

```

## pdf 関係ツールをインストール

pdf をページ単位で入れ替えたり取捨選択する pdftk をインストールします。

```

$ sudo apt install pdftk-java
```


pdf ページサイズの変更を行う時に使う pdfjam をインストールします。

```

$ sudo apt install texlive-extra-utils
```


必ずしも必要ありませんが、pdffonts コマンドがあれば埋め込みフォントの確認に便利です。

```

$ sudo apt install poppler-utils
```
## www-data で作業
 
 www-data を対話的ログオンできるようにしておきます。

コマンド実行でエラーが出たので/etc/passwdファイルの


www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
↓

www-data:x:33:33:www-data:/var/www:/bin/bash

として、www-dataでシェルログインできるようにします。
以降、www-data ユーザで作業します。

```

$ sudo su - www-data

```


インストールできたかな？ 試してみます

```

$ review-init testwrite
$ cd testwrite
$ rake pdf
```


これで、

```
# rake pdf
```
とすると、

book.pdfができました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/d04da6f1-31b8-4f11-167c-e71a118e1a91.png)

## qiita2review インストール

qiita2review を展開します。

```

$ git clone https://github.com/nanbuwks/qiita2review.git
```
$ mv qiita2review C99


import$ sudo apt install python3-pip
import mistletoe します。
$ sudo pip3 install mistletoe
Collecting mistletoe
  Downloading mistletoe-0.8.1-py3-none-any.whl (29 kB)
Installing collected packages: mistletoe
Successfully installed mistletoe-0.8.1

# qiita2reviewを使って同人誌を作る

template / config.yml を編集します。

## 記事の書き方

### Qiitaに記事を書く

markdown記法で書きます。画像もDrag&Dropで貼り付けられます。
markdown記法はこちらを参照。
「Markdown記法 チートシート」
http://qiita.com/Qiita/items/c686397e4a0f4f11683d

なお、後々PDFにするために、ちょっと気をつける点があります。

### 画像
画像はそのままだと100%になり、紙媒体では大きすぎることが多い。縮小設定をしておく。
通常の画像は

```
![ファイル名](https://qiita-image-store.s3.amazonaws.com/0/......8d78.jpeg)
```

のようになってますが

```
[]( scale=0.5 )![ファイル名](https://qiita-image-store.s3.amazonaws.com/0/......8d78.jpeg)

```
のように頭に［］( scale=0.5 )をつけると、Qiitaでは100%,PDFにしたときには50%サイズになります。


### Re:VIEWの制限

PDF化に使用しているRe:VIEWが受け付けない書式にならないように注意
- コメントの入れ子
- コードブロック開始前に改行を入れる

コードブロック開始前に改行がない場合、Markdownとしてもヘンになることが多いので改行を入れる習慣をつけよう。


## Qiitaに記事が書けたら

PDF化の確認をします。

qiita2reviewサーバページを開きます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/d8bc362d-536b-701a-e3b5-f5080bc0117e.png)

から、記事を登録します。
[]( scale=0.3 )![image](https://qiita-image-store.s3.amazonaws.com/0/139524/3ddd2c9c-f8fb-ac8b-1343-7f448089f045.png)

画面下部の
「Add new article title」
のフォームに入力して送信すると新しい記事が登録できる。

インターネット上で作業するときなどは適宜認証を入れてください。

Qiitaの1記事ごとにPDFになる。別刷りのようなイメージ。
[]( scale=0.3 )![image](https://qiita-image-store.s3.amazonaws.com/0/139524/8e21c0ad-c493-d476-ecee-d509e614a4d1.png)

# 原稿が集まったら


本としての装丁は管理者が行います。
1記事になっているものはそれぞれ章にして、まとめて1冊としてレンダリング→印刷
管理者のお仕事となります。今のところはサーバにsshログインしてRe:VIEWを使って手作業です。

## 本作成ディレクトリに移ります

```

$ cd book
```

## 原稿を集めます

```

$ rm *.re # ごみがあれば削除
$ cp ../articles/*/*.re . # 記事を一箇所に集めます　（ファイル名が衝突しないように注意）

```

## 画像を集めます

```

$ rm images/* # ごみがあれば削除
$ cp ../articles/*/images/* images # 記事ごとのイメージを一箇所に集めます　（ファイル名が衝突しないように注意）

```

## 章立てをつくります
```

$ ls *.re >> catalog.yml
$ vim catalog.yml

```

## 前書き、後書きをつくります
```

$ vim hajimeni.md
$ vim atogaki.md
$ ../md2review_special.sh hajimeni
$ ../md2review_special.sh atogaki

```
md2review_special は、Markdownに埋め込まれた構文を以下のようにRe:View形式に変換します。

```

[](review://pagebreak)
↓
//pagebreak

[](scale=0.5)![](droid-cafe.png)
↓
//image[droid-cafe][][scale=0.5]{
//}
```
## 書誌情報を設定します
```

$ vim config.yml

```

## レンダリングします。

cover.jpgなどを適宜作っておきます。

```

$ rake pdf
```
# 印刷所に出す

同人誌では、B5やA5などのサイズにする場合が多いでしょう。
しかしデータはA4で作った方が便利な場合もありますね。PC用のプリンタで印刷する場合は作ったPDFデータがどのサイズでも、出力時に紙サイズに合わせて出力すればいいですが、しかしながら印刷所に出すには、最終仕上がりと同じ原寸大でのPDFを求められます。
また、表紙、裏表紙などは本文とは別データで渡すことになり、更に遊び紙などの指定も必要に応じて行います。
![image](https://qiita-image-store.s3.amazonaws.com/0/139524/65fdd188-ebeb-4234-77ec-d3e27dac4d90.png)

手作業で、ページ単位の編集や紙サイズ変換を行っていきます。

## 白紙ファイル

ページ数も4ページ単位となるので、ページコントロールのために白紙を入れたりすることもあります。
以下はA4ブランクのPDFをダウンロードして使う例です。
```

  wget http://kujiraiken.sit.ac.jp/blog/files/blanksheet-a4-portrait.pdf
```
`


# 複数のPDFファイルからページを操作する

pdftkを使ってbook.pdfを加工します。
以下は表紙-扉-前書き-目次-本文-後書き-裏表紙で1ファイルになっているbook.pdfを使い、

- データ中の表紙を削除
- 扉、前書き、目次の2ページ〜7ページを出力
- 空白ページを入れて本文を本文が見開きスタートから開始するようにする
- 本文（データ中の最後から２ページ目まで）
- データ中の裏表紙を削除

してbooksort.pdfに出力した例です。

```

md
```
# 他の方法で作ったpdfファイルを差し込む

qiitaでは作れないタイプの章を入れたい時などは、pdfファイルにしたものを差し込みます。
以下の記事豊富尾を収録していますのでご参照ください。
「qiita2reviewの使い方」
https://qiita.com/nanbuwks/items/5625acb49580084696c5

## A4-A5に変換する
Title:          ロボットの謎と不思議に挑戦する ロー Vol.9
Subject:        
Keywords:       
Author:         秋葉原ロボット部
Creator:        Re:VIEW 5.3.0, with LaTeX
Producer:       dvipdfmx (20190824)
CreationDate:   Wed Dec 22 11:26:48 2021 JST
Tagged:         no
UserProperties: no
Suspects:       no
Form:           none
JavaScript:     no
Pages:          71
Encrypted:      no
Page size:      515.91 x 728.5 pts
Page rot:       0
File size:      26696986 bytes
Optimized:      no
PDF version:    1.5

A4 は、約594.35 pt x 841.99 pt

 pdfjamを使います。

```

 pdfjam --outfile bookhonbunA5.pdf --paper a5paper bookhonbun.pdf
```

output じゃなくて outfile と指定することに注意。