自宅サーバーとかの最近のブログ記事

こんなのできないかな?

今、このBlogのRSSをmixiにも読み込ませて、mixi日記をblogへと直リンクさせているのだが、PhotoBoxのRSS二本ともども一本のRSSにして、それをmixi日記へ直リンクさせることはできないかな・・・? TumblrでRSSを三本束ねることはすでにやっているのだが、これをmixiへリンクさせると、マイミクさんの行動は:

1. 日記のタイトルをクリック
 ↓
2. 外部にリンクしますという注意画面
 ↓
3. Tumblrが表示するエントリー画面
 ↓
4. コメント付き本物のBlog/PhotoBox画面

と行くので、見に来てくださる方にとっては非常にめんどくさいこととなる。2はmixiの仕様上どうしようもどうしようもないと思った方がよいので、せめて3をスキップして4へ直に飛べるようにしたい。なにせわしは、BlogよりPhotoBoxの方が更新頻度高いからな(爆)。Tumblrのような集約できる仕組みを作っておいて、そのリンクがダイジェストを表示する代わりに該当ページへ直接redirectするような仕組みがあればいいのか。その前にサーバー上で動かすRSSツールなんてのを探すのが先決かな。

とりあえず眠れないので自分用メモでしたw

Apache2をインストール - 4

さて、mod_rewriteのインストールを無事終了したので、httpd.confの
LoadModule rewrite_module modules/mod_rewrite.so
の下に
<ifmodule mod_rewrite.c="">
RewriteEngine On
RewriteRule ^/post/(.*)$ http://djkaz.tumblr.com/post/$1
RewriteRule ^/page/(.*)$ http://djkaz.tumblr.com/page/$1
</ifmodule>
を追記。
$ sudo apachectl -t
でhttpd.confを確認。問題なし。
$ sudo apachectl -k start
でApache 2を起動。

しかし、redirectされない・・・(-_-;

一連のRewriteRuleを書く場所が悪いのかと思い、あれこれやってみたがダメ。調べてみても、httpd.confにこれを書き込むだけとある。で、原点に立ち返ってみたら、VirtualHostsの中に書き込んだのを、仕様が変わったと思って外へ出したのだった。なわけで、
./conf/extra/httpd-vhosts.conf
の中へ書き込む。これで動くようになった v(^-^)

最後に、各ユーザーディレクトリーの設定を
./conf/extra/httpd-userdir.conf
に入れてやる。デフォルトが public_htmlだったところをSitesに変更。これで完了で、めでたくapache2での運用ができるようになった v(^-^)

Apache2をインストール - 3

前回までのあらすじ。
Apache2をインストールして、httpd.confをいじってみたが、mod_rewriteを記述する部分がないことに気づいた。

-------

で、しらべてみた。ちょうど創立10年のGoogleを活用しているが、ホント便利な時代になったな〜(じみじみ)。で、調べた結果が、mod_rewriteがインストールされていないらしい。このモジュールを入れてやらないといけないわけだが、調べたらソースコードはダウンロードしてあったのね。つーわけで、ダウンロードしてきた場所へ移動して、apxsを使ってインストール。参考にしたのはこちらだが、ここが実によくまとまっていて、順序を追っていてわかりやすい。

まずは、httpd.confをバックアップ
$ cd /usr/local/apache2/conf
$ sudo cp -p httpd.conf httpd.conf.orig

まず、mod_soがはいっているか確認して、
$ sudo /usr/local/apache2/bin/httpd -l

ソースコードを置いた場所に移動して、mod_rewrite.c の場所を確認
$ find . -name mod_rewrite.c -print

で、build
$ sudo /usr/local/apache2/bin/apxs -c mod_rewrite.c
Password:
/usr/local/apache2/build/libtool --silent --mode=compile gcc -prefer-pic -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -no-cpp-precomp -g -O2 -I/usr/local/apache2/include -I/usr/local/apache2/include -I/usr/local/apache2/include -c -o mod_rewrite.lo mod_rewrite.c && touch mod_rewrite.slo
/usr/local/apache2/build/libtool --silent --mode=link gcc -o mod_rewrite.la -rpath /usr/local/apache2/modules -module -avoid-version mod_rewrite.lo

んでから、インストール
$ sudo /usr/local/apache2/bin/apxs -i -a -n rewrite mod_rewrite.la

そしたら、httpd.confに以下の一文が追記されていた。

LoadModule rewrite_module modules/mod_rewrite.so

今日はここまで。

なわけで、一通り編集を終わらせたつもりで居たが、VirtualHostとか諸々の設定が別docになっていて、最後にこれをIncludeで呼び出している。そんな変更箇所を確認しながら、マニュアルを見つつ必要そうな物をコメント外して読み込ませる。でもって、こちらも編集。こないだ編集したVirtualHostsにmod_rewriteを組み込んだ物を、./extra/httpd-vhosts.conf の中に書き込んで、httpd.confと周辺ファイルの設定完了。

$ ./bin/apachectl -t

で確認をすると、httpd-vhosts.confの中にエラーが見られる。調べてみたら、Virtual Hostsの中に、mod_rewriteを埋め込んでるのがいけない・・・らしい? Apache2だから仕様が変わったのか? 仕方ないので、mod_rewriteをどこかへ書こうとおもったのだが、<IfModule mod_rewrite.c>の部分がない。どこに書いたらよいの?

復活させた自宅サーバーで動いているのがApache1.3なのだが、これをApache2にしようかと思い、行動に移した。

と言うても以前にやったことがあるので、公式ページからコードを落としていて、
$ sudo ./configure
$ sudo make
$ sudo make install

で、あっさりとインストール完了。
/usr/local/apache2
にバイナリーから設定ファイルまで全部作られるので、ここの ./conf/httpd.confを編集。
LeopardからApache2になっているので、このhttpd.confを設定にあちこち移植。

# Apple specific filesystem protection.
#

Order allow,deny
Deny from all
Satisfy All


Order allow,deny
Deny from all
Satisfy All

なんて行もあったりするので、やっといてよかったね♪

で、一通りコピーしたのだが、LoadModuleのあたりがごっそり抜けている。まぁ余分な機能を入れておく必要もないかと、大して気にすることもなく編集を終えた。

一昨日設定したmod_rewriteに続いて、昨日はVirtualHostを設定したのだが、mod_rewriteが動いてないことに気づいた。ログを漁ってみると、VirtualHostを設定したタイミングでmod_rewriteが無効になったっぽい。

なわけで、調べてみた。どうやら、VirtualHostの中にRewriteRuleを入れ込まないといけないみたい。
-----


ServerName djkaz.com
DocumentRoot /Library/WebServer/Documents
RewriteEngine On
RewriteRule ^/post/(.*)$ http://djkaz.tumblr.com/post/$1
RewriteRule ^/page/(.*)$ http://djkaz.tumblr.com/page/$1

-----
これでサーバーをリセットしたら直った。なかなか奥が深いのね。

VirtualHost設定

| トラックバック(2)

次はVirtualHostの設定。djkaz.com/~orz というユーザーを、orz.djkaz.comというドメインで公開するための設定。

最初に、DNSのホスト名を設定。うちはDDNSを使っているので、そのサイトへ行ってホスト名のところへorzを入力。1分で終了。

次に、UNIX。/etc/httpd/httpd.conf に以下のように入力。
--------


ServerName djkaz.com
DocumentRoot /Library/WebServer/Documents


ServerName orz.djkaz.com
DocumentRoot /Users/orz/Sites

--------
しかし動かない・・・。

参考にしたサイトがWindows向けだからか? あちこちのサイトを探してみたが、どーも上手くいかない。
--------

sudo apachectl configtest

--------
で設定を見直すが、こちらは問題がなさそう。で、httpd.confをあれこれ見ていたら、
--------

# Please see the documentation at http://www.apache.org/docs/vhosts/>
# for further details before you try to setup virtual hosts.

--------
とあったのでサイトを見てみた。
--------

For example, suppose that you are serving the domain www.domain.tld and you wish to add the virtual host www.otherdomain.tld, which points at the same IP address. Then you simply add the following to httpd.conf:

NameVirtualHost *


ServerName www.domain.tld
DocumentRoot /www/domain


ServerName www.otherdomain.tld
DocumentRoot /www/otherdomain

--------

ん?最初のNameVirtualHost *ってのがある?見るとコメントアウトしてある。なわけでコメントを外して、Web共有を再起動。あっさりできた☆

mod_rewrite

| トラックバック(2)

こないだ自分用にメモしたURLのRewritingをやることにした。

これまでdjkaz.comをtumblrに飛ばして、そこではBlogとPhotoBox二つ、合計三つ分のRSSを束ねて表示ということをしていたのだが、自宅サーバーを復活させるにあたって、djkaz.comをそっちへ向けることにした。

で、一日くらい経ってからログを見たら、Googleのボットが頻繁にやってきて、tumblrにあったファイルへアクセスしていく。試しに検索してみたら、tumblrのページが400件近くインデックス化されていた。Blog本編より多い(苦笑)。これを404としてみすみす捨ててしまうはもったいないな〜と思ったわけだ。

さて、今回参考にしたのは、mod_rewrite サンプル集
やりたいのは、
djkaz.com/post/* → djkaz.tumblr.com/post/*
djkaz.com/page/* → djkaz.tumblr.com/page/*
という二つ。まずは、
/etc/httpd/httpd.conf
をsudoでバックアップ後に開いて、この部分を探す
------

<ifmodule mod_rewrite.c="">
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^TRACE
RewriteRule .* - [F]
</ifmodule>

------
ここをのRewriteRuleに以下二行を追記、
------

RewriteRule ^/post/(.*)$ http://djkaz.tumblr.com/post/$1
RewriteRule ^/page/(.*)$ http://djkaz.tumblr.com/page/$1

------
./post 配下と ./page 配下を、http://djkaz.tumblr.com/の下にある同じディレクトリー名の場所へ飛ばすというもの。あとは、Web共有を再起動で完成。

試しに、
http://djkaz.com/post/50571082
へアクセスしてみると、
http://djkaz.tumblr.com/post/50571082
が返される。これでGoogleの検索結果を失うことなく、リダイレクトができるようになったわけだ。

July 2013

  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31