トップ 最新 追記

Days of Speed

過ぎゆく日々を書こう。忘れっぽい未来の自分のために


2013-08-08

_ ここんとこスコールがすごい

この何日間か決まった時間、昼2時過ぎから5時ぐらいまで土砂降りの雨が降って雷が鳴るので、ウカツに外に出れやしない。 ということで、サーバーの電源も落としてました。

Tags: life

_ Google AdSenseを貼った

すごーく昔、「アフィリエイトで小銭稼ぎたいぜ」と思ってGoogle AdSenseの申請をしてました。

それから何年。広告も貼らずに放置しておいたら、Googleさんから「いい加減、広告貼らないと止めちまうぜー」とメールが来たので一番下の方に貼ってみた。

もともと商売っ気もないので、たぶん押されることはないと思いますが、ひとまずお知らせ。

Tags: nofuture

2013-08-11

_ 暑くて死にそう

高音注意情報が出まくってるそうですが、この家、特に2階は暑すぎる…。

Tags: life

_ Apache 2.4にしたらコンテンツがForbiddenになった。そして直した

ここんとこのスコールでサーバーを落としたりしてたので、サーバー周りを掃除してたついでにいろいろアップグレードしていました。 その中でApacheを2.2から2.4にしたら、いきなりコンテンツがForbiddenで見れなくなったので、その辺を調べてみたメモ。

まず、エラーログを見るとこんなのがいっぱい出てました。

[Sat Aug 10 12:56:40.380847 2013] [authz_core:error] [pid 4562] [client xxx.xxx.xxx.xxx:xxxxx] AH01630: client denied by server configuration: /hoge/fuga
[Sat Aug 10 12:56:51.473301 2013] [authz_core:error] [pid 4560] [client xxx.xxx.xxx.xxx:xxxxx] AH01630: client denied by server configuration: /hoge/fuga

authz_core:error」でググると、このエラーにぶつかった人はたくさんいるらしく対処方法が出てました。 しかし、そういう人たちの書いてる事は「ここをこう書き換えれば直る」としか書いてなく、なぜそういう原因になるのか書いていなくてとても気持ち悪かったので、もう少しだけ調べてみました。

Apacheのエラーなんだから、Apacheに当たるといいのかなーと思いつつApache 2.4のドキュメントを見ると、「2.2 から 2.4 へのアップグレード」という、読めと言わんばかりのドキュメントがあったのでこれ見てみました。

すると、「Run-Time Configuration Changes」の「Access control」にそのものズバリな記述がありました。

In 2.2, access control based on client hostname, IP address, and other characteristics of client requests was done using the directives Order, Allow, Deny, and Satisfy.

In 2.4, such access control is done in the same way as other authorization checks, using the new module mod_authz_host. The old access control idioms should be replaced by the new authentication mechanisms, although for compatibility with old configurations, the new module mod_access_compat is provided.

2.4からアクセスコントロールがmod_authz_hostでおこなうことになったことと、後方互換のため今までの書式が使えるmod_access_compatが用意されているとのこと。

なるほど。じゃあ、対処方法としてはヤツらが書いてた方法以外に、mod_access_compatモジュールを有効にすれば良いわけか。これで解決。 と思ったけれど、うちの場合は大量にあるわけでもなく、mod_access_compatモジュールも非推奨で将来的には廃止されるかもなので、アップグレーディングガイドを見つつ書き換えて対処しましたとさ。

Requireの説明があるmod_authz_coreの解説を見ると、アクセスコントロール周りは大幅に変わってて細かく制御できるみたいなので、また時間を作って読んでおこう。

Tags: linux

2013-08-12

_ 田吾作が帰ってきた

お盆ですな。ちうことでいろいろ積もる話しをしてきた。

Tags: life

2013-08-13

_ Apache 2.4のアクセス制御をもうちょっとマジメに見てみた

おとといのエントリ「Apache 2.4にしたらコンテンツがForbiddenになった。そして直した」で「直した」と書いたけれど適当すぎたのでマジメに見なおしてみた。

参考

まず「Upgrading to 2.4 from 2.2 - Apache HTTP Server」を見ると2.2から2.4の変更で

2.2 configuration:
Order deny,allow
Deny from all
2.4 configuration:
Require all denied

になったり、

2.2 configuration:
Order allow,deny
Allow from all
2.4 configuration:
Require all granted

は分かったけれど、この場合はどういうことなんだろう。

2.2 configuration:
Order Deny,Allow
Deny from all
Allow from example.org
2.4 configuration:
Require host example.org

特定のIPアドレスやホストのアクセスを許可する事は分かったけれど、たとえばこういう感じで書いていた特定のIPアドレスやホストのアクセスを許可しない場合はどうしたらいいのだろう。

2.2 configuration:
Order Allow,Deny
Allow from all
Deny from example.org

Require Directiveを見ると、

Require [not] entity-name [entity-name] ...

否定は「not」とつければいいのかーということで、こういう風に書いてみた。

Require all granted
Require not host example.org

しかし、設定ファイルをチェックするとSyntax Errorが出る。

# apachectl configtest
AH00526: Syntax error on line 34 of /etc/apache2/sites-enabled/hoge.conf:
negative Require directive has no effect in <RequireAny> directive
Action 'configtest' failed.
The Apache error log may have more information.

どういう意味なのかな?と考えたけれど、 <RequireAll|Any|None> のディレクティブを省略した場合は <RequireAny> ディレクティブで囲まれた状態とみなされるそう。で、Anyだとどれかの選択になるので all grantedとnotだとnotの意味がなくって条件が成り立たない。ということだそう。

ということで上のアクセス制限を <RequireAll> できちんと囲んで書くとこうなる。

<RequireAll>
  Require all granted
  Require not host example.org
</RequireAll>

拒否の判定をする <RequireNone> ディレクティブと組み合わせた書き方だとこんな感じ。 <RequireNone> ディレクティブの中に書くときは、拒否の否定になるのでnotは不要。

<RequireAll>
  Require all granted
  <RequireNone>
    Require host example.org
  </RequireNone>
</RequireAll>

面倒だなーと思ったけど、振り返ってみると <RequireAny> がデフォルトということはマッチするものだけアクセスを許可、それ以外はアクセス拒否になるので、特定のホストやIPアドレスのみの許可だとこんな風に書ける。

Require host example.org

おおー!例に戻ってきた! なるほど、こういう意味だったのか!

まとめてみるとこんな感じ。

  • 特定のホストやIPのみのアクセスを許可する場合は、 Require だけでOK。
  • 特定のホストやIPのアクセスを拒否する場合は、きちんと <RequireAll> ディレクティブを書いてから書く。
<RequireAny> このディレクティブの条件どれかにマッチすればアクセス許可。ディレクティブがない場合のデフォルト。
<RequireAll> ディレクティブの条件全てにマッチすれば真。否定の判定のみの場合は使えない。
<RequireNone>Anyとは逆にこのディレクティブの条件どれかにマッチすればアクセス拒否。

2013-08-14

_ 書きながら寝てた

昨日のエントリーを書きながら倒れてた。いかんなー。

Tags: life

2013-08-16

_ Packerを使ってWheezyのVagrant Boxを作る

以前、「VeeWeeを使わずWheezyのVagrantのBoxを作る」というエントリを書きましたが、それの続きです。 VagrantでDebianの情報、というよりPacker自体の情報がないのでメモってみました。

参考

Packerとは

Packerは、一つの設定から複数のプラットフォーム用のマシンイメージを作成するためのツールツールです。 VirtualBoxのほかにもVMwaraやAmazon EC2のAMIなど、さまざまな仮想化ソフトウェア/クラウド環境に対応しています。

インストール

Packerのダウンロードページに、それぞれのOS/アーキテクチャ用のバイナリが用意されています。自分の環境にあったものをダウンロードし、パスの通った場所に展開してください。

メモをまとめている間に、0.2.3から0.3.1にバージョンが上がりましたが、0.3.0/0.3.1ではGuestAdditionsがアップロードされないようなので(バグ?)、こちらから0.2.3をダウンロードして利用すると良いでしょう。

Packerの設定ファイルを書く前に

Debianのインストールは、Preseedを使って自動インストールするので、あらかじめPreseedファイルを用意しておく必要があります。 Preseedファイルの作成について、くわしくはこちらをどうぞ。


packerの設定ファイルを書く

今回作ったpackerの設定ファイルの構成はこのようになります。

.
|-- preseed
|   `-- preseed.cfg
|-- scripts
|   |-- base.sh
|   |-- cleanup.sh
|   `-- guestadditions.sh
`-- wheezy.json

wheezy.jsonは、JSON形式で書かれたPackerの設定ファイルです。

preseedディレクトリにあるpreseed.cfgは、Debianの自動インストールに使われる設定ファイルです。

scriptsディレクトリ以下は、Debianインストール後、プロビジョニングをおこなうためのシェルスクリプトです。

wheezu.json

Packerの設定ファイルは、このようになります。

{
  "builders": [
    {
      "type": "virtualbox",
      "guest_os_type": "Debian",
      "disk_size": 10240,
      "iso_url": "http://cdimage.debian.org/debian-cd/current/i386/iso-cd/debian-7.1.0-i386-netinst.iso",
      "iso_checksum_type": "md5",
      "iso_checksum": "a70efb67ca061175eabe7c5dc04ab323",
      "http_directory": "preseed",
      "boot_wait": "5s",
      "boot_command": [
        "<esc><wait>",
        "auto <wait>",
        "url=http://{{ .HTTPIP }}:{{ .HTTPPort }}/preseed.cfg <wait>",
        "netcfg/get_hostname={{ .Name }} <wait>",
        "netcfg/get_domain=vagrantup.com <wait>",
        "debconf/frontend=noninteractive <wait>",
        "<enter><wait>"
      ],
      "ssh_password": "vagrant",
      "ssh_username": "vagrant",
      "ssh_port": 22,
      "ssh_wait_timeout": "20m",
      "shutdown_command": "sudo /sbin/shutdown -h now",
      "guest_additions_path": "VBoxGuestAdditions_{{.Version}}.iso",
      "virtualbox_version_file": ".vbox_version"
    }
  ],
  "provisioners": [
    {
      "type": "shell",
      "scripts": [
        "scripts/base.sh",
        "scripts/guestadditions.sh",
        "scripts/cleanup.sh"
      ],
      "override": {
        "virtualbox": {
          "execute_command": "echo 'vagrant'|sudo -S bash '{{.Path}}'"
        }
      }
    }
  ],
  "post-processors": [
    {
      "type": "vagrant",
      "output": "debian-wheezy-i386.box"
    }
  ]
}

設定ファイルは3つのセクションに分かれて、それぞれの働きはこのようになります。

  • builders(必須): マシンイメージの設定。
  • provisioners(オプション): 作成したマシンイメージに対してプロビジョニングする設定。
  • post-processors(オプション): マシンイメージ作成後の設定。

それではセクションごとに詳しく見てみましょう。


builders

buildersには作成するマシンイメージの設定を書きます。

"type": "virtualbox",
"guest_os_type": "Debian",
"disk_size": 10240,

typeには、作成するイメージのタイプを書きます。今回はVirtualBoxのイメージを作成するので「virtualbox」と書きます。

guest_os_typeには、「vboxmanage list ostypes」でリストアップされる対応OSの種類を書きます。今回はi386を使いましたが、amd64の場合は「Debian_64」になります。

disk_sizeはマシンのディスクサイズを書きます。40GBとか50GBとか確保しても実際のところそんなに使うこともなかったので、今回は10GBにしました。

"iso_url": "http://cdimage.debian.org/debian-cd/current/i386/iso-cd/debian-7.1.0-i386-netinst.iso",
"iso_checksum_type": "md5",
"iso_checksum": "a70efb67ca061175eabe7c5dc04ab323",

インストールに使用するISOイメージの場所とチェックサム、チェックサムの種類を書きます。

"http_directory": "preseed",

http_directoryには、preseedファイルのあるディレクトリを指定します。

"boot_wait": "5s",
"boot_command": [
  "<esc><wait>",
  "auto <wait>",
  "url=http://{{ .HTTPIP }}:{{ .HTTPPort }}/preseed.cfg <wait>",
  "hostname={{ .Name }} <wait>",
  "domain=vagrantup.com <wait>",
  "frontend=noninteractive <wait>",
  "<enter><wait>"
],

boot_waitは、VirtualBoxが起動してインストーラが起動するまでの時間です。起動に時間がかかる場合は増やしてください。

boot_commandは、インストーラに与えるブートパラメータを指定をします。

ここで与えているブートパラメータは、preseedファイルを指定するための「url=」と、preseedファイルでは反映されないホスト名とドメイン名を指定しています。 「<esc>」「<enter>」「<wait>」は、それぞれESCキー、Enterキー、1秒間待つ(ウェイト)となっています。

ブートパラメータ自体については、Debian GNU/Linuxインストールガイドの「5.3. ブートパラメータ」を参考にしてください。

"ssh_password": "vagrant",
"ssh_username": "vagrant",
"ssh_port": 22,
"ssh_wait_timeout": "20m",
"shutdown_command": "sudo /sbin/shutdown -h now",

Debianインストール後、SSHでログインをしてプロビジョニングをおこないますが、その時に利用するSSHの設定です。

ssh_wait_timeoutは、SSHが利用できるようになるまでの待ち時間です。

"guest_additions_path": "VBoxGuestAdditions_{{.Version}}.iso",
"virtualbox_version_file": ".vbox_version"

VirtualBoxのGuestAdditionsのバージョンとアップロードされるファイル名を含むパスです。


provisioners

ここからはプロビジョニングについての設定です。

"type": "shell",
"scripts": [
  "scripts/base.sh",
  "scripts/guestadditions.sh",
  "scripts/cleanup.sh"
],

プロビジョニングに使うスクリプトのタイプとスクリプトについて指定しています。 プロビジョニングにはシェルスクリプト以外も使えると思いますが、ドキュメントを探しきれなかったので、そのままシェルスクリプトを使いました。

"override": {
  "virtualbox": {
    "execute_command": "echo 'vagrant'|sudo -S bash '{{.Path}}'"
  }
}

root権限でプロビジョニングのスクリプトを実行させるので、オーバーライドしています。 ここもドキュメントそのまま引き写しです。


post-processors
"type": "vagrant",
"output": "debian-wheezy-i386.box"

作成するマシンイメージのタイプとファイル名を指定しています。

preseed.cfg

基本的な設定は、「Debianのインストールを自動化 - nofuture.tv」と同じです。

「Debianのインストールを自動化」のpreseedファイルと違う部分は、vagrantユーザーがパスワード無しで管理者権限になれるように、インストール終了後、/etc/sudoers.d/vagrantに設定を追加しています。

d-i preseed/late_command string \
echo 'vagrant ALL=(ALL:ALL) NOPASSWD:ALL' > /target/etc/sudoers.d/vagrant; \
chmod 440 /target/etc/sudoers.d/vagrant

scripts

VeeWeeを使わずWheezyのVagrantのBoxを作る」と同じ設定をしています。 特にトリッキーなことはしていないので、それぞれのスクリプトを見てください。


Vagrant Boxを作成する

Packerには3つのコマンドがあります。

$ packer --help
usage: packer [--version] [--help] <command> [<args>]

Available commands are:
    build        build image(s) from template
    fix          fixes templates from old versions of packer
    validate     check that a template is valid

Globally recognized options:
    -machine-readable    Machine-readable output format.
  • packer build: 設定ファイルからマシンイメージを作成。
  • packer validate: 設定ファイルを検証する。
  • packer fix: 古い設定ファイルを修復する

早速ビルドに入りたいところですが、まずは検証してみます。

$ packer validate wheezy.json
Template validated successfully.

問題がなければこのようにメッセージが出ます。 問題があればこのようにエラーメッセージが出るので修正して検証します。

$ packer validate wheezy.json
Failed to parse template: Error in line 36, char 8: invalid character '"' after array element
  "scripts/cleanup.sh"

問題がなければ、ビルドします。

$ packer build wheezy.json

_ 書いてみたのはいいけれど見づらいな

tDiaryの書き方のスタイルと自分の書く文章のスタイルが合わないなと思うことが最近たびたびある。 かといって、WordPressは使う気はないし。

とりあえず、Wikiのほうに書きなおそう。

Tags: life

2013-08-19

_ 眠れない

先々週あたりから暑すぎて全然眠れてません。 眠りが浅い感じ。

1日ぐらい、クーラーの効いたところで寝たい

Tags: life

2013-08-20

_ GyaO!がLinuxで見られるようになってた

GyaO!の配信システムが、Silverlightから、いつの間にかFlash配信に変わってた。 (有料のGyaO!ストアは依然とSilverlightのまま)

ただ、User Agentをチェックしているので、そのままだと見られないけれど、Iceweasel(Firefox)にUser Agent Switcherの拡張機能をインストールして、User AgentをWindows系のブラウザに変更すれば見られます。

Tags: yahoo linux

_ 「10人の泥棒たち」を見た

10人の泥棒たち [DVD]

アミューズソフトエンタテインメント
¥ 2,660

ということで、GyaO!で「10人の泥棒たち」1日限りの上映会で見ました。 映画館では2週間だけの上映でタイミングが合わず見られなかったけれど、まさかの上映ということで見ましたが、これが面白かった!

仲間同士の騙し合いからダイヤモンド「太陽の涙」強奪失敗、そして最後までの畳み掛ける展開はホントに目が離せないので、アジア系映画のアクションが好きな人は見るといいと思います。

Tags: movie

2013-08-23

_ ノートPCにtlpをインストールしてバッテリーを長持ちするようにした

イートレンドブログ|よりモバイルPCへと進化を遂げたオリジナルモデル acer Aspire V5-171-H54C/S」によると、V5-171-H54C/Sは大容量バッテリーなので公称8時間、公称なので8がけでも6時間ぐらい?持つはずなんだけれど、Debianで使ってると4〜5時間ぐらいしか持たない。

最初「こんなものなのかなぁ」と思っていたけれど「ssig33.com - VAIO Pro を Linux で使う + バッテリー延命」を読んで、「ああ、やっぱりそうだったのか」と思ったのでtlpをインストールしてみた。

まず、powertopを使って電源ケーブルを外した状態でどれぐらいバッテリーが持つか調べてみた。

PowerTOP v2.0     Overview   Idle stats   Frequency stats   Device stats   Tunables

The battery reports a discharge rate of 11.2 W
The estimated remaining time is 290 minutes

5時間弱ということで、体感と同じで妥当なところでしょうか。

tlpをインストール

tlpの導入は恐ろしく面倒、と書いていましたがDebian系で使うことを前提に作られているので、自分で使うだけなら簡単にパッケージにしてインストールできます。 ざっくりパッケージを作ってインストールする方法を書くとこんな感じ。

$ sudo apt-get install packaging-dev
$ git clone https://github.com/linrunner/TLP.git
$ cd TLP/
$ debuild -us -uc

インストール。
$ cd ..
$ sudo dpkg -i tlp_0.3.9-1_all.deb tlp-rdw_0.3.9-1_all.deb

tlp-statコマンドを実行すると現在の省電力設定が表示されます。

$ sudo tlp-stat | lv
--- TLP 0.3.9 --------------------------------------------

+++ Configured Settings: /etc/default/tlp
TLP_ENABLE=1
DISK_IDLE_SECS_ON_AC=0
DISK_IDLE_SECS_ON_BAT=2
MAX_LOST_WORK_SECS_ON_AC=15
MAX_LOST_WORK_SECS_ON_BAT=60
(長いので略)

ひとまずパッケージをインストールしただけでも問題ないはずですが、変更する場合は/etc/default/tlpを変更します。

tlpをインストールしてから、powertopで測ってみました。

PowerTOP v2.0     Overview   Idle stats   Frequency stats   Device stats   Tunables

The battery reports a discharge rate of 8.90 W
The estimated remaining time is 377 minutes

6時間半となかなかいい感じになりました。

_ 同じような電源管理ツールにlaptop-mode-toolsもあります

あとで気がついたのですが、tlpと同じ項目が設定できるツールで、laptop-mode-toolsがあります。

こっちのほうがお手軽だったかも。 ちなみにtlpが入ってるとコンフリクトします。(パッケージの設定には入ってないけど、tlp-statを使うとエラーメッセージが出ます。)


2013-08-24

_ 大阪モノレールの「夜景&ビールトレイン」に乗ってきた

乗り込むところ目からビームを出す太陽の塔

誘われて行って来ました。

天気はイマイチだったけど、夜景や門真での軌道入れ替わるとことか良かったですよ。

Tags: life

2013-08-27

_ tlpの設定をちょっとだけ変えてみた

デフォルトでも良かったけれど、powertopでPCIバス周りの省電力設定がbadになってるのが気になったので、 RUNTIME_PM_ALL=1 にして、turbo boostの設定 CPU_BOOST_ON_AC|BAT のコメントを外してみた。

+++ Configured Settings: /etc/default/tlp
TLP_ENABLE=1
DISK_IDLE_SECS_ON_AC=0
DISK_IDLE_SECS_ON_BAT=2
MAX_LOST_WORK_SECS_ON_AC=15
MAX_LOST_WORK_SECS_ON_BAT=60
CPU_BOOST_ON_AC=1
CPU_BOOST_ON_BAT=0
SCHED_POWERSAVE_ON_AC=0
SCHED_POWERSAVE_ON_BAT=1
NMI_WATCHDOG=0
DISK_DEVICES="sda"
DISK_APM_LEVEL_ON_AC="254 254"
DISK_APM_LEVEL_ON_BAT="128 128"
SATA_LINKPWR_ON_AC=max_performance
SATA_LINKPWR_ON_BAT=min_power
PCIE_ASPM_ON_AC=performance
PCIE_ASPM_ON_BAT=powersave
WIFI_PWR_ON_AC=1
WIFI_PWR_ON_BAT=5
WOL_DISABLE=Y
SOUND_POWER_SAVE=1
SOUND_POWER_SAVE_CONTROLLER=Y
RUNTIME_PM_ON_AC=on
RUNTIME_PM_ON_BAT=auto
RUNTIME_PM_ALL=1
USB_AUTOSUSPEND=1
RESTORE_DEVICE_STATE_ON_STARTUP=0

2013-08-31

_ LibreOfficeロゴに使われているVegurフォントは日本人デザイナーによって作られていた

9/14の関西LibreOffice勉強会で、Impressのスライド作成について発表します。

姫路以外で発表はひさびさかもしれん。 ということで今日は資料を作成していましたが、LibreOfficeのロゴやアートワークまわりについて調べていたワケですよ。

The Document Foundation WikiにあるLibreOffice Branding Guidelinesを見ていたら、ロゴに使われているVegurフォントのリンク説明にこんな表記が

License: Public Domain
   Vegur Font @ FontSpace (external site, English)
   Vegur Font @ dotcolon.net, the original designer's website (external site, Japanese)

「オリジナルのデザイナーサイト(外部サイト、日本語)」ってなんすか? と思ったのでリンク先を見て、あらびっくり。日本の方じゃないですか! フォントを作られた方はSora Saganoさんという方だそうです。クォリティ高くてしかもCC0って素晴らしい!

LibreOfficeのロゴについてはブログに書いてあって、Vegurフォントそのままではなくfの部分をくっつけてあるそうです。


2001|12|
2002|01|02|03|04|05|06|07|08|09|10|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|06|08|12|
2011|01|02|03|06|07|08|09|10|11|12|
2012|01|02|03|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|12|
2014|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|10|11|12|
2017|01|02|

クリエイティブ・コモンズ・ライセンス Jun NOGATA を著作者とするこの 作品クリエイティブ・コモンズの 表示 - 継承 4.0 国際 ライセンスで提供されています。