広告を貼り付けたい

Google AdSenseやAmazonアソシエイト(アフィリエイト)を貼り付けたい時、どうすればよいか。

基本設定

これらを使用するためには、<SCRIPT>タグが使用できる必要があります。

trust_modeが有効になっているか確認してください。標準インストール状態で、管理者アカウントを使用していれば有効になっているはずです。

サイドバーや記事に貼り付ける

「管理」→「デザイン」→「デザイン編集」を開きます。

広告コードの入力にはフリー入力モジュールを使用します。このモジュールを広告を表示したい位置に配置し、中身に広告コードをそのまま貼り付けます。

(単一表示時などの)「記事部」の下のほうにも貼り付けておくと良いでしょう。

Amazon商品へのリンク

「管理」→「基本設定」→「AmazonアフィリエイトID」という項目があります。

ここを適切に設定しておくと、記事内からAmazon商品へのリンクを貼るだけで、アフィリエイトIDが自動設定されます。


amazon記法やasin記法でもこの設定は有効になりますが、こちらを使うことは少ないと思われます。

TeXモード/MathJax

Ver3.10よりMathJaxという、より本格的な数式が書けるライブラリに対応しました。インターネットに接続された環境でのみ使用できます。

ブロック書式

数式ブロックを以下の方法で書くことができます。「```math~```」はVer3.21以降で使用できます。

ピタゴラスの定理[[math:a^2+b^2=c^2]](インライン数式)。
```math
f(t) = \int_{-\infty}^{\infty}g(x)(\cos(2\pi xt)+j\sin(2\pi xt))dx
```

解の公式の導出。
>>>||math
\begin{eqnarray}
ax^2 + bx + c &=& 0 \\
ax^2 + bx &=& -c \\
x^2 + \frac{b}{a}x &=& -\frac{c}{a} \\
\left(x + \frac{b}{2a}\right)^2 &=& -\frac{4ac}{4a^2} + \frac{b^2}{4a^2} \label{mul} \\
x + \frac{b}{2a} &=& \pm \sqrt{ \frac{b^2-4ac}{4a^2} } \\
x &=& - \frac{b}{2a} \pm \frac{ \sqrt{ b^2-4ac} }{2a} \\
\therefore x &=& \frac{-b \pm \sqrt{ b^2-4ac }}{2a} \label{kai}
\end{eqnarray}
||<<<
([mref:kai])式が「解の公式」と呼ばれる2次方程式の解の一般式です。
[mrefa:mul]式で[math:(x+y)^2=x^2+2xy+y^2]を使っていることに注意してください。

ピタゴラスの定理a^2+b^2=c^2(インライン数式)。

f(t) = \int_{-\infty}^{\infty}g(x)(\cos(2\pi xt)+j\sin(2\pi xt))dx

解の公式の導出。

\begin{eqnarray} ax^2 + bx + c &=& 0 \\ ax^2 + bx &=& -c \\ x^2 + \frac{b}{a}x &=& -\frac{c}{a} \\ \left(x + \frac{b}{2a}\right)^2 &=& -\frac{4ac}{4a^2} + \frac{b^2}{4a^2} \label{mul} \\ x + \frac{b}{2a} &=& \pm \sqrt{ \frac{b^2-4ac}{4a^2} } \\ x &=& - \frac{b}{2a} \pm \frac{ \sqrt{ b^2-4ac} }{2a} \\ \therefore x &=& \frac{-b \pm \sqrt{ b^2-4ac }}{2a} \label{kai} \end{eqnarray}

(\ref{kai})式が「解の公式」と呼ばれる2次方程式の解の一般式です。

(\ref{mul})式で(x+y)^2=x^2+2xy+y^2を使っていることに注意してください。

  • このブロック記述は<div class="math"></div>に展開されます。
  • \begin{xxx} ~ \end{xxx}などを使用でき、\begin環境中では式番号が自動的に付くよう設定してあります。
    • [mref:label-name]でラベル付けした式番号を参照できます。
    • かっこ文字( )付きで参照したい場合は [mrefa:label-name] を使用してください。
  • 試していませんが、MathJaxが対応しているマクロ定義なども通るはずです。

使用できる数式コマンドの詳細についてはMathJaxの資料やTeXの資料を参照してください。

インライン数式

表示にMathJaxを使用するだけで、TeX記法と変わりありません。

[[math:f(t) = \int_{-\infty}^{\infty}g(x)(\cos(2\pi xt)+j\sin(2\pi xt))dx ]]
[[mathd:f(t) = \int_{-\infty}^{\infty}g(x)(\cos(2\pi xt)+j\sin(2\pi xt))dx ]]

f(t) = \int_{-\infty}^{\infty}g(x)(\cos(2\pi xt)+j\sin(2\pi xt))dx

\displaystyle f(t) = \int_{-\infty}^{\infty}g(x)(\cos(2\pi xt)+j\sin(2\pi xt))dx

ディスプレイスタイルのインライン数式は [[mathd:]] タグを使います。[[math:]] タグを使って内部に「\displaystyle」とコマンドを書いても構いません。

TeXモード

数式をたくさん入力する場合、[[math:]]タグの入力が面倒なことがあります。そのような場合は、パーサーのモードをTeXモードに切り替えます。

Texモードの設定と解除

TeXモードを設定する場合は以下のように記述します。

[*tex]

解除したい場合は以下になります(Ver3.30以降)。

[*tex-off]

TeXモード使用サンプル

[*tex]
-$f(t) = \int_{-\infty}^{\infty}g(x)(\cos(2\pi xt)+j\sin(2\pi xt))dx$
-$$f(t) = \int_{-\infty}^{\infty}g(x)(\cos(2\pi xt)+j\sin(2\pi xt))dx$$
\[
x = \frac{-b \pm \sqrt{ b^2-4ac }}{2a}
\]
  • f(t) = \int_{-\infty}^{\infty}g(x)(\cos(2\pi xt)+j\sin(2\pi xt))dx
  • \displaystyle f(t) = \int_{-\infty}^{\infty}g(x)(\cos(2\pi xt)+j\sin(2\pi xt))dx
    x = \frac{-b \pm \sqrt{ b^2-4ac }}{2a}

TeXモードに切り替えることで「$~$」「$$~$$」「\[ ~ \]」(文中は不可)といったおなじみのTeX数式入力方法が使用できます。

\begin{}~\eng{}, \ref{label}

TeXモード設定中は、\begin{}~\eng{}行頭に書くことにより直接その部分に数式を書くことができます。また文中で\ref{label}を使って式番号を取得することができます。

\begin{equation}
y^2=x^3+ax+b \qquad  \textrm{※ただし}a,b\textrm{は定数} \label{ecc}
\end{equation}
楕円曲線は一般に(\ref{ecc})式により定義される。
\begin{equation} y^2=x^3+ax+b \qquad \textrm{※ただし}a,b\textrm{は定数} \label{ecc} \end{equation}

楕円曲線は一般に(\ref{ecc})式により定義される。

[mrefa:\]というカッコ付で参照するコマンドもあります。

楕円曲線は一般に\refa{ecc}式により定義される。

楕円曲線は一般に(\ref{ecc})式により定義される。

Markdownから入力したい

インライン記法タグの「[[math:]], [[mathd:]]」はそのまま使えます。

ブロック数式を記述したい時は、直接divブロックを記述してください。

<div class="math">
x,y,z,n \in \mathbb{N} \quad (n \geq 3) \\
\forall x,\forall y,\forall z,\forall n \qquad x^n + y^n \neq z^n
</div>
x,y,z,n \in \mathbb{N} \quad (n \geq 3) \\ \forall x,\forall y,\forall z,\forall n \qquad x^n + y^n \neq z^n

configパラメーター

adiaryでは MathJax を次のように設定しています。「$」や「\( \)」のほか、MathJax標準のTeX環境の認識機能(tex2jax.js)はすべてオフにしてあります。

// http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML
window.MathJax = {
	TeX: { equationNumbers: {autoNumber: "AMS"} },
	tex2jax: {
		inlineMath: [],
		displayMath: [],
		processEnvironments: false,
		processRefs: false
	},
	extensions: ['jsMath2jax.js']
};

Nginxでの設定

Ver3.10よりNginxでの動作を正式サポートしました。

動作環境

  • Nginx
  • Perl用FCGIモジュール

Debian系の場合は「libfcgi-perl」をインストールしてください。

以下のラッパーモジュールは不要です。adiaryはそのままでFastCGIに対応しています。

  • fcgiwrap
  • spawn-fcgi
  • fastcgi-wrapper.pl

設定方法

Nginx側では以下のように設定します。

server {
	listen 80 default_server;
	listen [::]:80 default_server;

	server_name	<Your-Server-Name>;
	root		/path/to/adiary;

	location / {
		try_files	$uri  @adiary;
	}

	location /__cache	{ deny all; }
	location /data		{ deny all; }
	location ~ \.cgi$	{ deny all; }

	location @adiary {
		include		fastcgi_params;

		fastcgi_pass	127.0.0.1:9000;
		fastcgi_param	Basepath	/;

		# Ver3.50より前のバージョンでは以下の設定も必要
		fastcgi_param	ModRewrite	1;
	}
}
  • 「<Your-Server-Name>」「/path/to/」の部分はご自分の環境に置き換えてください。
  • 「SCRIPT_FILENAME」は不要です。

adiaryを起動させる

この状態で、コンソールからadiary.fcgiを起動すれば利用できます。

./adiary.fcgi 127.0.0.1:9000 30
  • 第1引数がListenするポートです。UNIXドメインソケット(ファイル)を指定しても構いません。
  • (Ver3.50~)第2引数は生成スレッド数です。デフォルトは10です。
  • 実行させた権限で動作しますので、絶対にroot権限で起動してはいけません
  • 常駐させたい場合は最後に「&」を付けてください。

サーバの起動時、自動的に「adiary.fcgi」を起動させるためには、/etc/rc.local にスクリプトを書くなどの何かしらの細工が必要です。

su www-data -c '/path/to/adiary.fcgi 127.0.0.1:9000' &

もしくは、root以外の起動させたいユーザー権限でcrontabを登録するのも良いでしょう。

@reboot		/path/to/adiary.fcgi 127.0.0.1:9000 &

UNIX domain socketを使用する場合

TCP接続より少しだけ速くなるUNIX domain socketを使用した設定例です。ソケットのパーミッション問題(502 Bad Gateway)で悩みたくなければ、Ver3.40以降推奨。

	location @adiary {
		include		fastcgi_params;

		fastcgi_pass	unix:/path/to/adiary.sock;
		fastcgi_param	Basepath	/;
	}
./adiary.fcgi adiary.sock

ちょっと特殊な設定例

Document Rootに置かない場合

もしDocument Root(/path/to)配下の /adiary-path/ に実ファイルを置いた場合は、以下の部分を変更してください。

server {
	root	/path/to;

	location /adiary-path/ {
		# 略
	}
	location @adiary {
		# 略
		fastcgi_param	Basepath	/adiary-path/;
	}
}

aliasのように貼り付ける場合

無関係なDocument Rootに /adiary/ としてaliasのように設置する場合は、以下のようにしてください。

server {
	listen 80 default_server;
	listen [::]:80 default_server;

	server_name	theta;
	root		/var/www;

	location /adiary/ {
		root	/path/to/adiary;

		if ($uri ~ ^/adiary/(.+)$) { set $x $1; }
		if (-f $document_root/$x) {
			rewrite		^/adiary/(.*)$	/$1	break;
		}
		error_page 404 = @adiary;
	}

	location /adiary/__cache	{ deny all; }
	location /adiary/data		{ deny all; }
	location ~ \.cgi$		{ deny all; }

	location @adiary {
		include		fastcgi_params;

		fastcgi_pass	127.0.0.1:9000;
		fastcgi_param	Basepath	/adiary/;
	}
}

Ver2からの移行

adiary Ver3には、Version2からの移行ツールが内蔵されています。

  1. 旧adiaryと異なるディレクトリに adiary Ver3 をインストールします。
  2. adiaryの動作に必要なパーミッションなどを設定します。
  3. adiary.conf.cgi の「<$v.v2conf>」に旧adiaryの conf.cgi ファイルを指定します。
  4. 通常インストールと同じようにログインします。
  5. ログイン直後に「移行ツール」の画面が現れます。
    v2convert.png
  6. 画面の指示にしたがって移行処理を実行してください。
  7. 処理が完了後したら「<$v.v2conf>」の設定を削除します。*1

adiary Ver1.00でも一応の動作確認はしていますので、Ver1からでも同様に移行できると思います。

*1 : 間違ってもこの設定をしたまま放置しないでください。重大なセキュリティホールになります。

移行前と同じディレクトリ名で運用したい場合

2つ方法があります。どちらかを選択してください。

  • 移行前に adiary Ver2系のディレクトリ名を変更し、adiary Ver3を以前のディレクトリ名でインストールする。
  • 移行後に adiary のディレクトリ名を変更し、システム管理の「全ブログの再構築」を行う。

ヘルプ(困ったとき)

トラブル事例やその他「こうしたい時はどうすればいいの?」という情報です。

1つのアカウントで複数のブログを作りたい

管理者アカウントで「システム管理」→「任意のブログ作成」から。

アフィリエイトを貼りたい

デザイン編集から「フリー入力」モジュールを貼り付けたい位置に挿入し、その中身にアフィリエイト用のHTMLを設定してください。多くの場合、trust_modeが必要になります。

パスワードを忘れてログインできない

もし既に運用中のadiaryのパスワードを忘れてしまった場合は、_usersテーブルを直接操作してユーザーをすべて削除するか、adiary.conf.cgiを編集してユーザー管理テーブル名を(_usersを_users2等に)変更します。この状態で「適当なIDとパスワード」を入力してログインすると「管理者ユーザー追加画面」に移行しますので、そこで自分のアカウントを追加してください。

投稿した文章が途中で途切れてしまう

フォームサイズの制限に引っかかっている可能性が大きいです。adiary.conf.cgiのForm_optionsを見なおしてみてください。

デザインモジュール設定(見た目)やユーザーCSSが管理画面で反映されない 2016/02/01

仕様です。デザイン編集やユーザーCSSはとても自由度が高いため、ちょっと間違うと画面表示を破壊してしまいます。そのような状況に陥ったときは管理画面から再び復元する必要がありますが、その管理画面がまともに表示されない状況では打つ手がなくなってしまいます。

ですので、管理画面ではそれらのCSSは無効にしてあります。

ファイルのアップロード時、エラーになってしまう

adiaryではなくApacheによるシステムエラー(Internal Server Error)が出る場合は、Apacheの設定を疑ってください。「RLimitMem」が小さく設定されていることがあります。

またspeedycgiを使用している時、「Image::Magick」との相性があまり良くないようなので、同じデータをPOSTしてもエラーがでたりでなかったりするようでしたら「speedy_backendプロセス」を全部殺してみてください。

DBの記事データを直接書き換えたい

直接書き換えても特に問題は起きません。

書き換え後に、パーサーによる処理をもう一度したいなら「ブログの管理」から「ブログの再構築」、特に記事本文(_text)をいじってないのならば同じく「ブログの管理」から「付加情報の再生成」を行ってください。後者は適当な記事を開いて保存しても同じです。