本日も乙

ただの自己満足な備忘録。

2014-01-01から1年間の記事一覧

StofDoctrineExtensionsBundle について使ったり調べてみた

この記事は、Symfony Advent Calendar 2014 - Qiitaの7日目の記事です。 Symfony2で開発していると大抵の人がお世話になっている、StofDoctrineExtensionsBundleですが、Timestampable(作成日や更新日を自動挿入できる)以外にも便利な機能が提供されていたの…

SSHオプションを変更する方法

GitやMercurialでSSH経由でcloneやpullなどをすることがかなり多くありますが、ポート番号や秘密鍵のパスがデフォルト(e.g. ~/.ssh/id_rsa) と異なっていたり、ProxyCommandなどのSSHオプションを付けたりしたいことも多くの場合あります。 今回は、そのよう…

InternalELB(内部ELB)のDNS設定にはCNAMEレコードを使う

VPCでサーバ構築していて、InternalELB(内部ELB)を使う必要がでてきました。 InternalELBというのは、インターネット(外部)からアクセスできず、VPC内でしかアクセスできないロードバランサです。InternalELBを作成すると、PublicELB(外部からアクセスできる…

Elasticsearchの古いインデックスを削除するBashスクリプトを書いた

td-agent(Fluentd)で集めたログをElasticsearchに格納して、Kibanaで見るということをやっています。 とりあえずということで、200G程度のVPSでログ収集環境を構築したのですが、問題なのはElasticsearchにログを格納し続けるとディスク容量を圧迫していまい…

Amazon Linux 2014.09(Instance Stored-backed)からAMIを作成するとEC2インスタンスのStatusChecksが失敗する件について

先月、Amazon Linux AMI 2014.09がリリースされましたね。 仕事の案件でVPCを新規に構築しているのですが、せっかくなので最新のAMIを使おうと決めていました。今回は事情により、Instance Stored-backed(S3ベース)のEC2インスタンスを使う必要があったため…

Mobile-Detectを拡張して端末別にビューファイルを切り替える

更新間隔がまた空いてしまいました。 最近異動が決まりまして10月から東京に転勤することになりましたので引越し準備に追われていました。 Webサイトを作成する際、エンジニアやデザイナーにとって考えなければならないのが端末別のデザインへの対応だと思い…

エイリアスでメール送信するときに気をつけること(エンベロープFromの書き換え)

以前にPostfixで受信したメールを別メールに転送する(エイリアス)でエイリアス設定して別メールに送信するということをしました。 しかし、この方法には1つ問題があります。 例えば、下図のようにメール転送を設定した場合、foo_contact@gmail.comのメールヘ…

nginxのバージョンを抽出するワンライナー

最近、ブログ更新が滞っていました。今回は簡単なワンライナーです。 Serverspecでnginxのバージョンをテストしたい場合があったのでメモ。 $ nginx -v 2>&1 | egrep -o '[0-9]+\.[0-9]+\.[0-9]' 1.4.4 キモとなる部分が・・・ nginx のバージョン表示を標準エ…

CloudFront + nginx(http_image_filter_module) + S3 を使って画像変換サーバを構築する

珍しく(初めて?)AWSネタです。 仕事でAWSのVPCを構築しているのですが、画像を取り扱うサーバが欲しいとの要望がありました。 画像を表示するだけならCloudFront+S3だけで強力な画像(CDN)サーバを構築することができるのですが、今回は画像サイズもリアルタ…

GitHub + Travis CI + CoverallsでHerokuにデプロイする

今回もしつこくHeroku+Symfony2ネタです。 前回の記事で、HerokuでSymfony2アプリケーションをデプロイできるようになりましたが、そういえばテストを通していないなと思いました。 ちゃんとしたプロダクトを作るならテストは必須!ということで、オンライン…

セッションをMemcachedに格納してみる

かなり久しぶりの更新です。 前回では、HerokuでSymfony2を動かすようにしてみましたが、セッションをMemcachedに格納するところがどうしてもできずにいました。 しかし、PHP session handling on Herokuを見つけまして、試したらちゃんと動きました。 結局…

HerokuでSymfony2をデプロイして動かせるようにした

先日、関西PHP勉強会で@shin1x1さんがHerokuについての発表があり、以前FacebookアプリをHerokuで使ってた(挫折した)を思い出し、興味が出てきたので使ってみることにしました。 アプリケーションサーバ(Dynosというらしい)の稼働時間が1ヶ月で750時間までな…

社内でもくもく会をやるときに考えること

久しぶりのブログ更新です。 今度、社内で新しい試みとしてもくもく会(各自がもくもくと開発する会)を開こうと思っています。今までもくもく会は1、2回しか参加したことが無いのでどんな風に進めればいいのかよく分かりませんが、記事の後半にルールやタイム…

ユーザテストLive! 見学会 in KYOTO に参加してきました!

大分時間が経ってしまいましたが、5月29日(水)ユーザテストLive! 見学会 in KYOTO - 「あなたは"ユーザーテスト"を見たことありますか?」にユーザ役として参加してきましたのでそのまとめをしようと思います。 場所は株式会社はてな(京都オフィス)で、初め…

Zabbixサーバによる統合監視(3) 〜Zabbixエージェント(2.2)をソースからインストールする〜

前回の記事で、Zabbixサーバが使えるようになりました。 Zabbixサーバのみではサーバを監視することができないので、今回はZabbixエージェントをインストールしてサーバを監視できるようにしてみます。 Vagrantでローカル環境にサーバをたてる Zabbixサーバ…

Zabbixサーバによる統合監視(2) 〜Zabbixサーバ(2.2)を設定する〜

前回の続きで、今回はZabbixサーバを動かし、モニタリングするための設定を行います。 Vagrantでローカル環境にサーバをたてる Zabbixサーバをインストールする Zabbixサーバを設定してモニタリングできる環境を構築する Zabbixエージェントをインストールし…

Zabbixサーバによる統合監視(1) 〜Zabbixサーバ(2.2)をソースからインストールする〜

サーバを構築して運用するときに考慮しなければならないのが、サーバの監視です。 Webサービスのリリース直後は正常に動いていても、物理サーバの場合、時間が経過するとディスクや電源など至る所が故障したりして障害が発生することがあります。VPSやクラウ…

vagrant-vbguestプラグインインストール時に発生したエラーの対処方法

Vagrantのプラグインの1つに、vagrant-vbguestプラグインがあります。 これは仮想環境がVirtualBoxの場合、vagrant upしたときに自動的にGuestAdditionsをインストールしてくれるとても便利なプラグインです。 今までは仮想マシンにGuestAdditionsをインスト…

今更ながらMacOSXにVagrant+VirtualBoxをインストールして使ってみた

巷でVagrantが流行っているようです。Vagrant(ベイグラント)は仮想環境をコマンドで簡単に扱えるようにできるツールで、仮想環境なのでVirtualBoxやVMwareの他にAmazon EC2や1時間1円で使えるSSDクラウドなDigitalOceanでも使えます。 特に開発環境において…

HomebrewをGUIで管理できる「Cakebrew」が便利そう

Macのパッケージ管理といえば、MacPortsが有名ですが、最近はHomebrew(ホームブルー)が使われるようになってきたようです。MacPortsに比べてパッケージ(ソフトウェア)がインストールしやすいらしいので、Mac初心者の僕も使っています。 インストールが簡単と…

Monologでロギングする

プログラムを作成しているときに、必要な情報(ログイン情報やエラー情報)をログに出力することが多いと思います。Monologは強力なロギングライブラリで、ただファイルに出力するだけでなく、データベースに保存したり、メール送信したり、FireBugに出力した…

SwiftMailerを使ってメール送信する

皆さんは、PHPでメール送信する際に何を使っていますか? mail(), mb_send_mail(), PEAR::Mailなど様々な関数やライブラリがありますが、最近のモダンなライブラリとして SwiftMailer があります。 SwiftMailerはPHP5.2以上で動作するメールライブラリで、PE…

Mercurialのinclude,excludeのpattern(glob)について

小ネタです。 仕事でバージョン管理にMercurialを使っています。バージョン管理(リポジトリに登録)されているファイル一覧を取得したい場合に「hg locate」コマンドを使うのですが、パターンを絞ってファイル一覧を取得したかったので、include,excludeオプ…

rsyncで"protocol version mismatch -- is your shell clean?"とエラーが出た場合の対処方法

EC2インスタンスからMac book Airにファイルをrsyncで持ってこようとしたら以下のエラーが出ました。 $ rsync -av my-server:/home/foo/bar_* ~/ protocol version mismatch -- is your shell clean? (see the rsync man page for an explanation) rsync err…

nginxとPHP-FPMを連携させる

前回の記事でnginxをソースからインストールしましたが、HTMLファイルしか実行できません。 PHPを実行するためには、PHP-FPMを組み込んでnginxと連携させる必要がありますので今回はその辺りをすすめます。

nginx(1.4.7)をソースからインストールする

WebサーバといえばApacheが有名ですが、近年はnginx(エンジンエックス)が注目されるようになってきました。 nginxもApacheともにWebサーバなので、役割は同じですが、静的ページの表示に強く、リバースプロキシにも対応しているので、Apacheと共存させて静的…

OpenSSLアップデート後にcronでセグメンテーションフォルトが起こっていた

Heartbleedの影響で、OpenSSLをアップデートして対応しましたが、その後cronが動いていないことが判明し、syslog(/var/log/messages)を確認したところ、以下のようなセグメンテーションフォルトが発生していました *1。 [plain] Apr 8 00:00:02 localhost ke…

Intlをソースからインストールする

PHPのフレームワークSymfony2を使いたいときに、必要な要件にIntlがインストールされていることがありました。 Intlをインストールするには、コンパイル時に --enable-intl をつけてインストールすれば簡単ですが、リコンパイルするのが面倒だったり本番サー…

mkpasswdコマンドでランダムな文字列を生成する

Basic認証やユーザのパスワードなどにランダムな文字列を生成したいときがあります。 そういう場合、Webサイトやプログラムから生成しても良いのですが、mkpasswdコマンドを使えば簡単に生成生成できます。 今回はmkpasswdコマンドをインストールしてランダ…

CentOSの起動スクリプトを書き方(+注意点)

サーバの起動時や停止時に特定のスクリプトを実行したい場合があります。 例えば、起動時に起動した旨をメール通知したり、停止時にログ(/var/log)をAWS S3などのストレージにバックアップで保存したりできます。若しくはApacheやnginxなどを野良ソースから…