nginx+php5-fpmで504や104のエラーが出たら・・・

504のエラーが出た場合

client—①—nginx—②—php5-fpm—③—mysql

上記の構成として、この場合、②においてnginx—>php5-fpmでphp5の処理が遅くnginxが切断してしまった。
という事なので、nginxのfastcgiのtimeout値を伸ばしてあげる必要があります。

例えば、以下のようなファイルを作成して、nginxを再起動します。

※reloadでも良いかもしれません

104のエラーが出た場合

client—①—nginx—②—php5-fpm—③—mysql

において、php5が処理時間がかかってしまって、nginx—>php5-fpmにクエリは投げられたけど、nginx< ---php5-fpmに返す際に、php5-fpmがコネクションを切っちゃったケース。

php5-fpmのプロセスが足りない場合
→ /etc/php5/fpm/pool.d/www.conf : pm.max_children = 5 や、pm.max_spare_servers = 3を増やす
※ pm = dynamicを確認

mysqlの接続数も増やす 5×3=15だったのを増やした分だけ接続できるように!

ここにイイカンジでまとまってました。


WordPressのSSL化(Nginx)

SSLの取得

無料で使えるSSLで、sslの証明書を取得しましょう!
やり方は、この方の記事が大変わかりやすいです。→ StartSSLの無料サーバー証明書を使う

概要

http:// でも https:// でもアクセスできるサイトにしようと思います。

  1. wp-config.phpの編集
  2. nginxの設定

設定する

  1. wp-config.phpの編集
    schemeによってhttpsにするか判断します。
  2. nginxの設定
    wordpressが動作しているnginxの設定に、以下の様にx_forwarded_protoに $schemeをセットします。

    設定を反映します。

無限リダイレクトループに陥ったら

GoogleでwordpressのSSL化で検索すると「設定」→「一般」→「WordPress アドレス (URL)」と「サイトアドレス (URL)」
のスキーマを http:// を https:// にするとありますが、これをやると、ページがループしてアクセスできなくなっちゃうことがあります。
こうなるともう、管理ページにすらログインできなくなっちゃうので、mysqlの以下のカラムの値を無理やり修正する必要が出てきます。

これでアクセスしたら治ります。。。

あと、プラグインも試しましたが、やはりループを起しましたとさ。ヽ(´ー`)ノ


Dockerで複数プロセスを扱う場合

Docker入門 Immutable Infrastructureを実現するを読んでおくと、理解が早いかもしれません。電子書籍だとタブレット一つで沢山持ち歩けるので便利ですよねd(^ー゜*)

概要

ココでは、ubuntu で、supervisorを用いて、nginx + php-fpm + postgersql を一つのdockerコンテナで、起動する方法を残します。ついでにsshでログインできるようにもしておきます。
Postgresqlは、imageを作成する際には、/var/share/pgsqlがVOLUMEマウントされていない状態なので、あえてここでDBの初期化等行っていません。HOST上の(永続化データ)を復元してから起動する想定になっています。
なので、事前にpostgresql9.3のDBをどちらかで作成してHOST側で /data/docker-share/webapp/pgsql 以下に配備しなければ、このコンテナを起動した際に、コンテナにsshして、supervisorctl status するとpostgresqlがFAILDとなっています。

この辺り、運用との絡みも出てくるので、ココでは触れません。
postgresqlのユーザIDは、apt-get install する際に100から順にインクリメントされた値となるようで、HOST側でchownしてもダメかも。また、Dockerfileではまだマウントされていないので、chownできない。
まだまだ、課題がのこっていそう。

環境

項目 内容
OS Ubuntu 14.04.3 LTS
middle ware nginx/1.4.6 (Ubuntu)
PHP 5.5.9-1ubuntu4.11
postgres (PostgreSQL) 9.3.9
ssh
docker version 1.5.0
ボリューム共有 HOST: /data/docker-share/webapp/
DOCKER: /var/share/

ファイル構成

 ./

  • Dockerfile
  • setfiles/
    • default
    • fastcgi.conf
    • supervisor/
      • cron.conf
      • nginx.conf
      • pgsql.conf
      • php.conf
      • ssh.conf

 

手順概要

  1. Dockerfileを作成する
  2. nginxの設定ファイルを作成する
  3. php-fpmの設定ファイルを作成する
  4. nginxのsupervisorのconfファイルを作成する
  5. cronのsupervisorのconfファイルを作成する
  6. php-fpmのsupervisorのconfファイルを作成する
  7. postgresqlのsupervisorのconfファイルを作成する
  8. sshのsupervisorのconfファイルを作成する
  9. docker buildする
  10. docker run して確認する

詳細手順

  1. Dockerfileを作成する
  2. nginxの設定ファイルを作成する
  3. php-fpmの設定ファイルを作成する
  4. nginxのsupervisorのconfファイルを作成する
  5. cronのsupervisorのconfファイルを作成する
  6. php-fpmのsupervisorのconfファイルを作成する
  7. postgresqlのsupervisorのconfファイルを作成する
  8. sshのsupervisorのconfファイルを作成する
  9. docker buildする
  10. htmlファイルが無ければ

    postgresql9.3のデータベースのバックアップを戻しておく

  11. docker run して確認する

雑記

「君は「これまで」と「これから」を心配しすぎなんです。
言うでしょう?
昨日とは過去のもの、
明日とは未知のもの、
今日の日はもうけもの。
それは天の贈り物。」
@カンフーパンダ ウーグウェイ導師

The clock is running. Make the most of today.
Time waits for no man.
Yesterday is history.
Tomorrow is a mystery.
Today is a gift.
That’s why it is called the present.
@Alice Morse Earle 「Sun Dials and Roses of Yesterday: Garden Delights.」


オープンリゾルバーチェッカー作り方 by Nginx + Mojolicious



オープンリゾルバ撲滅に向けて

イタズラしたい人はご遠慮ください。作り方を公開しておきます。

※ Nginx + Mojolicious の環境を前提としています。
apacheでも大丈夫です♪

■Mojoliciousの環境作成

■プログラム

プログラムを起動する

■index.html

■nginxの設定

反映する


オープンリゾルバーチェッカー by Nginx + Mojolicious

DNSのオープンリゾルバ問題が、最近世間を騒がせてますね!
そこで、自分の家は大丈夫かな?知らない間に、誰かに迷惑をかけてないかな?と、不安になっちゃう今日このごろ。そこで作っちゃいました!オープンリゾルバチェッカーです♪




そもそも、オープンリゾルバってなんだろう?
DNSというインターネットでは、知らずに使われている、でもとても大切でなくてはならない技術が、正しく設定されていない状態のことなのです。

インターネットの通信は、IPアドレスという数字の羅列を使ってパケット交換によって行われています。でも、いつもWebサイトを閲覧するときって、IPアドレス(http://192.168.0.1/ といった形式)で入力することはなかなか無いと思います。通常は、http://conoha.jp/ のように入力しますよね!でも、通信はIPアドレスで行われるんです。この conoha.jp からどうやってIPアドレスを知ることができるんでしょうか?

そう。DNSの機能が使われています!
コマンドプロンプトで、

と、入力してEnterを押すと、ネームサーバと、conoha.jpに対するIPアドレスが帰ってきます。
この時、パソコンから、ネームサーバにIPアドレスを聞きにいったわけです。この行為がリゾルブとなります。

でも、このネームサーバは世界中の名前を知っているわけではありません。別の誰かに、代理で質問をしてくれています。
このあたりの仕組みは、専門書に譲るとして(´・ω・`)、この代理で誰かに質問をしてくれるという機能を正しく設定していないと問題が発生します!

世界にはいたずらをしてやろうという人がいらして、この代理で答えてくれるDNSサーバを見つけて、そのサーバに代理で質問をたくさんさせることで、世界中のDNSサーバに負荷をかけて正しく動かなくしてしまいます。
そうすると、http://conoha.jp/ とブラウザに入力しても、IPアドレスに変換してくれず、Webサイトも閲覧できない。。。ということになってしまいます。

で、最近、ブロードバンドルーターが正しく設定されていないために、気づかずにこの代理サーバの動作をしてしまい、悪意のある人に、自分のルータをつかわれて、誰かを攻撃してしまっているといった事が多発しています。

ここで、チェックツールです。このサイトから、閲覧した人のIPアドレスに対して、チェックしてくれるというものです。
※公式サイトはこちら→ http://www.openresolver.jp/

ここで注意ですが、チェックするわけですから、このサイトからページを利用した人にDNSの問い合わせをしてしまうので、その点はご了承ください。ルータやPCを落としてしまったり、誰かに害を与えたりってのはありませんから、ご安心ください(´艸`)

http://dnschk.snowdrop.asia/

※連続で実行できないようにしてあります
画面しょぼいです。気が向いたら綺麗にします。。。