明滅するプログラマの思索

WEBエンジニアとして勤務している一介の男が、日々気づいたことをまとめるブログです

Google Cloud Platform の負荷分散に Let's Encrypt のSSL証明書を設定する

Google Cloud Platform(以下 GCP)で利用可能なロードバランサでフロントをSSLにするために Let’s Encrypt を利用することができます。
この件については、以下の参照先が大変参考になります。

qiita.com

ここでは、参照先の内容を踏まえて気を付けるべき点と、自動化するための設定をまとめます。

続きを読む

Apache ユーザに別のユーザとして処理を実行させる

Apacheで立てた Web サーバにリクエストを送り、それをトリガとしてサーバ上で操作を行う場合、その実行ユーザはデフォルトでは apache ユーザとなります。
これだと、そのファイルのユーザ・権限によっては、アクセス権がなく実行に失敗してしまうことが考えられます。
もちろんアクセス権を事前に変更しておき、apache ユーザでも処理を行うことができるようにする、というのも1つの方法ではありますが、そういった処理をしたくない場合もあります。
そういった場合、linux なら sudo コマンドを利用して、別のユーザとして処理を実行することができます。

ソフトウェア バージョン
CentOS 7.3
PHP 5.6
続きを読む

Postfix を利用して外部の qmail サーバからメールを送信する

Google Compute Engine は、Google の制約によりメール送信が行えません。
すなわち、SMTP(25番ポート)・SMTPS(465番ポート)・Submission(587番ポート)が閉じられています。
メールを送信する場合、サードパーティのメール送信ツール SendGrid を利用するよう推奨されています。
ここでは SendGrid を使わずに、自分で別のサーバにメールサーバ qmail を立て、そこを経由してメール送信を行えるようにしてみます。

導入環境

GCE側

ソフトウェア バージョン
CentOS 7.3
Postfix 2.10

GCE 側のIPを <gcp ip>と記述します。
また、GCEは25番ポートが閉じているため、25番ポートでのメール転送が行えません。
ここでは50025番ポートを使用することにします。

メールサーバ側

ソフトウェア バージョン
CentOS 6.9
qmail 1.03

メールサーバ側の IP を <qmail ip> と記述します。

続きを読む

Nginx のリバースプロキシを利用し PHP 処理を Apache で行う

Nginx のシェアが堅調に伸びているようです。
Apache と違い、静的なコンテンツを大量にさばくのに適した Web サーバですが、サーバサイドスクリプトを実行する場合はちょっとしたテクニックが必要となります。
PHP の場合、php-fpm を起動し UNIXドメインソケット経由で実行させる方法があります。
この方法の場合、ファイルベースでセッションを管理しようとすると、格納先(デフォルトだと /var/lib/php/session)のアクセス権をフルオープンにしなくてはならず、個人的には好きな方法ではありません。
やはり PHPApache モジュールにさばいてもらうのが、今までの前提知識も崩れにくく、安定すると思います。
そこで、Web フロントは Nginx に立ってもらい、PHPリクエストの場合は Apache に流して実行する、という構築を行ってみたいと思います。

導入環境

ソフトウェア バージョン
CentOS 7.3
Nginx 1.12.1
Apache 2.4.6
続きを読む

ps ax|grep コマンドで自分自身を除く

ps コマンドと grep コマンドを使って、実行中のプロセスを確認するとき、結果にその実行コマンドも含まれてしまいます。
たとえば、httpd プロセスを確認するとき、以下のように書きますが、

$ ps ax|grep httpd
 1468 ?        Sl     1:11 /usr/sbin/httpd
 1469 ?        Sl     1:05 /usr/sbin/httpd
 1470 ?        Sl     1:13 /usr/sbin/httpd
 1471 ?        Sl     1:05 /usr/sbin/httpd
 1472 ?        Sl     1:06 /usr/sbin/httpd
 1473 ?        Sl     1:04 /usr/sbin/httpd
 1474 ?        Sl     1:07 /usr/sbin/httpd
 1475 ?        Sl     1:13 /usr/sbin/httpd
 6760 pts/7    S+     0:00 grep httpd      ←実行コマンドが含まれる
19200 ?        Sl     1:09 /usr/sbin/httpd
19201 ?        Sl     1:09 /usr/sbin/httpd
19271 ?        Sl     1:07 /usr/sbin/httpd
19272 ?        Sl     1:06 /usr/sbin/httpd
20058 ?        Sl     1:04 /usr/sbin/httpd
22555 ?        Ss     5:04 /usr/sbin/httpd
22600 ?        Sl     1:02 /usr/sbin/httpd
22602 ?        Sl     1:02 /usr/sbin/httpd
22603 ?        Sl     1:05 /usr/sbin/httpd
24020 ?        Sl     1:00 /usr/sbin/httpd
24029 ?        Sl     0:59 /usr/sbin/httpd
続きを読む

HLS(HTTP Live Streaming) を構築する

HLS とは

  • Apple が開発した動画ストリーミングのためのロジックです。
  • 主にSmartphone向け、iPhone / Android3.0 以上で動作します。PCではデフォルトでは再生できませんが、Javascriptベースの再生可能なプレイヤーは開発されています。
  • 特別なサーバを必要とせず、Webサーバがあれば実装可能です。
  • 要はお手軽なストリーミングサーバ!

導入環境

ソフトウェア バージョン
CentOS 6.8
Apache 2.2.15
続きを読む