お知らせ

現在サイトのリニューアル作業中のため、表示が崩れているページが存在することがあります。

adiaryの痒い所をちょこちょこ直している。上の画像にはないがCtrl + Vでクリップボードの画像をアップロードできる機能も付けている。

変更差分はもっぱらGitHubで管理していて、今日も最新版に追従させたところだ。

最近はOGPを強制出力するようにしたり、今日はSyntax HighlightをPrism.jsに置き換えるなどしていた。

adiaryはDiscordのようにChromeに詐称してくるBOT相手だとOGPが出ないし、標準のSyntax Highlightはしょっぱい。

比較用に元のやつを撮っておくのを忘れてしまったが、正直かなり良くなったと思う。

スマホで見たときに行折れせずスクロールできるようになったのも良い。

検索流入が増えていることがわかるGoogle Search consoleのグラフ

WordPressからadiaryへの移行に伴いアクセス数が減っていたのだが、最近徐々に元に戻っていることに気が付いた。理由はわかっていないがURL構造の変化あたりが大きいのだろうか?一応リダイレクトはかけているのだが…。

何はともあれ戻ってきているのはいいことだと思う。インデックス鵜や記事数も変わっているので単純比較こそできないものの上位の結果になっているページは変わっていないので、URL構造の変化を適当な理由にしておこうと思う。

しかもCTRについては上がってさえいるので、これは良い傾向だと思う。これもadiaryの成果なのだろうか?

改善傾向がわかるBing Webmaster toolの画面

Bing Webmaster toolも使っていて、こちらもadiary移行後は停滞したように見えなくもないが、こちらも最近では盛り返してきているように見えるので良い傾向だと思う。こちらは既にWordPressの時より良くなっているように見える。そもそものアクセス数が低くて何とも言えないがBingなので仕方がないだろう。

GoogleとBingでの流入キーワードは大まかには同じなのだが、細かく見るとBingはサーバーサイドやネットワーク系、COM3D2、Windowsのトラブルシューティング的な内容が多いように思う。もしかするとスタートメニューとかなんかから検索する人が多いのかもしれない。

Googleのキーワード流入情報
Bingのキーワード流入情報

参考までに以下は左がGoogle、右がBingの検索流入情報だ。

はてブが付くようになった。

blog.lycolia.info[B!]新着記事・評価 - はてなブックマーク

WordPressの時もブクマボタンはつけていたのだが、はてブが付くことがなかった。しかしadiaryにしたらつくようになった。WordPressは2年やり、adiaryはまだ4ヶ月だが、早くも7記事もブクマされている。ブクマ数が5 userになっているものさえある。

恐らくWordPressの時は余白の多いスカスカサイトだったのに対し、今は旧はてなダイアリーと酷似したデザインで、間が詰まっているから押されやすいのだろう。

他の個人サイトから被リンクを受けた

同じくadiaryで運営されている他のサイトのリンク集に掲載されていた。恐らくadiary利用者のページから辿られたのだと思うが、これはちょっと新鮮だった。

因みに他のサイトのリンク集に乗るのは実に13年ぶり、それも相互リンクでなく見知らぬサイトのリンク集からリンクされるパターンは22年運営してきて初ではなかろうか?

adiaryをローカルで開発するための動かす環境構築のログ。

前提条件

  • サーバー構成は前段にnginx、後段にapache2を配置し、adiaryはapache2側で動作させる
  • 動作URLはhttp://adiary.example.test/のようなサブドメイン付きURLとする
    • adiary.cgiなしでアクセス可能にする
  • 開発を楽にするため、ホームディレクトリからシンボリックリンクを飛ばし、VSCodeで編集できるようにする
  • nginxやapache2、perlは既にインストールされているものとする
    • apache2はポート8080でListenしているものとする

確認環境

Env Ver
OS Ubuntu 24.04.3 LTS
nginx 1.26.1
apache2 2.4.58 (Ubuntu)
adiary 3.51a

手順

この手順では手描きした内容をteeに書き直しており、正しくファイルが生やせるか見てないので注意。

  1. /etc/nginx/nginx.confhttpセクションのincludeの手前にapacheのupstream情報を追記する
    upstream apache {
      server [::1]:8080;
    }
    
  2. nginx→apache2のリバプロ設定の作成

    cat <<'EOF' | sudo tee /etc/nginx/conf.d/adiary.conf
    server {
      listen        [::]:80;
      client_max_body_size 100M;
      server_name  adiary.example.local;
    
      access_log   /var/log/nginx/adiary.example.access.log;
      error_log    /var/log/nginx/adiary.example.error.log;
    
      location / {
        proxy_pass http://apache/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
      }
    }
    EOF
    
    sudo service nginx restart
    
  3. Apache2でadiaryをホスティングするバーチャルホスト設定の作成

    cat <<'EOF' | sudo tee /etc/apache2/sites-enabled/001-adiary.conf
    <VirtualHost *:8080>
          # internal use only domain
          ServerName adiary.example.local
    
          ServerAdmin webmaster@localhost
          DocumentRoot /var/www/html/sites/adiary
    
          # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
          # error, crit, alert, emerg.
          # It is also possible to configure the loglevel for particular
          # modules, e.g.
          #LogLevel info ssl:warn
    
          ErrorLog ${APACHE_LOG_DIR}/adiary-error.log
          CustomLog ${APACHE_LOG_DIR}/adiary-access.log combined
    
          # For most configuration files from conf-available/, which are
          # enabled or disabled at a global level, it is possible to
          # include a line for only one particular virtual host. For example the
          # following line enables the CGI configuration for this host only
          # after it has been globally disabled with "a2disconf".
          #Include conf-available/serve-cgi-bin.conf
    </VirtualHost>
    EOF
    
  4. /etc/apache2/apache2.confを開き<Directory /var/www/>のセクションを次のように書き換える
    Options Indexes FollowSymLinks
    AllowOverride All
    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    AddHandler cgi-script .cgi
    Require all granted
    
    • Options +ExecCGI -MultiViews +SymLinksIfOwnerMatchの行は標準のserve-cgi-bin.confからパクってきたのでOptions +ExecCGIだけでも動く可能性がある
    • AllowOverride Allはindex.htmlを残したまま表示させないために.htaccessを書くのに使う
  5. mod_rewriteとmod_cgiを有効化し、apache2を再起動

    sudo a2enmod rewrite
    sudo a2enmod cgi
    
    sudo service apache2 restart
    
  6. /var/www/html/sites/adiaryを作成し、adiaryの動作環境一式を配置

  7. 開発し易いように権限を緩和
    chmod 777 -R /var/www/html/sites/adiary
    sudo chown -R <your-user-name>:<your-user-name> /var/www/html/sites/adiary/
    
  8. /var/www/html/sites/adiary/.htaccessにadiary用の.htaccessを書く

    DirectoryIndex
    
    RewriteEngine   On
    
    # favicon
    RewriteRule     ^favicon\.ico           /path/to/icon.png [L]
    
    # 正規URLは通す
    RewriteCond     %{REQUEST_FILENAME}     !-f
    RewriteRule     ^(.*)                  adiary.cgi/$1   [L]
    

Apache2でadiaryを動かす理由

結論から書くとnginx + fcgiwrapだとtry_filesの仕様的にadiaryが行うパス解析が上手く行かずに正常に動作しないためだ。

元々ModRewrite前提のCGIとして設計されており、個人的なユースケースがCGIとしての動作であることから、Apacheで動かすことにした。

adiaryの作者がcgiラッパーを作っているため、これを使えばnginxでも動かせそうだが、adiary専用のデーモンを起動するのもなんか嫌というのも理由の一つとしてある。

何より現在このブログが動作している環境が、さくらのレンタルサーバーであり、構成的にnginx + Apacheであるため、この構成を作ることに興味があったというのもあるし、現状のローカル環境ではnginxをフロントに立たせて後ろで様々なものを動かしている都合で、フロントはnginxで捌いた方が管理がしやすいのもある。

Google Search Consoleで状況を確認してみることにする。(Google Analyticsやレンサバのログ解析も似たような結果になっている)

クリック数は落ちているがクリックレートは維持されていることが読み取れる

アクセス数は以前よりかなり落ちている。これはタイミングの問題かもしれない。もし、CMS変更が原因であれば、URL変更やHTMLの構造変更が影響しているのだろう。少なくともコンテンツは丸ごと移してるし、URLのリダイレクトもほとんどは機能しているはずだ。いや実際に機能しているかまで確認はしてないが…。

まぁアクセスが多くても負荷が高まってサーバーが落ちたりするので、このくらいが程よいのかもしれない。

未登録URLが増え、登録済みURLも増えたことが読み取れる

またインデックスについては未登録URLがグッと増えた。グラフを見る感じWordPressのURLがまるっと未登録になり、adiaryの分が増えた感じだろう。adiaryの方が記事URLに対してサイトマップの登録率が高いが、これはadiaryとWordPressでサイトマップのファイル構成が異なることに起因している可能性がある。例えばadiaryはサイトマップが1ファイルなのに対し、WordPressは複数ファイルであるため、Google側の解釈に差が出ているとか、そもそもXMLの内容も違うはずなので、色々影響しているのかもしれない。

インデックス状況についてはWordPressの頃は手動登録しないとインデックスされないことが少なくなかったが、adiaryでは何もせずともインデックスされるので、ここについては大きく満足している。やはりこれはWordPressよりadiaryの方が早いことに起因しているだろう。