Jul 19, 2013

AirMac Diskを外から使う

ポスト @ 0:34:16 , 修正 @ Jul 18, 2013 15:34:16 | MacOSX,ubuntu

 以前、職場から自宅のAirMac Extremeに繋いだディスクに接続できなかったのだが、いつの間にか繋がるやうにその設定等を控えておく。

 AirMacユーティリティ(英語版だとAirPort Utility)でディスクを接続しているAirMacを開いて、Disksのパネルでファイル共有をオンにする。ここでは、LaCieの外付けハードディスクをUSB接続しているので、LaCieと名付けている。

AirPort Disk
次にモデム/ルータの設定を開いて、このAirMac Extremeのport 458を外に対して開く。

 どこでもMyMac(英語だとBack to My Mac)は使わない(設定しない)。

 これだけでいいはず。

 繋ぐときは、Finderでサーバへ接続を選んで、サーバの登録をする。ServerAddressにafp://xxx.xxx.xxx.xxx/LaCieと入力して、Connectボタンを押すだけ。iPadから繋ぐときは、afpに対応しているアプリ、例えばGoodReaderを使えば簡単にできる。

 Ubuntuから繋ぐこともできる。まず、afpfs-ng, afpfs-ng-utils, libafpclient0をインストール。ホームディレクトリに、MyMacというディレクトリを作成。そして以下のようにマウントすればいい。

$ mount_afp afp://username:password@xxx.xxx.xxx.xxx/LaCie ~/MyMac
Mounting xxx.xxx.xxx.xxx from LaCie on /home/xxxxx/MyMac
Mounting of volume LaCie of server AirMac00 succeeded.
といった具合で、接続完了。意外に簡単である。

 いや、これは便利である。EC2のWebDAV要らなかったじゃないかといいいたくなるほどである。

Jul 17, 2013

Ubuntu 13.04 (Amazon EC2) でWebDAV

ポスト @ 23:24:03 , 修正 @ Jul 17, 2013 14:24:03 | Amazon,ubuntu

 今度は、WebDAVである。一つあったら何かと便利ではないかと思って……

 まず、libapache2-mod-encodingをインストール。多分、日本語名などに対応できるようにするため。

sudo apt-get install libapache2-mod-encoding
次に、webDAV用のディレクトリを作る。目的の場所で、こんなふうに。今回は追加で作ったEBSで。
$ sudo mkdir webdav
$ sudo chown www-data:www-data webdav
$ sudo chmod 770 webdav 
/etc/apache2/conf.dにあるwebdav.confに、次のように書く。
Alias /dav /mnt/vol/dav
<Location /dav>
  DAV On
  AuthUserFile  "/etc/xxxx/.htpasswd"
  AuthName  "WebDav Server"
  AuthType  Basic
  Require valid-user
</Location>
そして、/etc/apache2/mods-available/にencoding.confという名のファイルを作成し、以下を記述。
<IfModule mod_encoding.c>
    EncodingEngine    on
    NormalizeUsername on
    SetServerEncoding     UTF-8
    DefaultClientEncoding JA-AUTO-SJIS-MS SJIS
    AddClientEncoding "cadaver/" EUC-JP
</IfModule>
ここで、WebDAV関連のアプリケーションを動かす。
$ sudo a2enmod dav
Enabling module dav.
To activate the new configuration, you need to run:
  service apache2 restart
$ sudo a2enmod dav_fs
Considering dependency dav for dav_fs:
Module dav already enabled
Enabling module dav_fs.
To activate the new configuration, you need to run:
  service apache2 restart
$ sudo a2enmod encoding
Enabling module encoding.
To activate the new configuration, you need to run:
  service apache2 restart
何度も、service apache2 restartが必要と言われるけれども、まだしない。最後に、パスワードを作る。
$ sudo htpasswd -c .htpasswd xxxxx
New password:
Re-type new password:
Adding password for user xxxxx
これで、ようやく
$ sudo service apache2 restart
これでアクセスできるようになっているはず。次は、利用する方(クライアント)である。MacOSXの場合は、Finderから「サーバに接続」を選んで、http://xxx.xxx.xxx.xxx/dav と入力してEnterキーを叩くだけ。ユーザ名とパスワードを入れるように要求されるので上で設定したものを入力すればいい。簡単である。

 次は、Ubuntu 13.04で使えるように設定した。まず、davfs2をインストール。

$ sudo apt-get install davfs2
一般ユーザがマウントできるように、
$ sudo chmod u+s /usr/sbin/mount.davfs 
自分をdsvfs2グループに追加する
$ sudo gpasswd -a xxxx davfs2
Adding user xxxx to group davfs2
次にdavfs2の設定ファイルを置くために、ホームディレクトリに.davfs2というフォルダを作る。そして、その中に、davfs2.confというファイルを置いて、
use_locks 0
server_charset UTF-8
と書く。さらに、同じ場所にsecretsというファイルを作って、
http://xxx.xxx.xxx.xxx/dav xxxxx passwrd
と書き込み、このファイルの権限を600にする。そして、マウントするディレクトリを作る。私はホームディレクトリにMyDAVというフォルダを作った。 /etc/fstabを編集。
http://xxx.xxx.xxx.xxx/dav /home/xxxxx/MyDAV davfs user,noauto 0 0
これで、
mount ~/MyDAV
とするとマウントできる。二回目以降は、ウィンドウの左側の一覧Devicesにあるアイコンをクリックするだけで繋がる。 アンマウントはumount ~/MyDAVでいいはず。

Jul 16, 2013

Amazon EC2で、MySQLのデータをEBSに移す

ポスト @ 22:20:31 , 修正 @ Jul 16, 2013 13:20:31 | Amazon,ubuntu

 正確に云えば、このインスタンスもEBSベースなので、そもそも全部EBSなのだが、別のEBSに移すということである。ここでは、/mnt/volとしてマウントした別のEBSにMySQLのデータ・ディレクトリを移すことを考える。データのみである。Logとか、設定とかはそのままである。

 話は簡単で、/var/lib/mysqlを/mnt/vol/mysqlに移せばよい。所有権の設定なども変えないために、cp -a か何かでコピーする。そして、/etc/mysql/my.cnのデータの場所を書き換える。

datadir         = /var/lib/mysql
↓
datadir         = /mnt/vol/mysql
として、sudo service mysql restartとするだけでいいはず。ところが、エラーが出てしまう。/var/log/mysql/error.log を見てみると、ibdata1に対する権限がないという。どういうことだ? どうやら、設定を書き換えるのがmy.cnfだけでは足りないらしい。/etc/apparmor.d/usr.sbin.mysqld も書き換えなくてはならないのだ。
/var/lib/mysql/ r,
/var/lib/mysql/** rwk,
↓
/mnt/vol/mysql/ r,
/mnt/vol/mysql/** rwk,
とするのだ。そして、sudo service mysql start としてやれば、正常に動き出す。まあ、少なくとも私の場合は。やれやれ。

 この貴重な情報は、Twiwt:Blog 「EC2 で MySQL のデータの保存先を EBS ボリューム(/mnt)に変更する」で知った。

Jul 13, 2013

Amazon EC2 設定続き

ポスト @ 23:33:55 , 修正 @ Jul 13, 2013 14:33:55 | Amazon,ubuntu

 忘れていた。すっかり忘れていた。Apacheがちゃんと動いていても、80ポートが開いていなければ外からアクセスできない。当然のことながら。

 EC2のSecurity Groupsのパネルを開いて、Create a new ruleのところでhttpを選んで、そうすると自動的にPort range欄に80が入るから、そのままAddRuleをクリックし、続けてApply Rule Changesを押せばよい。

port80security.png

 これでようやく"It works!"が表示された。やれやれ。

久しぶりにAmazon EC2を使う

ポスト @ 21:00:56 , 修正 @ Jul 13, 2013 12:00:56 | Amazon,ubuntu

 暑くなってきたので自宅サーバをAmazon EC2に引っ越すことにした。久しぶりなので何もかも忘れている。

 まず、EC2 consoleのサイトにログインして、インスタンスを起動させる地域を選ぶ。今回は、US Eastにする。特に理由はない(本当はあるけど、秘密)。新規インスタンス作成を選んで、Quick Launch Wizardで進める。Key Pairは既存のものを選ぶ。"Choose a Launch Configureation:"というところで、Ubuntu Server 13.04 (64 bit) を選んだ。Typeはt1.micro。他は特に何か選ぶこともなくLaunchを押すと起動。

 インスタンス一覧に今回起動したもののPublic DNSが表示されているので、Termnal から、ssh -i keypair.pem ubuntu@ec2-000-000-000-000.compute-1.amazonaws.com というような感じでログインできることを確認。

 そして、$ df -h と打つと、

Filesystem             Size   Used  Avail Use% Mounted on
/dev/xvda1             8.0G   1.1G   6.9G  14% /
udev            286M  8.0K  286M   1% /dev
tmpfs            59M  180K   59M   1% /run
というような情報が表示される。/dev/xvda1がroot deviceとなっている。

 次に、EBSを作る。今作ったroot deviceがあるのと同じZoneで作成。30 GBまで無料期間があるから、それ以下にしろって書いてあったので30 GBで新規作成したが、これはさっきの8 GBと合わせたら越えてしまうのではないか。よく判らないが30 GBで作ってしまった。作っただけでは、まだ使えない。これは、コンソールのEBSのパネルで作ったEBSを右クリックでAttach Volumeを選んで、device nameを/dev/sdfを選んで連結させる。しばらくattachingのままで待たされる。表示がattachedになっても、/dev/sdfにディスクが見当たらない。/dev/xvdvにあるのだ。まずはフォーマット:

sudo mkfs.ext4 /dev/xvdf
 このVolumeは/mnt/mydiskにマウントしようと思うので、
sudo e2label /dev/xvdf /mnt/mydisk
とし、次に、/etc/fstabに、
LABEL=/mnt/mydisk          /mnt/mydisk                ext4    defaults 
と書いて、sudo mount -aとやって、fstabの設定でマウントするように指示。再び、df -h で、
/dev/xvdf        30G   44M   28G   1% /mnt/mydisk
となっていることも確認。今日はここまで。

Feb 24, 2013

久しぶりにパンの話

ポスト @ 16:40:47 , 修正 @ Feb 24, 2013 7:40:47 | パン

 ここにはあまり書かなくなっていたが、パンは毎週焼いていた。毎週毎週焼いていた。

 いわゆるフランスパンはこんな組成で。

  • 準強力粉    500 g
  • 水       350 g
  • 塩        8 g
  • ドライイースト 1.5 g
 全部混ぜて30分静置。まとめながら少し捏ねる。室温で20分放置。もう一回捏ねてまた20分放置、もう一回捏ねて60分放置。冷蔵庫に入れて一晩。よく膨らんでいることを確認(真冬は冷蔵庫に入れない。入れてもいいけど)。

 小麦粉は、最初はリスドォルを使っていたが、この頃はジェニーというのにしている。安いから。

 210℃で25分くらい焼く。500グラムの小麦粉から4本。クープはこの頃割れるようになってきた。理由は判らない。とにかく割れるようになった。水も硬水を混ぜたりしていたが、関係なく割れるようになった。

2013年1月のバタール

 カンパーニュの組成はこんな感じ。

  • 準強力粉  350 g
  • 全粒粉    75 g
  • ライ麦粉   75 g
  • 塩      8 g
  • 水     300 g
  • インスタントドライイースト  1.25 g
 準強力粉は上と同様ジニーを。ライ麦粉は鳥越製粉のヴァンガーラント(細挽)、全粒粉は日清製粉のパン用全粒粉をこの頃は使っている。ライ麦粉と全粒粉の配合比をいろいろ変えてみたが、今はこれで安定している。醗酵は冬は暖房をした部屋で5時間くらい。真夏は冷蔵庫で一晩。二次醗酵などは適当に。先週は思い切って少し高いセーグル タイプ130というのを買ってみた。使うのは来週以降。

130114.jpg

 220℃で25分ほど焼く。500グラムの粉から二つ。右はドライフルーツ入り。無花果90〜100 g、レーズン45 g、胡桃30 gという配合である。

 クープが割れるようになるのにほぼ10ヶ月かかった。ベーグルのときももっと作り続けていたら素敵なベーグルを焼けるようになったのかも知れないと思う今日この頃である。

Jan 13, 2013

MacOSX Lionでmod_python

ポスト @ 14:15:00 , 修正 @ Jan 13, 2013 5:15:00 | MacOSX

 この記事を運用しているサーバもMacOSX 10.7で動いているMac miniに移行した。いろいろ苦労したので、しばらく自分用の忘備録が続く予定。

 mod_pythonは以前はMacOSに最初から入っていたような気がしていたが、今はどうやらないので、自分で入れなければならない。mod_wsgi使えみたいな記述を見かけるが、よく判らないのでここはmod_pythonで。最新版を(といってもちょっと古いが)をダウンロードして展開後、./configure → make → make install で簡単だろうと思ったら、

connobject.c: In function ‘_conn_read’:
connobject.c:142: error: request for member ‘next’ in something not a structure or union
apxs:Error: Command failed with rc=65536
というエラーが出てしまった。途方に暮れて検索してみると、Snow Leopardにmod_pythonを導入(festangoの日記)というのを見つけたので、connobject.cの142行目の
!(b == APR_BRIGADE_SENTINEL(b) ||
の (b) を (bb) に書き換えて、再度コンパイルすると問題なく完了。

 次に、httpd.confに一行追加する。

LoadModule python_module libexec/apache2/mod_python.so
 さらに、/etc/apache2/extra/httpd-vhosts.conf の pythonスクリプトを動かしたいディレクトリについて、
    <Directory /Library/WebServer/xxx/>
        AddHandler mod_python .py .psp
        PythonHandler mod_python.publisher | .py
        PythonHandler mod_python.psp | .psp
        PythonDebug On
        PythonInterpreter main_interpreter
    </Directory>
などと追加。意味はよく判らない。動作確認のために、
from mod_python import apache
def handler(req):
  req.write("It Works!!")
  return apache.OK
というのを作って配置して確認しようとすると、not foundと云われてしまう。なぜなんだ。HOWTO: apache2 & mod_pythonというサイトにある
import time
def index():
    html = """
<html><head>
<title>mod_python.publisher first html page</title>
</head>
<body>
<h1>This page was generated by mod_python.publisher</h1><hr>
The local time of this server is:  %sThe timezone of this server is  :  %s
</body>
</html>
""" % (time.ctime(time.time()), time.timezone/3600)
    return html
というのを置いてみたら、ちゃんと表示された。やれやれ、よく判らないが動いたようだなと思って、設定したディレクトリを確認したらpythonスクリプトなんて一つもなかった。何年も前に頑張って作ったが、その後、もう使わなくなったのだった。何のための努力だったのか。まあ、また使う必要が生じるかも知れないので、ここに書き残しておこう。

以前のログ