2012年03月02日

Node.jsでPushNotification

はじめに

最近iOSのプログラミングもすることになって、今回のターゲットはPushNotification(Remote Notification)だった。

調査

iOSのPushNotificationについては https://developer.apple.com/jp/devcenter/ios/library/documentation/RemoteNotificationsPG.pdf
を参考に進めた。最終的に頼りにしたのは下記だった。
http://www.raywenderlich.com/3443/apple-push-notification-services-tutorial-part-12
これは証明書やキーを作成した後、作成されたものが間違っていないかというところのチェックまで書かれていたので良い。※キーと証明書を結合するような処理があるが、Node.jsのコードでは両者をそれぞれ指定できるので結合は不要。

要するに何をするのかと言うと、Appleが用意しているPushNotificationサーバに対してSSL接続をかけて、プロトコル通りのバイナリを送信してやれば端末側にポップアップをさせてやることができるって代物だった。また、その為に端末を一意に認識するIDを取ったりすることも必要というものらしい。

大事なところ

プロビジョニングの設定をしたりするファイル作成の部分は上記の参考文献で概ねどうにかなる。それをNode.jsでどうにかするという部分だが、これについて http://bravenewmethod.wordpress.com/2010/12/09/apple-push-notifications-with-node-js/ を利用しようとするも「新しいバージョンではTLSを利用してね」と書いてある。一応TLSのサンプルに誘導されるが、その後どうするかは試行錯誤ということになった。

Node.jsのコード

とりあえず載せる。

このプログラムを実行するたびに指定したデバイスへメッセージが送られる。感度はかなり良いので楽しいと思う。

引っかかったところ

中間証明書(CA)が必要なのかと思って設定すると例外になってしまう。中間証明書はいらない。その際のエラーコードは「CERT_UNTRUSTED」。検索で殆ど引っかからなかった為、このワードで辿り着く人がいそうなので書いておく。

おしまいに

Node.jsに関係するところだけ抜き出して書いたが、本当は全部書くと良い情報になるのだろう。すまぬ。デバイストークンの取り方なんかもこの後必要になる情報。実際には上記のサンプルを整理してクラスを作成して利用している。

タグ:node.js IOS
posted by ms2 at 16:49 | Comment(0) | TrackBack(0) | プログラミング関係 | このブログの読者になる | 更新情報をチェックする
2012年02月24日

ノマドの話に触発されてIT技術系フリーランスの働き方について書いてみた。

はじめに

真夜中に起きてしまい、眠れなかったので書いてみた。

あなた誰?

フリーランスでIT系の人。自宅で仕事が乗らないことがしょっちゅうなので、電源難民として放浪することしばしば。 http://ms2.seesaa.net/article/154672163.htmlで長々と社会人前半史を書いているが、自分は元々組織に属するのがあまり好きでない。非常勤の契約社員的な働き方をしている最中も、自宅を中心の研究者的な職種だった。

ノマド?

そもそも何なのよという話がある。http://www.assioma.jp/?p=2807にとてもわかりやすい表が載っていたのでこれを見ると良さそう。本文はあまり読み込んでいないが。

IT系フリーランスの働き方

自分は大雑把に分けて三つの方式があると考えている。

項番 ここでの呼び名 概要 仕事の形態 交渉相手 責任
1 部分責任者型 自分はある一部分の責任を負う立場で主に製造、もしくは保守をする。 業務委託も請負もある システム開発の知識のあるプロジェクトの責任者 比較的軽い
2 プロジェクト責任者型 自分が製品の責任を負う立場で顧客企業と交渉し、提案し、製造し、保守をする。 基本的には請負 システム開発に知識の無い人を含む製品の利用者・もしくは製品の販売者 重い
3 企画立案型 新しい企画を自身で立案して儲けを出す。 むしろ雇う側。もしくはプロジェクト型。 基本的には無し 自己責任

どれでも所謂ノマドは可能。契約が場所に縛られる形を作らなければ誰も文句を言わない。でも、皆さんがあこがれる働き方は3、ないしは2だろうと思う。1でやるなら会社員に毛が生えた程度だと言ってもいい。ここには書かなかったが、コンサル型もあるだろう。こちらは今のところ専門外なので置いておく(実務としては似たようなことをしているだろうが、コンサルとして仕事を請けたことは今まで無いので)。

1になりがちなのは、所謂SIの会社が間に入ってしまっているケース。こうなると人月という計算の駒から逃れることができない。むしろ会社が守ってくれることは無いので会社員よりも圧倒的に不利だと思う。自身に余程特殊なスキルが無ければやってゆくのが難しいだろう。逆にそんじょそこらの技術者に負けない腕っ節があるならこれでもいけるだろうが。

2はだいたいITがわからない中小企業を相手にする形になると思う(大企業が個人にこのレベルを依頼するのは相当の事情が無い限り起こらないだろう)。相手がITわからないので、ヒアリング・交渉・相談のような所謂コミュニケーションスキルを駆使して望むことを具体化し、実現する。自身が責任者になるので当然責任は重い。相手に説明できなければ信用されないし、失敗すればお金をドブに捨てさせる結果になる。営業と製造を自分自身でやるので「プログラマがちゃんとやらなくて…」のような『営業の言い訳』はできない。人付き合いもそこそこできるバランス型の人向け。

3は夢追いプロジェクトから収益を上げたり、コワーキングで知り合った人でコラボして成果を出すようなイメージ。博打要素が大きくても夢があるから楽しいだろう。「製品をお金にする」というスキルが高い人、もしくはそういう知り合いを持つ人が有利に見える。関わり方にもよるが、自分が引っ張るならそれ相応のリーダーシップを持つ人でないと難しいと思われる。

現在の自分は2をやりながら3の成功を夢見ている。3が上手に行える柔軟な組織体を作りたいという思いがあったりもする。この組織は結果的には所謂株式会社になるのかもしれないが、実態が異なるものをイメージしている。ただ、自分は今のところコワーキング・スペースの活用はあまりしていない。人がいると話したくなってしまうのでプログラミングに集中できない為。

2をやるには自分が顧客と出会う為のパスが何らかの方法で必要なのだが、それは次の章に記そう。

自分の仕事の生まれ方

たまに話すと受けることがあるので、例えばどんな風に仕事が生まれているかを書いておく。読んだ人の参考になれば幸い。この生き方は「自分の生きている時間そのものが全て仕事に繋がる」やり方なのだと思う。自分は仕事が大好きなようなのでこれで満足しているが、そうでない人にはお勧めしない。

ケース1 コンソーシアム

自分は過去Linuxコンソーシアムというコンソーシアムに属しており、そこでプログラムの試作やセミナーでの発表を行っていた。思うところがあって契約社員を辞めた直後以下のようなやりとりをした。
ある人「最近何しているの?」
自分「毎日遊んで暮らしていますよ(笑)」(本当は自身の研究の為に殆どの時間を使っていたので遊びでは無いかもしれないが)
ある人「ちょっとうちの会社に遊びに来ませんか?」
自分「ぜひぜひ〜」
こんなやり取りで新しい契約先が決まってしまったことがある。

ケース2 勉強会

IT系のセミナーイベントの懇親会である会社の社員さんとお酒を飲みながら話していた。その人はまだ技術者としては駆け出しのようだったが、人柄にとても好感を持った。

別のイベントに参加した時にその人が自分を見つけてくれて再会。ちょうど社長さんと一緒に来ていたそうで名刺交換。「今度ちょっとお話しましょう。」の言葉に甘えて会社訪問。それからお仕事の相談にチョイチョイ乗っている。

ケース3 お酒

近所に気に入っているバーがあり、ちょうど居合わせた隣の人と意気投合。経営コンサルの方だったが、自分が起業にも興味があることを話すと「知り合いのXXさんならITわかるし相談に乗ってくれるよ。俺の名前出せば良くしてくれるから。」と、名刺をいただいた。起業についてのお話を聞きに行き、しばらくしてから「ms2さんってITやってるならこんなこと相談できます?」の流れからその人がクライアントになっている。

ケース4 友人プログラマ

以前から仲良くしている友人プログラマから連絡。その友人の奥さんのtwitter友達の友達が(ながっ)HTML5のコードが書ける人を探していると連絡をくれた。一度連絡を取り合ってみてくれないかとのことだったのでご連絡。その人やその仕事のクライアントが信用できそうだったので新しい仕事になる。

実際にやっていて

「不安とか無いんですか?」とよく聞かれるが、「今までこれで来ちゃったから、大丈夫なんじゃない?」と答えている。本当に他に言いようが無いからだ。あと、自分の場合は馬の合う同じ顧客に継続して欲しいと思っており、積極的な営業行為もしない。仕事が毎月無ければならないとは思わず、イイ仕事を高い単価でこなす方を取っている。

だって、この生き方は時間の有効活用の為にしているんだ。逆にそれができないのであればこの働き方はやめると思う。

あと、自分はこのやり方で一生やってゆく気はない。フリーランスの最大のリスクは「一人であり、自分が倒れたら終わり」ということだから。健康なら良いが、いつ体調を崩すとも限らないし、事故に遭わないとも限らない。家計を共にする人がいて稼いできてくれるならまた話は別だが、今はそんな状況でもないし。もうひとつ。自分の市場での価値は年々下がると意識している。特にIT技術は若い人の方がやれる。今後はもっと加速するだろうから、今の働き方を続けるだけではいけないと思う。

おしまいに

ノマドの話?なんかどこかに飛んでいってしまったかも。ちょっと気合入れすぎて疲れました。寝ます。

posted by ms2 at 06:04 | Comment(0) | TrackBack(0) | しごと | このブログの読者になる | 更新情報をチェックする
2012年02月20日

続・MongoDBが起動してくれなくなったら。もしくはユーザを指定してコマンドを実行する方法。

はじめに

MongoDBが起動してくれなくなったらの続き。

本文

件の文章の中でパーミッションがおかしくなってしまった記述をしたが、起動コマンドを叩くユーザが所有者としてファイルが変更されているのだろうと考えて、以下のようにスクリプトを用意した。

#!/bin/sh
sudo -u mongodb mongod -f /etc/mongodb.conf --repair

いつも使っているsudoで良かったとは灯台下暗し。

おしまいに

これで困ったらこのスクリプトを叩けばrepair終わり。楽チン。

posted by ms2 at 13:22 | Comment(0) | TrackBack(0) | プログラミング関係 | このブログの読者になる | 更新情報をチェックする
2012年02月10日

Socket.IOでChromeがWebSocketの実装を使ってくれない場合

はじめに

Socket.IOのアプリをデバッグしていたら、xhrのポーリングを行っていて、WebSocketの実装が動いていないことに気づいた。Chromeではこの現象だが、FirefoxではWebsocketが動いているようだ。

現象

Chromeでアクセスすると、Node.jsのコンソールに下記のように表示される。

warn  - websocket connection invalid

原因・解決

https://github.com/LearnBoost/socket.io/issues/619で議論されているが、どうやらv0.8.6以降では解消されているようだ。アップデートを行うことに決定した。

おしまいに

おかげでタイムアウト10秒を待たずにアプリが起動するようになったのですこぶる快適になった。

posted by ms2 at 16:09 | Comment(0) | TrackBack(0) | プログラミング関係 | このブログの読者になる | 更新情報をチェックする
2012年02月09日

MongoDBが起動してくれなくなったら

はじめに

MongoDBをUbuntuにインストールしてあるアプリを作っている。開発にはVMWareでやっているのだが、OSごと強制終了された後の建て直しに結構大変だったのでメモ。

経過

/etc/mongodb.confを見てログファイルのパスを確認し、チェック。

***** SERVER RESTARTED *****


Thu Feb  9 16:16:28 [initandlisten] MongoDB starting : pid=1463 port=27017 dbpath=/var/lib/mongodb 32-bit host=ubuntu
Thu Feb  9 16:16:28 [initandlisten]
Thu Feb  9 16:16:28 [initandlisten] ** NOTE: when using MongoDB 32 bit, you are limited to about 2 gigabytes of data
Thu Feb  9 16:16:28 [initandlisten] **       see http://blog.mongodb.org/post/137788967/32-bit-limitations
Thu Feb  9 16:16:28 [initandlisten] **       with --journal, the limit is lower
Thu Feb  9 16:16:28 [initandlisten]
Thu Feb  9 16:16:28 [initandlisten] db version v2.0.2, pdfile version 4.5
Thu Feb  9 16:16:28 [initandlisten] git version: 514b122d308928517f5841888ceaa4246a7f18e3
Thu Feb  9 16:16:28 [initandlisten] build info: Linux domU-12-31-39-01-70-B4 2.6.21.7-2.fc8xen #1 SMP Fri Feb 15 12:39:36 EST 2008 i686 BOOST_LIB_VERSION=1_41
Thu Feb  9 16:16:28 [initandlisten] options: { command: [ "run" ], config: "/etc/mongodb.conf", dbpath: "/var/lib/mongodb", logappend: "true", logpath: "/var/log/mongodb/mongodb.log" }
**************
Unclean shutdown detected.
Please visit http://dochub.mongodb.org/core/repair for recovery instructions.
*************
Thu Feb  9 16:16:28 [initandlisten] exception in initAndListen: 12596 old lock file, terminating
Thu Feb  9 16:16:28 dbexit:
Thu Feb  9 16:16:28 [initandlisten] shutdown: going to close listening sockets...
Thu Feb  9 16:16:28 [initandlisten] shutdown: going to flush diaglog...
Thu Feb  9 16:16:28 [initandlisten] shutdown: going to close sockets...
Thu Feb  9 16:16:28 [initandlisten] shutdown: waiting for fs preallocator...
Thu Feb  9 16:16:28 [initandlisten] shutdown: closing all files...
Thu Feb  9 16:16:28 [initandlisten] closeAllFiles() finished
Thu Feb  9 16:16:28 dbexit: really exiting now

とりあえず「綺麗にシャットダウンしなかったね。http://dochub.mongodb.org/core/repairを見なよ」と出ていた。言われた通りに見に行く。Journalingしてるかしてないか等の切り分けがあるが、32bit環境なのでJournaling=false,Replication=falseだと思われる。というわけで下記のコマンドで行けるとわかる。http://shinodogg.com/?p=3899でも同じ解決をしているらしいので大丈夫だと見越した。

$mongod --repair

これを叩くとまたエラー。

Thu Feb  9 16:36:05
Thu Feb  9 16:36:05 warning: 32-bit servers don't have journaling enabled by default. Please use --journal if you want durability.
Thu Feb  9 16:36:05
Thu Feb  9 16:36:05 [initandlisten] MongoDB starting : pid=1779 port=27017 dbpath=/data/db/ 32-bit host=ubuntu
Thu Feb  9 16:36:05 [initandlisten]
Thu Feb  9 16:36:05 [initandlisten] ** NOTE: when using MongoDB 32 bit, you are limited to about 2 gigabytes of data
Thu Feb  9 16:36:05 [initandlisten] **       see http://blog.mongodb.org/post/137788967/32-bit-limitations
Thu Feb  9 16:36:05 [initandlisten] **       with --journal, the limit is lower
Thu Feb  9 16:36:05 [initandlisten]
Thu Feb  9 16:36:05 [initandlisten] db version v2.0.2, pdfile version 4.5
Thu Feb  9 16:36:05 [initandlisten] git version: 514b122d308928517f5841888ceaa4246a7f18e3
Thu Feb  9 16:36:05 [initandlisten] build info: Linux domU-12-31-39-01-70-B4 2.6.21.7-2.fc8xen #1 SMP Fri Feb 15 12:39:36 EST 2008 i686 BOOST_LIB_VERSION=1_41
Thu Feb  9 16:36:05 [initandlisten] options: { repair: true }
Thu Feb  9 16:36:05 [initandlisten] exception in initAndListen: 10296 dbpath (/data/db/) does not exist, terminating
Thu Feb  9 16:36:05 dbexit:
Thu Feb  9 16:36:05 [initandlisten] shutdown: going to close listening sockets...
Thu Feb  9 16:36:05 [initandlisten] shutdown: going to flush diaglog...
Thu Feb  9 16:36:05 [initandlisten] shutdown: going to close sockets...
Thu Feb  9 16:36:05 [initandlisten] shutdown: waiting for fs preallocator...
Thu Feb  9 16:36:05 [initandlisten] shutdown: closing all files...
Thu Feb  9 16:36:05 [initandlisten] closeAllFiles() finished
Thu Feb  9 16:36:05 dbexit: really exiting now

「/data/db/」が無いから終了しますと言っている。だがこのパスを意識した覚えが無い。http://d.hatena.ne.jp/ressentimentaro/20120121/1327166113を見ていてわかってきた。

以下の様に--repairを追加した。
daemon --user "$MONGO_USER" $mongod $OPTIONS --repair
(・・・多分$OPTIONに指定されている /etc/mongod.conf で指定すべきなんだよね。。。)

ようはmongodb.confをmongodに指定する方法を探せば大丈夫なんだと。というわけで下記。

$mongod -f /etc/mongodb.conf --repair

これまでのコマンド操作で/var/lib/mongodb配下のファイルのパーミッションがrootに変わってしまったようで、これは所有者をmongodbに変更して起動成功した。

おしまいに

この手のトラブルシューティングは思わぬところで時間を食うので困る。

posted by ms2 at 17:04 | Comment(0) | TrackBack(1) | プログラミング関係 | このブログの読者になる | 更新情報をチェックする
2012年02月07日

XCodeから実機への転送の補足

はじめに

iOSの開発を有志ですることになったのでMac Book Airを買ってきた。Macを使い込んだことがないので四苦八苦しながらやっている。今回はiOS開発の最初のヤマである、実機への転送に挑戦した。実は一度Phonegap Buildを利用してWindows環境でも似たようなことをやったのだが、勝手がだいぶ違ったので振り返っての補足をしておく。

基本的な流れはこちらを参照

躓いたところ

Mac上での証明書や鍵の登録。これが嵌った原因。「どうなれば正しいのか」が良くわからないので自信なく進んでしまうためだ。というわけでポイントのスクリーンショットを書いておく。

MyCertificate.png

developer_identity.cerを「ログイン > 自分の証明書」で登録すると上記のような雰囲気だ。登録した当初は「iPhone Developer」だけだったと思うが、手順を続けてゆくと「iPhone Distribution」もいつの間にか入っていた。

Certificates.png

AppleWWDRCA.cerを入れると「Apple Worldwide Developer Relations ...」という名前で登録されていた。

ファイルのDnDで登録する方法を取ったのだが、ちゃんとドロップされたのかがイマイチわかりにくく、再度登録した時にもオペレーションが成功したのかどうかがよくわからないのがわかりにくいところだと思う。

おしまいに

これでとりあえず実機転送ができてとても満足。動かしたのがPhonegapのサンプルだったのでビルドエラーが何個かあったのだが、それについてはまた改めて記すことにする。

タグ:IOS Xcode Mac
posted by ms2 at 21:44 | Comment(0) | TrackBack(0) | プログラミング関係 | このブログの読者になる | 更新情報をチェックする
2012年01月06日

団塊の世代について団塊の世代と話したこと

はじめに(小説の宣伝文句調で)

団塊の世代である父親とその息子である自分が、年末のダラダラした空気の中で話している中で辿り着いた父親自身の団塊の世代観とは…

記憶が風化しないように大体流れを覚えている今のうちに記しておく。正しいとか間違えているとかではなく、そういう分析をした人がいたとうことで。

ないよう

自分「あのさ、年末にちょっとした知り合いと話をしている最中にこんな会話になったんだけど…」
父親「ん?」
自分「世の中の変化ってある程度人口とか構成している世代の雰囲気が影響していることもあるんじゃないかなーって話で、その世代の特徴っていうのがありそうだよね…と。」
父親「ふむ」
自分「例えば所謂ベビーブーム世代って数が多かったわけだから、例えば『数集めて寄ってたかれば何とかなるさ』みたいな論理で動きやすい傾向とかないかなって。」
父親「あー、あったろうね。あの頃はとりあえず勢いだけでどうにかしようとする傾向があったから。まぁ、世の中も右肩上がりだったからドンドン会社に入れることも出来たし。」
自分「やっぱりそうだよね。そういう人が今度上の世代になってきて今になるとさ、『数集めて…』っていうのが既にうまくいかないわけじゃない?『数集めずに工夫して…』っていう話が今だから。」
父親「確かにあの頃と今では求められていることも違うだろうしなぁ。」
自分「だよね。そうすると『今までやったことの無いことを別の方向性で考えろ』って言われている気がするんだよね。」
父親「おい、今キミと話していて重大なことに気づいてしまったぞ」
※親父はたまに芝居がかった口調でものを言ったりする。
自分「うん?」
父親「これって俺たちの『世代』に能力が無いからこんなことになっているような気がしてきた。『誰が』という話ではなくてもうこの世代にいる人の殆どが今求められることを達成できない。大阪の議員も橋下さん(大阪市長)に何か言われても全然言い返せないって石原さん(都知事)が言ってたらしいし。石原さんなんて俺たちよりも上の世代じゃない?いかに俺たちの世代が駄目かってことだ。上の世代も凄い人たちは戦争で亡くなったりもしたんだろうし鍛えられて無いんだろうな。」
自分「いやー、なにもそんなに否定しなくても、数がいるんだから多少割合が少なくても…」
父親「(食い気味に)いやっ。これはもう殆ど事実だと思うな。やっぱり俺たちの世代は早く退場して橋下さんみたいな若い人が…(以下長いので割愛)」

というわけで、うちの親父の考え方では自分の世代の能力が圧倒的に無いから今こんなことになっているのだと。自分はそこまでとは思っていないのだけど、なんだか過激な結果に辿り着かれてしまってちょっとびっくりした。

おしまいに

たまには世代の違う人となんかいろいろ話すのも良いのだけど、ものによってはびっくりするような結末になることもあるのであった。自分はこういうのは楽しいから良いのだけどね。

「老害」なんていう言葉で表されるものの正体はひょっとしてこういうものに近いところにあったりするのかなぁと書きながらぼんやり考えた。おしまい。

タグ:父親 経済
posted by ms2 at 13:39 | Comment(0) | TrackBack(0) | いろいろ | このブログの読者になる | 更新情報をチェックする
2011年12月06日

TCP通信が遅い場合の対処

はじめに

さくらVPSを利用してサービスを提供しているものがあるのだが、最近妙にWEBのアクセスが遅くなってしまった。元々速いとは言えなかったのだが、致命的に遅い。コンテンツの作成時にテストサーバとして確認用に利用することすらも困難になってしまったので、これは調査の必要があると思い立った。

経過

通常は「何が遅いのか」等の個々の問題を切り分けして解消するのであろうが、検索すると下記のような情報に行き当たった。

さくらのVPSで「Ubuntu」を利用していますが、回線速度が遅くアクセスに時間がかかります。

現象はまさに自身のサーバで起こっているものなので、これを試してみることにした。導入すると改善し、以前のような速度に戻った。

おしまいに

ただし、そもそもそれまでの速度よりも落ちてしまった別の原因があるはずで、実はまだ納得はいかない。VPSなので同居しているほかのサービスが帯域を使いまくっている可能性はあるだろう。pingが90msで返ってきているのでそれ程ネットワークが遅いわけでも無いと思うのだが…。

タグ:Linux
posted by ms2 at 11:36 | Comment(0) | TrackBack(0) | 運用・管理 | このブログの読者になる | 更新情報をチェックする
2011年11月30日

modxでファイルアップロードがうまくいかない場合

はじめに

運用管理をしているサーバの中にmodxというCMSが導入されているものがある。今回このmodxで「大きなファイルのアップロードがうまくいかないので見て欲しい」という依頼があった。

環境

まずは環境から。

  • modx 1.0.5J-r4
  • PHP 5.1.6
  • Apache2

経過

まずはPHPで一般的なファイルアップロードの問題と考えられたので、.htaccessで値の設定を行うことにした。下記のように.htaccessに追記する。

php_value memory_limit 300M
php_value post_max_size 256M
php_value upload_max_filesize 256M
php_value max_input_time 600
php_value max_execution_time 600

PHPのデフォルトは2Mまでのファイルに対応しているようなので、3M程度のファイルを作成してアップロードを試みた。ファイルの作成はWindowsならfsutilを利用すると便利らしい。modxの「エレメント」→「ファイル管理」でアップロードする。

アップロード完了しても完了の通知も無く、新しいファイルも追加された形跡がない。サーバ上にも当然上がっていない。

phpinfoはmodxからも確認できる。「レポート」→「システム情報」→「phpinfo()」と見ると、.htaccessの設定は有効になっている。phpのログにも、modxのイベントにも何も報告が無い。 PHPが止めていないと予測されるのでmodx側の何かだと予想された。

実はmodxにはファイルアップロード制限のオプションがある。「ツール」→「グローバル設定」→「アップロードサイズの上限」だ。しかしこの設定には以下のようなコメントが書いてある。

※この設定は現在は無効です。PHP4.2.3以降ではプログラム側で設定を変更できないようになっているためです。.htaccessやphp.iniでupload_max_filesizeの設定を変更してください。

とは言えものは試してここに200000000と入力して改めて試した。なんとうまくいく。どうやらコメントの方が間違えており、設定は有効に働くようだ。これで200Mのファイルアップロードに成功した。

おしまいに

上記のような経過を報告して今回の修正を終えた。ソフト本体に翻訳が追いついていないということなのだろう。ファイルのアップロードを制限した場合に何らかのイベントをログで残してくれていれば発見が早いと思うのだが、ひょっとしたらそういう設定もどこかにあるのかもしれない。

タグ:MODx LAMP PHP
posted by ms2 at 16:58 | Comment(0) | TrackBack(0) | 運用・管理 | このブログの読者になる | 更新情報をチェックする
2011年06月28日

お名前.comでのメールサーバの扱い

はじめに

お名前.comのサーバでバーチャルホスト運用しているのだが、どうもメールサーバの扱いに注意が必要そうなので記しておく。

前提

下記のような構成である。

  1. VPSサーバ
  2. CentOS5.3
  3. バーチャルホストで複数のWEBを運用
  4. SMTPサーバは基本的に外部ホストに設置されている

現象

あるタイミングでWEBの送信システムからのメールが自ドメイン(外部ホスト)のメールサーバに届かなくなってしまう。同様に自ホスト内(別ドメイン)からのメールが外部ホストのSMTPサーバに届かなくなってしまう。

原因

/etc/postfix/virtual_domain_mapの内容が上書き更新されてしまい、外部ホストのSMTPサーバに対して同一ホストにいないという意味合いに修正した部分が意図しない更新を受けた。

/etc/postfix/virtual_domain_mapで設定するのは同一ホスト内に設置されたSMTPサーバとみなせるドメインの一覧であるらしい。お名前.comではWEBやメールが自身から一緒に提供されるものとしているようで、あるドメインを登録すると、そのWEBとメールが同一ホスト内にあるとみなした設定を自動的に行うようだ。こちらはそれを嫌って、/etc/postfix/virtual_domain_mapに自動的に書かれる設定をコメントしている。先に記したように、SMTPサーバは外部ホストに存在する為だ。

厄介なことに、ドメインの操作(例えばサブドメインを新たに作成したり、削除したりする等)をすると、改めて/etc/postfix/virtual_domain_mapを上書き更新してくれる。せっかくコメントしたものを全部生かしてくれるために、外部ホストにあるメールサーバが同一ホスト内だとみなされて、結果的に送信できなくなってしまう。

解決

今のところは運用でカバーする予定。ドメインの操作をする場合には情報を共有してやる以外に方法がないだろうと考えている。ひょっとしたら書込み禁止属性にしてしまえば更新はされなくなるかもしれない。

おしまいに

確かに初心者向けに倒していらぬサポートを減らしたいという意図はわかるのだが、ちょっとこの動作はやりすぎな気がする。

posted by ms2 at 01:28 | Comment(0) | TrackBack(0) | 運用・管理 | このブログの読者になる | 更新情報をチェックする
gaAddons (Stephane Hamel) / CC BY-NC-ND 3.0