別途 adiary on RaspPi という記事で Raspberry Pi OS に adiary をインストールして、利用するところまで記事にしていますが、バージョンが上がったことでいくつか不都合があったり、仕様に手を入れたりしているので、新しく記事にしてみます。
この記事を作るにあたって、以下の読者を想定しています。
- CUI でのコマンド操作ができる。
- TCP/IP の基礎知識をもっている。
- 記事の内容を、自身の環境に読み替えることができる。
Raspberry Pi 3 Model B を利用します。
Debian 系 OS である、Raspberry Pi OS を利用します。
バージョン等は、以下の通りです。
$ cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 12 (bookworm)"
NAME="Raspbian GNU/Linux"
VERSION_ID="12"
VERSION="12 (bookworm)"
VERSION_CODENAME=bookworm
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"
Debian 系で cgi を動作させる場合、通常は /usr/lib/cgi-bin/ に置くものなのですが、自身の都合で環境設定を変更しています。
バージョンごとにしばらくバックアップ環境を残したいので、基本的にはこちらを利用しています。
デフォルトより1段下げてログ出力したいので、専用ディレクトリを作成します。
$ sudo mkdir /var/log/apache2/adiary
ちなみに、apache の環境設定ファイルで $APACHE_LOG_DIR と書きますが、/var/log/apache2/ を指します。
作業環境を整備します。
$ grep www /etc/passwd
$ cd /var/
$ ls -ld /var/www
drwxr-xr-x 3 root root 4096 7月 9 17:37 /var/www
$ sudo chown www-data:adm www
$ ls -ld /var/www
drwxr-xr-x 3 www-data www-data 4096 7月 9 17:37 /var/www
$ sudo su -s /bin/bash - www-data
$ pwd
/var/www
$ cp /etc/skel/.bashrc .
$ vi .bashrc
# umask
umask 027
$ diff .bashrc /etc/skel/.bashrc
114,116d113
<
< # umask
< umask 027
$ . .bashrc
https://adiary.org/pub/adiary/image/download/release/ にアクセスして、最新版を取得します。
ここでは、執筆時に最新版であった adiary-3.50h.tar.bz2 を利用します。
$ curl https://adiary.org/pub/adiary/image/download/release/adiary-3.50h.tar.bz2 --output adiary-3.50h.tar.bz2
$ ls -l
合計 4324
-rw-r----- 1 www-data www-data 4421745 12月 12 21:26 adiary-3.50h.tar.bz2
drwxr-xr-x 2 root root 4096 12月 12 21:32 html
$ sha256sum adiary-3.50h.tar.bz2
fb3beaea3ae1efdd3ed9855cd2f0ea2fe8c11299a9bc8864710591f80842f1a6 adiary-3.50h.tar.bz2
$ tar tvf adiary-3.50h.tar.bz2
$ tar xf adiary-3.50h.tar.bz2
$ ls -l
合計 4328
drwxr-x--- 13 www-data www-data 4096 10月 16 11:28 adiary-3.50h
-rw-r----- 1 www-data www-data 4421745 12月 12 21:26 adiary-3.50h.tar.bz2
drwxr-xr-x 2 root root 4096 12月 12 21:32 html
$ ln -s adiary-3.50h adiary
$ ls -l
合計 4328
lrwxrwxrwx 1 www-data www-data 12 12月 12 21:34 adiary -> adiary-3.50h
drwxr-x--- 13 www-data www-data 4096 10月 16 11:28 adiary-3.50h
-rw-r----- 1 www-data www-data 4421745 12月 12 21:26 adiary-3.50h.tar.bz2
drwxr-xr-x 2 root root 4096 12月 12 21:32 html
$ exit
ここからは、初期設定を記述します。
サーバ移行とかシステム復旧のような、データを上書きする場合はここで処理を止めます。
adiary のインストール後でなければ行えない Web 公開設定を行います。
adiary が制限を入れたいディレクトリは .htaccess ファイルが置かれています。
.htaccess ファイルを無効にし、すべて apache の設定ファイルに記述するようにしているため、ファイルを探しておきます。
$ sudo find /var/www/adiary -name .htaccess
./adiary-3.50h/lib/.htaccess
./adiary-3.50h/skel.local/.htaccess
./adiary-3.50h/info/.htaccess
./adiary-3.50h/plugin/.htaccess
./adiary-3.50h/__cache/.htaccess
./adiary-3.50h/data/.htaccess
./adiary-3.50h/skel/.htaccess
上記の制限内容を踏まえて、設定ファイルを作成します。
$ cd /etc/apache2/sites-available
$ sudo vi 001-adiary.conf
(Config writing...)
$ sudo cat 001-adiary.conf
<VirtualHost *:80>
ServerName ttm.jimba.ddo.jp
ServerAdmin xxx@jimba.ddo.jp
DocumentRoot /var/www/adiary
<Directory /var/www/adiary>
Options ExecCGI
AllowOverride None
# Rewite module
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ adiary.cgi/$1 [L]
</Directory>
<Directory /var/www/adiary/__cache>
order allow,deny
deny from all
</Directory>
<Directory /var/www/adiary/data>
order allow,deny
deny from all
</Directory>
<Directory /var/www/adiary/skel>
order allow,deny
deny from all
</Directory>
<Directory /var/www/adiary/plugin>
order allow,deny
deny from all
</Directory>
<Directory /var/www/adiary/info>
order allow,deny
deny from all
</Directory>
<Directory /var/www/adiary/lib>
order allow,deny
deny from all
</Directory>
<Directory /var/www/adiary/skel.local>
order allow,deny
deny from all
</Directory>
## CustomLog
# Variable setting - IP address
SetEnvIf Remote_Addr 192.168. local_network suppres-log
# Variable setting - Crawler
SetEnvIf User-Agent "BLEXBot" crawler suppres-log
SetEnvIf User-Agent "bingbot" crawler suppres-log
SetEnvIf User-Agent "Googlebot" crawler suppres-log
SetEnvIf User-Agent "Twitterbot" crawler suppres-log
SetEnvIf User-Agent "Applebot" crawler suppres-log
SetEnvIf User-Agent "DataForSeoBot" crawler suppres-log
SetEnvIf User-Agent "DotBot" crawler suppres-log
SetEnvIf User-Agent "Bytespider" crawler suppres-log
SetEnvIf User-Agent "GPTBot" crawler suppres-log
SetEnvIf User-Agent "LivelapBot" crawler suppres-log
# Variable setting - Site (Directory)
SetEnvIf Request_URI "/coffee" coffee suppres-log
ErrorLog ${APACHE_LOG_DIR}/ttm/error.log
# Log output
CustomLog ${APACHE_LOG_DIR}/adiary/local-access.log combined env=local_network
CustomLog ${APACHE_LOG_DIR}/adiary/crawler-access.log combined env=crawler
CustomLog ${APACHE_LOG_DIR}/adiary/coffee-access.log combined env=coffee
CustomLog ${APACHE_LOG_DIR}/adiary/access.log combined env=!suppres-log
</VirtualHost>
【参考情報】/var/www/adiary/.htaccess に書きたい内容は、上記主設定ファイル (201-adiary.conf) の <Directory /var/www/adiary> ~ </Directory> の中に書く。
根拠は、apache2 公式サイトより引用した以下の通り。
普通は可能であれば .htaccess ファイルの使用は 避けてください。.htaccess ファイルに書こうと考えるようなすべての設定は、サーバの主設定ファイルの セクションで同じように行なうことができます。
Apache HTTP Server Tutorial: .htaccess files - Apache HTTP Server Version 2.4
デフォルトのディレクトリにログを出力していれば不要なのですが、分かりやすさ優先で階層を作ったので、ログローテーション設定を追加します。
$ sudo cp -p /etc/logrotate.d/apache2 /etc/logrotate.d/adiary
$ vi /etc/logrotate.d/adiary
$ diff /etc/logrotate.d/apache2 /etc/logrotate.d/adiary
1c1
< /var/log/apache2/adiary/*.log {
---
> /var/log/apache2/*.log {
$ sudo systemctl status logrotate
特にサービス再起動とかは不要のよう。
設定ファイルを有効化する。
$ sudo a2ensite 001-adiary
Enabling site 201-adiary.
To activate the new configuration, you need to run:
systemctl reload apache2
$ sudo apachectl configtest
$ sudo systemctl reload apache2
また、不要になった設定ファイルは、混乱のもとなので消しておきます。
$ sudo find /var/www/adiary -name ".htaccess" -exec rm {} \;
DNS へ登録した URL (本サイトならば http://ttm.jimba.ddo.jp/) へアクセスして、root アカウント登録や、個別アカウントの登録などを行います。
案内にしたがって、管理者登録を行います。
http://ttm.jimba.ddo.jp/adiary.cgi?user/add
登録すると、登録した管理者ユーザでログインし直すようアナウンスがあるので、ログインし直します。
ブログを更新するユーザ等、個別にアカウントを作成します。
初期画面から作成したブログ画面へ移動するため index.html を書き換えます。
$ cd /var/www/adiary
$ cp -p index.html{,_backup_$(date +'%Y%m%d')}
$ cat /dev/null > index.html
$ vi index.html
(書き換え)
$ cat index.html
<html>
<head>
<meta http-equiv="Refresh" content="0;URL=adiary.cgi">
</head>
</html>
$
ボットに公開/非公開したい情報を教える設定。
以下はすべてのクロウラを拒絶する例
/var/www/adiary/robots.txt
User-agent: *
Disallow: