ZAPAnet総合情報局 > ZAPAブログ2.0 > LAMP環境からLEMP環境になりました

LAMP環境からLEMP環境になりました

2020年06月16日 プログラミングTIPS
前記事「サーバーをさくらのVPSに移転しました!」で、さくらのVPSにサーバー移転したことを書きました。今まではずっと、LAMP環境でサーバー運用してきました。

LAMP環境とは一般的に、Linux、Apache、MySQL、PHP(Perl、Python)です。今回はサーバー移転にあたり、いろいろ変えてみることにしました。WebサーバのApacheから、速いと噂のNginxへと切り替えてみることにしました。Nginxが速いと言われ始めてからもう結構な期間が経っているので、そろそろ良いかなと思いました。一方で、まだ新しすぎるH2OのWebサーバーは選びませんでした。情報が少なすぎると困ってしまいますので。

また、LinuxはCentOSの最新バージョンCentOS8.1に、MySQLはMariDBに、PHPはPHP5系からPHP7系に切り替えることにしました。つまり、Linux(CentOS8)、Nginx、MariDB、PHP7になったというわけです。略して、LNMPではなく、LEMPです。

正直、この切り替えはかなり大変でした。

手元のWindowsに仮想マシンをインストールするところから始め、ここに仮想サーバーを構築して動作を確認していきました。LAMP環境からLEMP環境にPHPファイルなどを持っていっても、そのままでは動きません。初期設定も大事ですし、バージョンの違いからプログラムも修正していかないといけません。

CentOS8

CentOSは、最新版ではCentOS8系になりました。インストール時はCentOS8.1が最新でした。アップデートコマンドのyumがdnfになったり、serviceがsystemctlになったり、ファイアウォールが変わったりいろいろありました。でも基本はCentOSです。それほど大きくは変わりません。文字コードは、EUC-JPからUTF-8に変更しました。ここは仮想サーバーで何度でもやり直しができるので、初期設定の練習用として仮想サーバーをいじっていきました。後に、本番環境のさくらのVPSへと移りました。さくらのVPSだと、パケットフィルタが設定されていて、ポートは塞がれたりもしています。ポートを開放するときは、さくらのVPSのコントロールパネルから確認が必要です。SSHポートの番号を変更する際などは確認必須です。

nginx

大変だったのがnginx。これはキツかったです。できたと思ってもできていなかったり、特にlocationブロックの優先順位などが想定通りに動いてくれなくて大変でした。Webサーバーから動かすPHPもApacheではモジュールとして組み込んでいて簡単だったのが、nginxではCGIのPHP-FPMとして動かさないといけなかったり、設定も難しかったです。それでもなぜApacheからNginxに変えたかといえば、Apacheの同時接続数が増えるとやたら重くなることを回避したかったからです。Nginxなら同時接続数が増えても耐えられるという話を聞いていたので、試してみたい気持ちの方が強くてnginxを使うことにしました。もう情報も相当蓄積されているのかと思っていましたが、Apacheよりも情報が少なかったです。Apacheにあったディレクトリ内設置の.htaccessは使えず、nginx.confにまとめて記載することで動作速度も向上しています。「高速に動くならその方が良い」と最初は思いましたが、いざ.htaccessが使えないとなると、意外と不便であることにも気付きました。ApacheからNginxに移行するときは、ディレクトリ内においた.htaccessの記載漏れがないように注意する必要があります。初めからNginxなら問題はありません。

ちなみに正式名称は、NginxなのかnginxなのかNGINXなのかわかりません。

MariaDB

MySQLはMariaDBに。これは特に変わっていません。MariaDBは、MySQL派生として開発されているオープンソースの関係データベース管理システム(RDBMS)です。データはそのまま移行できます。ストレージエンジン(データベースエンジン)が昔のMyISAMよりもInnoDBの方がオススメになったというくらいで、使い勝手は全く変わりません。Linuxのコマンドも相変わらずmysqlです。PHPからの接続方法も変わりません。phpMyAdminも動きます。全く問題なしです。

PHP7

PHPは、PHP5系からPHP7系になりました。PHPはPHP4からPHP5への移行が大変だったり、PHP5.3からPHP5.4へのアップデートが大変だったり、今回PHP7への移行も下位互換性の面でかなり大変なことが予想されました。が、大丈夫でした。自分で作ったプログラムは何もエラーを起こしませんでした。一部pearなどの古いライブラリはインストールできなくなっていましたが、それ以外の面では問題ありません。PHP5.4にきちんと対応していれば、PHP7でもほぼ動くようです。一方で、自分で書いていないプログラムなどは、注意がたくさん出ました。「今後これは廃止されます」みたいなエラーです。全く動かないわけではありませんが、注意や警告がたくさん出ます。コンストラクタの変更、join、implode関数の変更などでたくさん出ます。直せるところは直して、直せないところは放置することにしました。現在PHP7.3系でサーバーを動かしていますが、PHP7.4やPHP7.5に移行することになったら注意しないといけないかもしれません。

Perl

掲示板のスクリプトなど、Perlで動かしていたCGIもありました。サーバーの刷新と共に動かなくなっていました。PHPと違って、Perlのプログラムは中身を見るのが面倒なので、そのまま捨てました。

今後は

ということで、今後はCentOS8、Nginx、MariaDB、PHP7でやっていきます。すでにこのブログもこれらの環境で動いています。