サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
iPhone 16
rougeref.hatenablog.com
ここ最近キャッシュコントロールのヘッダについて研究中。というよりキャッシュってどうやって見つけるんだろうってことでお勉強、実験中です。 Varyヘッダの働きかたについてちょっと誤解していたので忘れないうちにメモ。 Squidの文書によると、2.6あたりからVaryとEtagの両ヘッダをサポートしたとのこと。 で、その文書にはいままでURIだけをキーにしてキャッシュを作成していたが、VaryとEtagのサポートに伴い、これらヘッダ値+URIでmd5ハッシュを作成してそれをキーにしたと。store.logに残るのがそのmd5値。store.logの5カラム目ですね。 1444184896.876 SWAPOUT 00 0000B6C0 D05226074A35B354673E44DE98357310 200 1444184891 -1 -1 text/html 143485/143485 GE
設定ファイル中で、eth0じゃなくて、eth2のアドレスを指定しているところがあります。 eht0なら node[:ipaddress]でchef中のレシピでもテンプレートでも値が入ってきますが、eht1とかeth2だとどうするんだろ。 nodes/hostname.jsonに書いちゃえばいいんでしょうが、ohaiに情報があるはずなのでそれはやりたくない。 ohaiを叩いてみると、欲しい情報はこんなふうになっています。 "network": { "interfaces": { "lo": { "mtu": "65536", "flags": [ "LOOPBACK", "UP", "LOWER_UP" ], (中略) "eth2": { "type": "eth", "number": "2", "mtu": "1500", "flags": [ "BROADCAST", "MULTICA
この数週間Dockerでの環境作成にかかりっきりです。いじくってた当初は、 # docker run -it hoge/centos:latest /bin/bashなどと起動して、起動された/bin/bashでいろいろやったあと、Ctrl-Dで抜けてしまうと、そのコンテナがexit状態になってしまって、なんだか不便だなぁと。 調べていくうちに、やっぱりそんな不便な訳はなくて、起動すみDockerコンテナへあとから入る方法があることがわかりました。 execを使う まず、dockerコンテナで /bin/init でもって起動、その後/bin/bashを当該コンテナで動かす。 # docker run --name fuga hoge/centos:latest /sbin/init # docker exec -it fuga /bin/bash attachを使う /bin/bashで
毎日某所へscpでデータを送付しているのですが、scpでパスワードを聞いてくるのでexpect をつかってスクリプトを書いています。 このブログを検索すると、あった。二年前に作ったのか。 で、先方が送り先の機械をリプレイスするので新しい機械で試して欲しいとのこと。 試してみるとパスワードプロンプトが微妙に違う。たぶん、OSの違いによるsshdの違いだと思うんだけど。 上にある二年前に作ったときはパスワードプロンプトに Password:を期待している。ところが新しい機械では xxxx@hoge.example.com's password:となっている。リプレイスされるのは当分先なので、スクリプトを改修するにしても両方に対応する必要がある。 なのでexpectで上記の両方を期待できるように改修。どうやるんだろうとちょっと調べるとexpectに -re と書けばいいらしい。 expect {
ウェブテストの自動化ってことで、seleniumIDEは以前から使っていましたが、繰り返しだったり、どこかを選択などなど細かい動きを制御するのはIDEじゃちょっと難しいみたい。そこでselenium WebDriverを使ってみる。いろんなインタフェイス(pythonやjavaやC++)なんかがあるようですが、あえて一度もコードを書いたことがないjavaでやってみる。といってもeclipseからですが。 必要なjarファイルをダウンロード http://www.seleniumhq.org/download/ からselenium WebDriverのjava言語バインディングをダウンロード。 リンクをはると http://selenium.googlecode.com/files/selenium-java-2.37.0.zip これです。 ダウンロードしたらunzipして適当なディレク
phpをmcrypt対応にして欲しいと言う要望。phpのマニュアルにしたがい、libmcryptをインストール後、phpをconfigure,make。 まずlibmcryptをインストール。libmcryptのブツはここにあります。phpのインストール手順によると、 --disable-posix-threads をつけてconfigureしてmakeしろってことなので以下の通りに。 $ /usr/local/bin/tar -zxvf libmcrypt-2.5.8.tar.gz $ cd libmcrypt-2.5.8 $ ./configure --disable-posix-threads # /usr/local/bin/make installつづいて、php側も再configure。 $ ./configure (中略) --with-mcrypt=/usr/local $
今日はちょっと呪文的なお話。 こんな構成になっているWebサーバがあります。 Apache(1)->PlonePloneが返してくるページの一部がちょっと複雑でレスポンスが悪いのでApacheとPloneの間にSquidをかまして、その一部のページだけをキャッシュしてやることにしました。 Apache(1)->Squid->Ploneところが全然キャッシュしてくれません。Squidのログを参照するとTCP_MISS/200ばかりを返してくる。debug_optionを最高レベルにして丹念にしらべるとどうもキャッシュストアはしているけれども次回のリクエストでキャッシュから取り出してくれないみたい。 レスポンスヘッダはこんな。 Cache-Control:private Content-Encoding:gzip Content-Language:ja Content-Length:6904
7月11日のエントリで書いたApache基本認証をLDAPに任せた件。ActiveDirectoryに社外メンバのアカウントを作るのがまかりならんとのこと。ということでLDAPとファイルに認証を併用できないか調査するとちゃんとその解説がApacheのドキュメントにありました。 具体的にはこういう設定に。 AuthType Basic AuthBasicProvider ldap file AuthLDAPBindAuthoritative on AuthName "Enter your ID" AuthLDAPBindDN administrator@example.com AuthLDAPUrl "ldap://server-address:389/dc=example,dc=com?sAMAccountName?sub?(objectClass=*)" AuthLDAPBindPass
Webコンテンツの一部をPostgreSQLからプロバイドしていますが、やっつけで作った環境なのでPostgreSQLが単一障害点になっています。つまり、サービスしているPostgreSQLが落っこちたらサービス止まってしまう。 なのでPostgreSQLを多重化するためにPostgreSQL9.1でレプリケーションを実現します。本番環境に入れる前にまずは試験環境で設定がちゃんとできるか、またちゃんとデータをレプリカしてくれるか実験。 マスタ(試験)に本番環境のデータを投入。 なにやら使ってないデータベースがあるようなので、全部Drop。本番環境でdumpallしたファイルを投入。 マスタでいろいろ設定 postgresql.conf 以下の設定を追加。スタンバイサーバのアドレスを指定してもOKだと思う。面倒なのでアスタリで。 listen_addresses = '*'あとアーカイブログ
試験環境のmongodbに投入されたデータをコレクション単位で本番環境へ移動。mongodumpとmongorestoreを使います。 まずダンプ 以下のようにしてコレクションとデータベースを指定してダンプ。 $ mongodump -d database -c collection -o backup'-d'でデータベース名を、'-c'でコレクション名を指定。'-o'でダンプファイルのディレクトリを指定します。上記の様に実行すると、 backup/database/collection.bsonというダンプファイルができます。 リストア 上記で作成されたダンプファイルを今度はmongorestoreを使ってmongodbへ投入します。 $ mongorestore -d database -c collection collection.bson最後の引数はmongodumpで吐き出され
IntelSolaris10上でpython2.7.2をmake。virtualenvを作成しようとすると、なにやらmd5とかshaとかが使えないとかなんとかエラーを吐いた。 確認のため、シェルから起動してmd5をインポートしてみるとこんなエラー。 $ /usr/local/python_v272/bin/python Python 2.7.2 (default, Jul 28 2011, 14:46:57) [GCC 4.6.1] on sunos5 Type "help", "copyright", "credits" or "license" for more information. >>> import md5 ERROR:root:code for hash md5 was not found. Traceback (most recent call last): File "
システム監視でzabbixを使っています。通常のポート監視とか、プロセスの生死監視なんかは標準に用意されているコマンド類でなんとかなるんですが、どうしても独自の監視項目を追加しないといけない場合もあります。 私が管理している環境中の某サービスでは、認証情報としてFreeRADIUS、Samba(winbind)経由でActiveDirectoryのダイレクトリを使用しています。それぞれのプロセスが落ちたりすることはないんですが、winbindのActiveDirectoryレルム参加がなぜだか時々ちょん切れることがあります。ここが切れると、当然Radiusでの認証も不可になります。 なので目的としては、Radiusでサンプルアカウントの認証が失敗したら、net adsコマンドを発行するってことができればOK。 Radius認証試験用のスクリプトを用意する。 単純なコマンドなら下で書いたza
ZABBIXのサーバを1.6.4から1.8へバージョンアップしたのですが、その際に必要条件のチェックが動いて、phpのmemory_limitが引っかかった。 どうも128MB必要らしいのですが、64MBだよって表示されている。それとpost_max_sizeも16M必要らしい。 なのでphp.iniを編集。 memory_limit = 128M post_max_size = 16777216これでApacheを再起動。post_max_sizeのチェックは通ったが、memory_limitの値が64MBのまま。編集しているphp.iniが違うわけでもない。変だなぁ。 zabbixのソースもチェックしたがよくわからない。あんまり時間を無駄にするのもしゃくなので、zabbixのソース中に少々手を入れることにした。 手を入れたのはinclude/setup.inc.phpで、memory_
Aというサーバで動作しているmongoDBのデータをBというサーバへ移す。 mongodumpとmongorestoreを使ってやりました。 Bでmongodumpをつかってデータをダンプする。 AとBとの間でmongoDBのTCPポートで通信できれば以下のようにしてmongodumpを実行してデータをダンプできる。 $ mongodump --host AAはサーバAのIPアドレスか、名前解決できるホスト名。 これでカレントディレクトリにdumpというディレクトリができて、その下にDB毎にダンプファイルができる。 通信できない場合でも、できたディレクトリごとBへなんらかの方法で転送すればいい。 Bでdumprestoreを使ってリストア $ mongorestore -d db_name --drop ./dump/db_namedb_nameはリストアしたいDBの名前。全部まとめてやる
FreeRADIUSの認証をActiveDirectoryに任せる。OpenLDAPへ認証を流す方法はすでにやったことがあって、ここにも書いたことがある。ActiveDirectoryってLDAPがお喋りできるよなぁとすこし調べたんですが、どうも期待するスキーマをもっていないようなのでLDAPでの連携は断念。Sambaを中間にいれてActiveDirectoryの認証をFreeRADIUSから利用することができました。 Sambaの設定 まずはSambaの設定。SambaとActiveDirectoryの連携はウェブ上にも情報があるし、文献も豊富なのでさらっと。 smb.confを設定 ドメイン名:MYDOMAIN、ActiveDirectoryが動作している機器のアドレスを10.1.100.1とすると、smb.confはこんな。 [global] dos charset = CP932
8月11日のエントリで書いた件。この手順だとダメでした。当たり前か。 どうしてこんなことがおきたかというとですね。 当該サーバ上ではPostgreSQL8.2.11をつかってデータベースが初期化、生成されていた。8.2.11は/usr/local/pgsql以下へインストールされている。 その中のあるDBをdropすることになったが、dropdbすると下記エラーが発生する。 DETAIL: Could not open file "pg_clog/0008": No such file or directory. clogのシーケンスをリセットすればいいかなとあまり深く考えないで一旦DBをシャットダウン。pg_resetxlogを実行。 $ pg_resetxlog -f /usr/local/pgsql/data 上記でパスをつけないで実行したため、/usr/binにインストールされてい
サーバ間でファイルを同期する必要があり、rsyncを使うことにしました。サーバAからサーバBへファイルを定期的に送りつけます。サーバAは他サーバ間ですでにrsyncの動作実績があります。サーバBにrsyncをインストールして動かすとエラーになりました。 bash-2.05$ /usr/local/bin/rsync -auvz -e /usr/local/bin/ssh --delete --rsync-path=/usr/local/bin/rsync /export/hoge/files/* hoge@mail:/usr/local/files ld.so.1: /usr/local/bin/rsync: fatal: libiconv.so.2: open failed: No such file or directory rsync: connection unexpectedly
sshをつかってて、たまになんでかわからないけどつながらないことがあります。 bash-2.05$ /usr/local/bin/ssh hoge@hogehoge ls Permission denied (publickey,keyboard-interactive).クライアント側のid_rsaと、サーバ側のauthorized_keysのペアも正しいし、何でだろう。ssh -v でログをだしてみても良くわからない。 bash-2.05$ /usr/local/bin/ssh -v hoge@hogehoge ls OpenSSH_4.4p1, OpenSSL 0.9.8d 28 Sep 2006 debug1: Reading configuration data /usr/local/etc/ssh_config debug1: Connecting to hogehoge [1
もともとはgtk+をインストールしていて、configureしているとcairoとpangoが必要だといわれてソースからインストール。 それぞれソースをもってきて、cairo,pangoの順番でビルド、インストール。早速gtkでconfigureをかけるとこんなことを言われました。 (前略) checking Pango flags... configure: error: *** Pango not found. Pango built with Cairo support is required *** to build GTK+. See http://www.pango.org for Pango information.どうもpangoのビルドが不十分だったようです。pangoのconfig.logをチェックすると、こんなログがでていました。 configure:20644: c
私は文書をTeXでしかかけないという特異な体質を持っています。Wordを使うと全身にじんましんがでるのと、生産性が1/30になるので仕方がないのです。 でも使っているTeXは約10年前にインストールしたもの。1996年製のノートPC。TeXにしか使ってないので別になんともないんですが、まぁちょっと手が空いたので現DesktopへTeX環境を作ろうかなと。 ここから必要物件をダウンロードしてmake。Fedoraの新しいカーネルだとstdio.h中のgetlineと定義がコンフリクトするようです。 srcdir=. /bin/sh ./web2c/convert tangleboot gcc -DHAVE_CONFIG_H -I. -I. -I.. -I./.. -g -O2 -c tangleboot.c -o tangleboot.o In file included from tang
php+ApacheをRHで作成。Apacheをインストールしてからphpをインストールする手順。 Apacheをインストール http://httpd.apache.orgからApache2.2.10をダウンロード。phpはモジュールで組み込むのでsoをenableしておく。 $ ./configure --enable-so --enable-proxy --enable-ssl --enable-dav --enable-rewrite $ make # make install PHPをインストール PHP5の最新5.2.6をダウンロード。configureでapacheのapxsを指定する。 $ ./configure --with-apxs2=/usr/local/apache2/bin/apxs --enable-mbstring --enable-mbregex $ mak
pythonでPILを使っていて、ちゃんとサポートを入れたつもりになっていたデコーダがエラーになる。 IOError: decoder jpeg not availablesetup.pyを実行したときにはちゃんとsupport okってでますね。こんな感じ。 $ python setup.py build running build running build_py running build_ext -------------------------------------------------------------------- PIL 1.1.6 BUILD SUMMARY -------------------------------------------------------------------- version 1.1.6 platform sunos5 2.4.
書類ばかり書いています。相変わらずワープロは大嫌いなのでLaTeXを愛用。今日書いていた文書で、enumerate環境(番号つき箇条書き)の相互参照でデフォルトでは思いどおりにならないことがありました。 TeXを知らない人には「相互参照」ってなんだって思われるかもしれないのでちょっと解説。最近のワープロなんかにはそんな機能もあるみたいですが、文書中の章や項の番号、ページ数なんかを他の箇所から参照してその章番号やページ数を埋め込んでくれる機能なんです。 たとえば番号つきの箇条書きができるenumerate環境で相互参照するときはこう書きます。 \begin{enumerate} \item アンスポーツマンライクファウル \item テクニカルファウル \begin{enumerate} \item 審判の警告を無視する。\label{enum:無視} \item リングをつかんで体重をかけ
Linux機にOpenLDAPをインストール。./configureをかけるとこんなエラーがでました。 checking db.h usability... yes checking db.h presence... yes checking for db.h... yes checking for Berkeley DB major version... 4 checking for Berkeley DB minor version... 1 checking for Berkeley DB link (-ldb-4)... no checking for Berkeley DB link (-ldb4)... no checking for Berkeley DB link (-ldb)... yes checking for Berkeley DB version match...
4月14日のエントリと4月25日のエントリで書いた件。大体の環境の作り方はssh5.0のREADMEにしたがって4月14日のエントリで書いていますが、認証方法がイマイチ検証できていませんでした。 4月14日のエントリの段階では、ユーザのホームディレクトリを/(ルート)にして、本来のホームディレクトリのオーナをrootにしなくてはいけないらしくて、その影響で公開鍵と秘密鍵の認証はできないのかなぁと書きました。 でも昨日ユーザのホームディレクトリを/home/hogeみたいに普通のディレクトリで、しかもオーナもそのままでちゃんとChrootDirectoryしてくれることが分かりました。 つまり、こんな手順でOK。 ユーザを作成する。 公開鍵で認証するからパスワードは設定不要。 # useradd user sftponlyというグループを作成する。 # groupadd sftponly 作
先日apache2.2のキャッシュの設定を文字数2、階層の深さ2に設定して一安心。週末を過ごして今日監視画面をみたら真っ赤になっていました。何事とおもってみてみると、またディスク容量がパンク。 なんなんだ、このカーブ。多分とちゅうから緩やかになってきて一定レベルで安定するのかとおもってたんだけど、見事に外れました。 これは、キャッシュディレクトリを定期的に掃除するしかないかと考えを換えて、findで消そうかなぁとおもい、いろいろ調べていたところ、ちゃんとapacheのほうでツールを用意してくれていました。 htcachecleanというツールがあります。マニュアルはこちら。英語しかないですね。私の超適当訳を書いておきます。 htcacheclean htcachecleanはmod_disk_cacheストレージのサイズを一定の限度に保ちます。このツールは、手動でも、デーモンモードでも動作
SoftwareDesignの6月号に乗っていたOpenVPNを研究すべく自社のSolarisにOpenVPNをインストールしてみました。例によって、configure,makeではすなまいところがかわいいというか憎らしいというか。 必要なソフトウェア 以下のものを入れる必要があります。 OpenSSL lzo pam Solaris9の場合、OpenSSLとlzoはデフォルトでは入っていないので自分でいれてあげる必要があります。pamはもう入っているはず。OpenSSLは過去に入れてあるので、今回は書きません。 lzoインストール lzoはここからダウンロードできます。これは単純に展開して、configure,make。 $ /usr/local/bin/tar -zxvf lzo-2.02.tar.gz $ cd lzo-2.02 $ ./configure $ /usr/local/
xpdfをインストールして、pdfファイルを閲覧しようとしたんですが、見えない。/tmp/tmpXXXXXってなファイルがいっぱいできていて、内容はこんなの。 Error: Unknown character collection 'Adobe-Japan1'Google先生に聞いたところ、日本語のセットを入れればいいとのこと。フォントのセットなのかな。ここにあります。まずこれを展開して/usr/local/share/xpdf/japaneseにコピーする。 $ /usr/local/bin/tar -zxvf ./xpdf-japanese.tar.gz $ cd xpdf-japanese # mkdir -p /usr/local/share/xpdf/japanese # cp * /usr/local/share/xpdf/japaneseそれから/usr/local/etc/
4月9日のエントリで環境を作って、4月10日のエントリで問題を書いた件。 もう一度整理するとこんな感じ。 サーバ側はOpenSSHをつかって、クライアント側はputtyとFileZillaを使って比較的容易にセキュアなftpサーバをたてることができる。 しかしデフォルトのままの設定だと、サーバ上の読み込み権があるファイルが丸見えになる。 SSHでログインされることもある。SFTPアクセスだけに制限したい。 考えられるのはsftpでアクセスしてくるユーザにchrootっぽい制限をかけて、特定のディレクトリ以外のアクセスを許さないこと。tectia(商用ssh)にはユーザ単位にchrootをかける機能があります。OpenSSHも4.8から似たような機能が追加されました。今日はそれを試してみます。 だいたいここの通り。ちょっと間違っているところがあるのでそこは修正しました。 ユーザを作成する 今
次のページ
このページを最初にブックマークしてみませんか?
『rougeref’s diary』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く