tDiary on Ubuntu 18.04
はじめに
絶対に外部に公開したくない日記、というものが存在する。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
$ 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
$ 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ファイルの出力先
ひとまず、これで構築完了。動く、ハズ。
Author And Source
この問題について(tDiary on Ubuntu 18.04), 我々は、より多くの情報をここで見つけました https://qiita.com/Shakapon/items/bb81e3ca17f35101ac64著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .