0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

tDiary on Ubuntu 18.04

0
Last updated at Posted at 2019-07-21

はじめに

絶対に外部に公開したくない日記、というものが存在する。Cloud上で書いて完全非公開にすればよいのかもだけれど、万が一が怖い。手書きで管理するのは今更厳しい。手で文字入力なんて、手指の筋肉が衰え切った自分では不可能だ。テキストエディタで書き続けるのもさすがにアレ。というわけでtDiary.

ターゲットとなる環境

  • OS Ubuntu 18.04.2
  • Webサーバ Apache 2.4.x
  • tDiary 5.0.x

tDiaryのサイトにもインストールガイドはある。ただ、Apache 1.3をターゲットとしたもので止まってしまっていて、現在のApache2.4ではそのまま使えない。このため、Apache2のインストールと、そのカスタマイズを記載する。
ただ、これを書いている私自身もWeb関係技術の知識はUpdateが止まっているので、もしより楽な手法があれば教えてほしいところ

注意点、というか

今まで別環境で書いてきたtDiaryのレコードを、新しい環境へ移行するためのメモ。日記のデータはテキストで作成されたものであり、PostgreSQLなどのDB化したものではない。移行も検討したが、Databaseは普段触れることもない自分では、移行の時にもだえ苦しむと判断してテキストでの保存とした。
tDiaryの日記保存先をどうやって作るか、というのはこのエントリの対象外。デフォルトでの作り方はあると思うのだけれど、そこは調べてない。

Apache2のインストール

$ sudo apt install curl     # Curlのインストール
$ sudo apt install ufw      # Firewallをインストール
$ sudo ufw enable
$ sudo ufw allow 80         # Apache2用にPort 80を穴あけ
$ sudo apt install apache2  # Apach2のインストール
$ curl localhost && echo success || echo failed

Serverを入れるので、最初にFirewallを導入。
最後のは動作確認. successと戻ってくれば成功

CGIの有効化

$ cd /etc/apache2/mods-enabled
$ sudo ln -s ../mods-available/cgid.conf ./cgid.conf
$ sudo ln -s ../mods-available/cgid.load ./cgid.load

Mod Rewriteの有効化

tDiaryで過去の日付の日記を参照するとき、(http://XXXXXX/tdiary/20YYMMDD.html) といった形式でもアクセスできるようにしたい。これを実現するため、Mod Rewriteを有効にする。

$ sudo a2enmod rewrite     # mod_rewriteを書き換え
$ sudo sh -c "echo 'RewriteEngine on' > /etc/apache2/mods-available/rewrite.conf"
$ cd /etc/apache2/mods-enabled
$ sudo ln -s ../mods-available/rewrite.load ./rewrite.load
$ sudo ln -s ../mods-available/rewrite.conf ./rewrite.conf
$ sudo systemctl restart apache2

sudo で実行したコマンドしても、リダイレクトする際はsudo 対象外となるため、2行目はこのような書き方となってしまっている。

Rewriteルールの作成

$ sudo vi /etc/apache2/sites-available/000-default.conf

Mod Rewriteはここで有効にする. VirtualHostの配下で下記を記載. 後で出てくるconf-enabledの中に書いても期待するようには動いてくれなかった。なんだろう。

RewriteRule ^/tdiary/([0-9]+).html$ "/srv/www/tdiary/index.rb?date=$1"

tDiary向けにconfファイルの修正もあるけれど、まずはtDiary自体を展開することにする。

tDiaryのインストール

$ sudo apt-cache search tdiary
$ sudo apt install tdiary tdiary-theme tdiary-contrib

Ubuntu 18.04.2標準のパッケージをインストール。5.0.8だった。

tDiaryの展開先

$ sudo mkdir -p /srv/www/tdiary

tDiaryで共通して使用される各スクリプトはここに展開する。

日記データの保存先

$ ls /home/XXXXXX/diary #ここに保存
$ sudo chown -Rf www-data:www-data /home/XXXXXX/diary

対して、各個人が書いていく日記は別のところで保存。このエントリーでは/home/XXXXXX/diaryとしている。
アクセス権限はwww-dataにする必要があった。

tDiaryイメージの展開

$ whatis /usr/bin/tdiary-setup
tdiary-setup (1)     - installer to set up tdiary files for a user
$
$ sudo /usr/bin/tdiary-setup copy /srv/www/tdiary
Input data_path (default: /home/XXXXXX/data): /home/XXXXXX/diary ←環境に合わせて入力
Choose English, Japanese, Traditional-Chinese [E/j/z]: j ← 日本語に設定

data_path: /home/XXXXXX/diary
language: j
Correct? [Y/n]: y ← 正しければy. nでアボートする。
Input password for root in /home/XXXXXX/.htpasswd: XXXXXX ← パスワードを設定
Input again to confirm: XXXXXX ← 再度パスワードを入力
Copy all flies. You should setup CGI files by yourself.

ここでhtpasswdを書き込んでいるけれど、よく見たらrootのものになっている。
ここでユーザ名を指定する方法はあるのかな? 
最終的にはここで生成される.htaccessはそのまま使わず、新しくアカウントを指定して作った。

$ sudo htpasswd -c /home/XXXXXX/.htpasswd ユーザ名

tDiary用のApache Configファイルの用意

元ネタになるConfigは'/srv/www/tdiary/dot.htaccess'. これを下記のように書き換えた。
BASIC認証のユーザ名は.htpasswdで生成されたものと同じものとする。

$ sudo vi /etc/apache2/conf-available/tdiary.conf
alias /tdiary/images /home/XXXXXXXX/diary/images
alias /tdiary        /srv/www/tdiary
<Directory /srv/www/tdiary>
    Require all granted
    Options +ExecCGI
    AddHandler cgi-script .rb
    DirectoryIndex index.rb
    AddType application/xml .rdf
    <Files "*.rhtml*">
          deny from all
    </Files>

    <Files "tdiary.*">
          deny from all
    </Files>

    <Files update.rb>
          AuthName      tDiary
          AuthType      Basic
          AuthUserFile  /home/XXXXXX/.htpasswd
          Require user  ユーザ名
    </Files>

    <Files squeeze.rb>
          AuthName      tDiary
          AuthType      Basic
          AuthUserFile  /home/XXXXXX/.htpasswd
          Require user  ユーザ名
    </Files>
</Directory>

squeeze.rbは作成した日記をHTML形式で吐き出してくれるプラグイン。便利なのでずっと使っていたのだけれど、tDiary 5.0.0からはCoreからContribに移された
でも、dot.htaccessのサンプルConfigには載せられたままだった。修正漏れかな?

$ cd /etc/apache2/conf-enabled
$ sudo ln -s ../conf-available/tdiary.conf ./tdiary.conf
$ sudo systemctl restart apache2

tDiaryのチューニング

CSRF対策

この投稿では、tDiaryでの日記の保存先'/home/XXXXXX/diary/'としている。
日記自体のConfigはこのディレクトリの'tdiary.conf’で設定される。基本的にはtDiary上から編集できるが、いくつかできないものもある。
'base_url' => "http://XXXXXX/tdiary/",
という行がある。ここのホスト名(XXXXXX)をローカルノードの名前に合わせる必要がある。
(でないと、日記を書きこめない)

squeeze.rb

全文検索エンジンにFeedさせるのに便利なので、最初期から使っている。Contribから回収し、適切な場所にコピーする。

$ sudo cp /srv/www/tdiary/contrib/plugin/squeeze.rb /usr/share/tdiary/misc/plugin/

Ubuntuだと、デフォルトのプラグイン保存先がちょっと違っていた。/srv/www/tdiary/misc/pluginにも同一のプラグインが展開されるため、最初こちらにコピーしても動作しなくて慌ててしまった。

あと、/srv/www/tdiary/tdiary.confの最後に下記を追記

$ sudo vi /srv/www/tdiary/tdiary.conf

# SQUEEZE Plugin
@options['squeeze.compat_path'] = true
@options['squeeze.suffix'] = '.html'
@options['squeeze.output_path'] = '/home/XXXXXX/diary/html' ← HTMLファイルの出力先

ひとまず、これで構築完了。動く、ハズ。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?