検討!目論見委員会Z

サーバインフラ屋10年余りやってる人

同人誌用のsphinxテンプレートをつくった

Sphinx+翻訳 Hack-a-thon 2014.5に参加しました。

同人誌用のsphinxテンプレートを作りました。sphinxと、dvipdfmxがインストールされている環境であれば、お手軽に評論系同人誌の入稿用PDFを作ることが出来ます。

nanaka-inside/sphinx-template · GitHub

シュークリームおいしかったです。

nginxのupstreamのserverの記述が効かない

発端

  • apacheをnginxにするから設定ファイルを移植してよ」という寝言が聞こえてきた
  • ムニャムニャしながらapacheの設定を見たところ、mod_proxy_balancerを使っていたので、nginxではproxy_passに書き換えないとなーと思いつつ二度寝した
  • 夢の中の出来事なんじゃないかな?

環境

構成

  • クライアントのリクエストをnginxがプロキシして、backend serverに流す流れ
  • apache(backend server)はバーチャルホストがいくつかある
client request ==(HTTP:80)==> [ nginx (proxy) ] ==(HTTP:80)==> [ apache(backend server) ] 
response to clinet <==(HTTP:80)== [ nginx (proxy) ] <==(HTTP:80)== [ apache(backend server) ]

問題

  • nginxの設定ファイルのupstreamのserverにbackend serverのFQDNを書いた
  • proxy_passにupstreamの名前を指定したけど、backendのFQDNにアクセスしてくれない
  • proxy_passに直接backend serverのFQDNを書くとプロキシしてくれる

原因と対策

*追記:2014/5/21 * Host header追加するだけで良いことがわかった

  • backend serverのFQDNDNSが引けないのが原因だった
    • FQDNはhostsファイルに書かれていた
    • FQDNDNSに登録されていなかった
  • upstream内のserver に書かれたFQDNは、nginx起動時に名前解決されてIPで保持されるらしい
    • resolverという設定ができるがここでは触れない
    • 引けなかったらエラーにしてくれよ感あるが、まあhostsファイルで解決しちゃってるらしいから仕方なし
  • DNS登録するのが面倒だったのでserverにIPを書いてHost headerを書き換える流れ

    設定例

  • nginxの設定ファイルのhttpの中身を抜粋
  • 何となくset $host_headerとした
  • 何をやりたかったかは察して欲しい
  • これだけだと全てのアクセスをbackend serverに投げつけるので、proxy_cache_pathとproxy_temp_pathとか使ってキャッシュしてあげたほうが良い
    server {
        listen       80;
        server_name  _;
 
        access_log  logs/access.log  main;
  
        location / {
            root   html;
            index  index.html index.htm;
        }
    }
    
    upstream backends {
        server 192.168.1.1;
    }
    
    server {
        listen 80;
        server_name hoge.example.com;
        access_log logs/hoge.log main;
        set $host_header "backend.example.com";

        location / { 
            root /www/public;
        }
        location /data { 
            proxy_pass http://backends/resouce/;
            # proxy_pass http://backend.example.com/resouce/; # これだとうまくいく
            proxy_set_header Host $host_header;
            proxy_redirect default;
        }
    }

なお、hostsファイルを抜粋するとこんな感じだったが、今回の設定では使わないので消して良い

192.168.1.1 backend.example.com

参考

オライリ◯っぽい印刷をするには

表紙のフォントについてはO'Reillyの表紙をパロディしたい人向けのあれこれ - びびび新書を参照してください。 解説CoreUtilsという本を作った時にどのような仕様で作ったか書き残しておきます。

f:id:tboffice:20140502221312j:plain

オライ◯ーの本の仕様は、B5変型、カバー付き、カバーと表紙は墨と特色の二色刷りです。特色についてはDICナンバーカラーを探してください。今回はDIC147(紫)をチョイス。

  • サイズ
    • 182mm x 233mm
  • カバー
    • コート135kg PP加工
    • 表1,表4を超えた部分のサイズは90mm。つまり横のサイズは550mm(90+182(表4)+背表紙分今回10+182(表1)+90)
  • 表紙(表1,背表紙,表4)
    • サンカード 19.5kg
  • 見返し
    • 表紙の裏側に張り付く紙のこと
    • 今回金額と相談して見送り
    • なお、やるなら淡クリームラフ書籍62.5kg
  • 本文
    • ラフ書籍用紙(クリーム) 62.0kg
    • ぴったり同じ紙がなくて若干黄色い紙だけどまあ気づかないのでおk
  • その他
    • 二色刷りのデータの作成に苦労したような気がする
    • psdのモードは、墨とM(マゼンダ)C(シアン)(訂正)で作成

今回イニュニックさんに印刷をお願いしました。 刷り上がったものを見たところ、想像以上にオラ◯リーでした。もろもろ相談に乗っていただきありがとうございました。

今度はCoreutilsを擬人化しました???

5/5に開催されるCOMITA108 COMITIA の「第7開発セクション」というサークルで「解説Coreutils」という本を出します。スペースナンバーはF-33bです。

f:id:tboffice:20140502221312j:plain

Coreutilsは、Linuxのコマンドでよく使われる*1lsやcat、rm、tail、shuf、stdbufなどをまとめたソフトウエアです*2

Coreutilsのマニュアルを読んで、全てのコマンドとそのオプション*3を実行例とともに解説しました。シェル*4があればすぐに試すことが出来ます*5

読者対象は、

  • VPSsshで入って困らない程度に設定できる
  • テキスト処理をするためにシェルスクリプトを書いたことがある
  • 息をするのも面倒でマニュアルを引かない
  • cdコマンドにオプションがないと思い込んでいる
  • catコマンドを単独で実行したことがない
  • tail -f していて対象のファイルがログローテートしていて流れてこないよーという事象に遭遇したことある
  • 拡張子をアルファベット順で表示できるの?えっ?
  • chownの時にuidで指定したいなあ。え?できるの??
  • $と#の違いがわかる
  • |や&、||、&&は分かる

といったことに数個当てはまった人です。

まずはさらっと本文を読んでから、気になったコマンドを実行するといいと思います。3分くらい遊べるネタや、Coreutilsに無いコマンドも触れています。読んでいて飽きないように努めました。

表紙のキャラクターの名前、本書に施された仕掛けなどは、詳細は第7開発セクションのサイトをごらんください。

あ、既刊のななかInside PRESSも持ち込むので、まだお手に取られていない方は是非見てってください。

追記(2014/5/6) COMIC ZINさんへ委託開始しました。通販はこちら

*1:というかlsを打たないでどうやってLinux系OS管理するのよ?

*2:stdbufなんて使わないよ??

*3:全てのオプションを解説すると冗長になるので適度にカットしました

*4:シェルって書くと怒る人いるんですけど伝わればいいじゃんという態度

*5:ただしCoreutilsのバージョンが新しいものでないと動かないコマンド・オプションがあります