SEO対策とセキュリティで企業をバックアップします。

インターネット上のアクセスボリュームUPをお約束します。

備忘録:古いUbuntu14環境でhttp2対応 caddy & spawn-cgi で作るPHP環境 Roundcubeの設置

備忘録:古いUbuntu14環境でhttp2対応 caddy & spawn-cgi で作るPHP環境 Roundcubeの設置


指定された環境(Ubuntuだけど)がバージョンが古くphp7.xとかApache2.4.17以降がパッケージインストールできない。以前はダウンロードできたのに今は何故かレポジトリ追加してもリストされない。ということでphpソースコンパイル&spawn-fcgiで対応することにした。最終的にWEBメールのRoundcubeの設置リクエストがあったのでセットアップしましたがすんなり簡単に終わりました。めでたし!

php7.1をダウンロード&コンパイル。

最新のphpソースだとライブラリー関連で時々エラーや警告で痛い目に合うので、無難にphp7.1だといけるかな!?ってことでphp7.1をダウンロードしてコンパイルすることにしました。もっと上のバージョンでも成功するかもしれないので是非ご覧なっている方はチャレンジしてみてください。

FAST CGI環境を構築しPHPが実行できるように整える。

Caddyの設定を行う

caddyのインストールは省きます。過去の記事から参照ください。caddy設定のところのみ掲載します。またroundcubeの設定も割愛します。あくまでもroundcubteの動作確認まで。phpコンテンツの作りによってrewrite設定が必要なケースが様々あるので今後ご紹介して行こうと思います。

サーバ起動

FASTCGIでPHP処理を待機させ、caddyを起動します。

タグ: , , , , ,

無料でphpマルウェア検知の凄いソフト


今回はタイトルにある通りphpマルウェアを検出してくれるソフトを紹介します。フリー版ですがなかなか強力ですよ! 巷に出ているWORDPRESSのマルウェア検出プラグインは正直いって使い物になりません。 下手をすると、「セキュリティソフト」と謳って実はスパイウェア、マルウェアが仕込まれているケースがかなりあるため用心したほうが良いと思います。 ロシア製のソフトですが、AIエンジンを使って推測しながら検出を行います。私は3年前から時々使っていますが大変検知率が高い優れたソフトと思います。検出さえしてくれれば自力で怪しいコードを容易く見つけられる方も多いと思いますのでぜひ試してみてください。WORDPRESSの感染したコンテンツの救出に役立ちます。

検出したファイルは、最終的にHTMLファイルでレポートしてくれます。

ダウンロード先のページ

https://revisium.com/aibo/ 下記のピンクで囲ったボタンを押すとダウンロードが始まります。ZIPファイルで提供されます。

適当なフォルダーへ保存したら下記のように作業を進めてください。

インストールとスキャン

フリー版では650.00 Kb以上のファイルは検出がパススルーされます。警告として表示されるのでそれは検知対象から外れたと思ってください。

検索対象:
php,js,json,htaccess,html,htm,tpl,inc,css,txt,sql,ico,,susp,suspected,zip,tar,cgi,pl,o,so,py,sh,
phtml,php3,php4,php5,php6,php7,pht,shtml

タグ: , , , , ,

CentOS6/CentOS7 Apache2.4.17以降へアップグレードかつHTTP2対応 SSL&phpも考慮


CentOSはバージョン6,7ともレポジトリーISUを追加してhttp2対応が必要。CentOS7はApache2.4ではあるがマイナーバージョンがhttp2に対応していない。
尚更、CentOS6は対応できていない。Ubuntu/Debian系のLinuxなら比較的簡単に入れられるのでそこがCentOSの場合面倒なところ。ちなみに秋頃にリリースされたCentOS8はデフォルトでApache+php-fpmの組み合わせでhttp2仕様になっています。特にhttp2に対応するための特別な設定は不要です。

まず最初に現在使っているhttpd2.2.xのWEBサーバとphpを外す必要があるだろう。標準のものを使っている場合はremiの進んだバージョンのphpを使っている
場合もあるだろうが概ね下記のような感じで依存関係もチェックしながら外してゆく。その後にISUのレポジトリーを追加してhttp2対応のhttpd2.4を導入する。
このバージョンではmod_phpが古いhttpdでなければ動かないようなのでphpはfastCGIを使った方法に変更する。

現行環境の削除、レポジトリー追加とapache2.4(http2対応バージョン)+fastCGI導入

※httpd2対応のモジュールロード設定は/etc/httpd/conf.modules.d/00-base.confに追加されています。

プロセスをevent型に切り替える

httpd2対応にはhttpdプロセスのprefork型の動作では駄目です。event型に切り替える必要があります。

fastCGIの設定修正

mod_phpが使えないのでfastCGI経由でphpを動作させます。それにあたり基本設定の動作ユーザをapacheに切り替えます。

仮想サーバ設定にhttp2動作のためのデイレクティブ追加

eventモジュールのパラメータ設定

Apache2.4ではMaxClientsがMaxRequestWorkersに変わっています。

/etc/httpd/conf.dの配下にmpm_event.confのような名前で配置します

fastcgiのプロキシー設定

fastcgiとapacheをつなぐ設定です。これがないとphpが動きません。

proxyfcgi.confのような名前で/etc/httpd/conf.dに配置してください

サーバの起動

http2になっているかチェックする。

http2に対応していることがブラウザの検証ツールで確認できます。 またレスポンスヘッダーを見て確認する事もできます。

h2プロトコルの結果検証

PHPが使えなかったりhttp/1.1のままになっている方は何が原因?

それはopensslが古いままだからです。openssl1.0.2以降を使いましょう。あるいはapacheとphp-fpmの連携が噛み合っていない場合もありえます。phpのバージョンとphp-fpmのバージョンがマッチしてなかったりすることもあるので確認してみましょう。Apacheではfastcgiの連携にproxyを経由します。その設定が適切に行えてなければ連携できていません。なければ自分でproxyfcgi.confを仮想サーバディレクトリで作成して連携させてください。

タグ: , , , , , ,

PHP Laravel framework入門(3) – テンプレートエンジンを理解する。


Laravelのテンプレートエンジンは標準でBladeというエンジンを使用しています。このテンプレートエンジンは比較的よくあるテンプレートエンジンの記法に近いのですんなり覚える事ができると思います。bladeもまたよくあるテンプレートエンジン同様にマスターレイアウトがあって、その上にパーツ&ブロック単位のテンプレートがある仕組みになっています。ヘッダとフッタはよくある共通部分ですから簡単振り分けて構築できそうです。

◯ resources/views/layout/master.blade.php

ちょっと見た感じでは他のテンプレートよりも見たことがないインクルードする幾つもの記法があることがわかりますね。マスターレイアウトはアウトラインを作るものです。

  • @yield  @yieldは継承ができませんが変数のデフォルト値が使えます。
  • @section  @sectionは最も使い勝手が良い変数等を継承できるのが特徴です。尚、記法に親テンプレと小テンプレでブロックの終わり方が異なるので注意しましょう。親の方では終了が@showで終わります。小テンプレは@stopや@endsectionを使用します。
  • @include @includeは最もシンプルなものでベーシックな変数の渡しのみ可能でその他はできません。

それでは次にHTMLのBODY部分を形成するテンプレートを見てみましょう。

◯ resources/views/page.blade.php

タグ: , , ,

PHP Laravel framework入門(2) – 簡単なプログラムを作る


本章では最初に簡単なhello worldを表示するプログラムを作成し基本的なLaravelの使い方を学んできます。まず最初にLaravelの環境構築で欠かせないコマンドartisanコマンドの機能のコレクションを確認してみましょう。

artisanコマンド

artisanがサポートするコマンド機能の一覧を確認してみましょう。artisanコマンドは機能が豊富で特に便利なのは他のフレームワークでも出てくるscaffoldな機能です。つまりコントローラやモデル、ビューをある程度雛形で用意してくれる機能を持っています。ゼロから作業するとMVCの関係性をもたせてプログラムを編んでゆく必要があり骨の折れる仕事ですがこの機能を使うと自動生成で雛形を生成するため作業が楽になります。また必要とするデータベースの定義をするとモデルやDB操作を簡単にするORMの機能、DB&テーブルを自動生成してくれます。

helloを出力するコントローラを作成する

コントローラはサイトの基本プログラムロジックを処理するバックグランドの要のエースとも言えるプログラムです。どのプログラムも考え始めるスタートをルーティングとコントローラを合わせるところから始めると理解しやすくなります。

この処理を実施したことでコントローラの雛形が作られています。 プロジェクト直下のappフォルダーの配下には既にhello用コントローラのboilerplate(雛形)が存在します。 正確には「app/Http/Controllers/Hello.php」と言う設置パスでファイルが生成されているので確認してみましょう。

無事にhelloのクラスができましたね。雛形なので中身の処理はありませんが器はできたことが確認できました。次にルーティングを考えます。結局大本の呼び出しはルータの記述から行われそこにしてしているコントローラが呼び出されます。次の処理はいきなりコントローラを呼び出すのではなくルーターから直接ブラウザへ出力を渡します。表示確認を取ってみましょう。

◯ routes/web.php

◯ サーバの起動

ブラウザから http://xxx.xxx.xxx.xxx:7500/hello と入力しアクセスしてみましょう。

問題なければブラウザ画面に「Hello World!」と表示されたはずです。今度は直接ブラウザへ返却するのではなく、先程作ったコントローラを経由して返却してみましょう。先程の記述はコメントアウトにします。代わりにhelloコントローラのクラス名とクラスで定義されている処理をさせるターゲット関数を記述します。「クラス名@関数名」のような表現で記述を行います。尚、反転箇所は記述の追加の部分です。

◯ routes/web.php

◯ app/Http/cintrollers/Hello.php

再度サーバを起動してhttp://xxx.xxx.xxx.xxx:7500/hello へアクセスすると「hello world from controller : )」が表示されましたか?表示されたら成功です。

コントローラからViewを通じて表示させる。

◯ app/Http/Controllers/hello.php

◯ routes/web.php

◯ resources/views/hello.blade.php

以上の作業が終わったらブラウザから「http://xxx.xxx.xxx.xxx:7500/hello/[あなたの名前]」でアクセスして見てください。画面上に大きな文字であなたの名前で表示されるはずです。

タグ: , , ,

1 2