adiary on RPi 12
2023/12/14 22:09
前提条件
この記事を作るにあたって、以下の読者を想定しています。- CUI でのコマンド操作ができる。
- TCP/IP の基礎知識をもっている。
- 記事の内容を、自身の環境に読み替えることができる。
環境
筐体
Raspberry Pi 3 Model B を利用します。Raspberry Pi OS バージョン
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/ に置くものなのですが、自身の都合で環境設定を変更しています。環境準備
Raspberry Pi OS インストール
以下の順番で、手順を参照してください。Raspberry Pi OS 管理外
DNS 設定および HTTPS 設定 (TLS) については、ドメインのレジストリ/レジストラや証明書の発行機関が関わるため、ここでは記載しません。端末からテスト的に名前解決したい場合は hosts に記載すると良いでしょう。
対象のファイルパスは、以下の通りです。
C:\Windows\System32\drivers\etc例えば、192.168.10.10 が Raspberry Pi サーバで、example.jp という名前でアクセスしたい場合、上のファイルに次のように記載します。
192.168.10.10 example.jpこの設定を行った端末からは、192.168.10.10 に対して example.jp という名前でアクセスできるようになります。
Raspberry Pi OS 各種設定
以下の順番で、手順を参照してください。- Raspberry Pi OS raspi-config
- Raspberry Pi OS 実行環境整備
- Raspberry Pi OS IPv4 静的設定
- Raspberry Pi OS NTP 設定
前提パッケージのインストール
以下の順番で、手順を参照してください。adiary パッケージインストール(tar ボウル利用)
バージョンごとにしばらくバックアップ環境を残したいので、基本的にはこちらを利用しています。ログ出力ディレクトリ作成
デフォルトより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
ダウンロード(tar ボウル)
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 環境構築
ここからは、初期設定を記述します。サーバ移行とかシステム復旧のような、データを上書きする場合はここで処理を止めます。
Apache2 設定
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 {} \;
Web 上での設定
DNS へ登録した URL (本サイトならば http://ttm.jimba.ddo.jp/) へアクセスして、root アカウント登録や、個別アカウントの登録などを行います。root アカウント登録
案内にしたがって、管理者登録を行います。http://ttm.jimba.ddo.jp/adiary.cgi?user/add登録すると、登録した管理者ユーザでログインし直すようアナウンスがあるので、ログインし直します。
個別アカウント登録
ブログを更新するユーザ等、個別にアカウントを作成します。Web での設定後
初期画面からのリダイレクト設定
初期画面から作成したブログ画面へ移動するため 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> $
robots.txt
ボットに公開/非公開したい情報を教える設定。以下はすべてのクロウラを拒絶する例
/var/www/adiary/robots.txt
User-agent: * Disallow: