「技術」カテゴリーアーカイブ

Amazon Linuxでhttpd(2.2) + PHP(5.3)の組み合わせからhttpd24 + php54へのアップデート

Apacheが2.2から2.4になって設定の書き方が多少変わっているので対応するのが面倒だったのと、普通は動作確認にしっかり時間をかけないとなやつなのでずーっと先延ばしにしていたのだけど、勢いで対応したら割とすんなりいったので(大したものを動かしていないので)メモっておきます。

とりあえずバックアップを取りましょう。

最低限は

yum erase httpd httpd-tools php php-xml php-process php-cli php-common
yum install httpd24 php54

な感じで、あとは別途インストールしているものがあればそれぞれって感じで。

newrelicの拡張がアンインストール時に削除されていまうので

yum reinstall newrelic-php5

でどうにかなります。

追記: さらにPHP 7.2にした

yum erase php54 php54-cli php54-common php54-mbstring php54-mysqlnd php54-pdo php54-pecl-apc php54-pecl-memcache php54-process php54-xml
yum install php72 php72-mbstring php72-mysqlnd php72-pdo php72-opcache php72-pecl-apcu

要注意ポイントはapcの機能がapcuとopcacheになったのと、memcacheは外したところ。

Nginx reverse proxy + Apache(mod_php)環境でmod_pagespeedを動かしてみた

出立ての頃に少し触ってすっかり忘れてたのに突然存在を思い出したので、js/css/html minifyあたりがカジュアルに使えるようになってると良いなと思いつつ。

本当はちゃんとアセットパイプラインとかやるべきなんだろうけど、そこまで手を入れられない動いているアプリケーションに次善の策として検討できると便利なんじゃないかと。

とはいえ何度も何度もminifyするのは無駄遣い感が凄いので、Apacheにmod_pagespeedを入れてminifyした結果をnginxにキャッシュさせようという戦術で、とりあえずwordpressが動いている環境にmod_pagespeedデフォルト。これはそれっぽく動いているようには見えたんだけど、JSやCSSのURLが変わってしまう(style.cssがstyle.css.pagespeed.abcd.cssのような感じに)のが嫌な感じなので元々のURLを維持しつつ、画像の最適化系まで入れるとカジュアルじゃなくなってくるので、また今度にしたい。ということで入れてみた設定が以下。
# nginx 1.1.10, apache 2.2, mod_pagespeed 1.11.33

続きを読む Nginx reverse proxy + Apache(mod_php)環境でmod_pagespeedを動かしてみた

imagickを使ってpdfを画像に変換する

PHPのImagick(ImageMagick)を使ってPDFファイルを画像に変換することができます。

$imagick = new Imagick();

$imagick->readimage($pdf_file_name);

for ($i = 0; $i < $imagick->getImageScene(); $i++) {
  $imagick->setIteratorIndex($i);
  $imagick->setImageFormat('jpeg');
  $imagick->writeimage($image_file_path . '-page' . $i . '.jpg);
}

これ、結構リソース使うんですよね。ページ数の多いPDFを変換しようとしたら、memory_limitやmax_execution_timeに引っかかって…という経験ありませんか?

特定ページだけを画像化したい場合限定(1ページ目だけ変換したいとかありますよね?)ですが、次のコードでサクッとできます。

続きを読む imagickを使ってpdfを画像に変換する

appendChild()ではなくinsertBefore()を使ってスクリプトをロードするのはなぜ?

Google Analyticsのコードが使っているような、サードパーティのスクリプトを非同期にロードする方法を「createElement-insertBeforeパターン」と言うことくらいは知っていました。けど、ふと「なんでappendChildじゃ駄目なんだ?」と思って調べたのでメモ。

続きを読む appendChild()ではなくinsertBefore()を使ってスクリプトをロードするのはなぜ?

document.write()を止めるためにはFriendly iFrameを使うのが良さそう

Chromeの開発者ツールを開くとコンソールに何か出てるな。というのは気になってたんだけど、スルーしてたらこんな投稿があることを教えてもらった。
遅い通信だとChromeはdocument.writeで外部のスクリプトを読み込んでも動かなくなるらしい(A Parser-blocking, cross-origin script …)

続きを読む document.write()を止めるためにはFriendly iFrameを使うのが良さそう

CentOS 7のbind(named-chroot)は/var/named/chroot以下にファイルを置くと起動しない

自分で設定したヤツじゃなかったので、yum updateしたら上がらなくて焦った…

以前はそんなことなかったと思うんだけど、以下のファイルを /var/named/chroot 以下にマウントしようとして、同名のファイルがあるとエラーになり、起動できないようになったようです。

続きを読む CentOS 7のbind(named-chroot)は/var/named/chroot以下にファイルを置くと起動しない

PDOのプリペアドステートメントで実行するSQLを確認したい(?プレースホルダの場合)

モダンなフレームワークを使っていればこんなことで困ることもないんだろうけど、レガシーなオレオレフレームワークの面倒を見ないといけないこともあるよね。

そんな時はこんな感じでやるしかないんじゃないかな。

続きを読む PDOのプリペアドステートメントで実行するSQLを確認したい(?プレースホルダの場合)

XymonのアラートをSlackに飛ばすシェルスクリプト

Slackはやってるねー。必要な機能がきちんと動くことと、UXについて真剣に考えてるんだろうなぁという感じが伝わってくるところが良いと感じています。あとは、豊富なインテグレーション!のはずなんだけど、残念ながらXymonのインテグレーションは無いので、WebHookを使ってアラートをSlackに飛ばせるようにした。

続きを読む XymonのアラートをSlackに飛ばすシェルスクリプト