ローカル環境のApache2.2(x86) をApache2.4(x64)にアップした際にハマったこと
ローカル環境のApacheを勢いで2.2から2.4へアップしてみた時に、
ノープランでハマったポイントをご紹介しておきます。
Webツール開発などをしていますとローカル環境が必ず必要になります。
そんなローカル環境のApacheを32bit(x86)から64bit(x64)に、
アップグレードを勢いでやってみてしっかりとハマりました。
概要
ローカル環境のApache2.2(x86) をApache2.4(x64)にアップした際にハマったこと
Webツールの開発などをしていると、
開発自体が長期間にわたる事もあってローカル開発環境は必須になります。
また多くのレンタルサーバーは64bit環境が主流になっていますが、
ずっと32bit環境で開発をしてきたこともあって、
ビット演算などを使うと32bitと64bitでは挙動が異なっていたりして不便でした。
そこで、重い腰を上げて3年振りに開発環境のバージョンアップに着手しました。
ちなみに、この記事ではWindows8(64bit)の環境でご紹介します。
Apacheのバージョンアップと言っても、
インストーラも使わず、ダウンロードしたApacheフォルダを
「C:\」直下に配置し、既存の環境と共存させる形でインストールしました。
あまりやらないかもしれませんが、
Apacheは簡単な手順で複数インストールすることができます。
さらっと触れると以下で「httpd-2.4.33-x64-vc11-r2.zip」をダウンロードし、
解凍してできたApacheを「c:\Apache2464」へ配置しました。
※フォルダ名は何でも構いません。
既にApacheがインストーラでインストールされている環境でしたので、
「Open Apache Monitor」はインストールされており利用しています。
次に、新しく配置したApacheをWindowsサービスとして登録します。
今回の場合、以下をコマンドプロンプトから実行します。
まず、Apache配置フォルダに移動します。
cd C:\Apache2464\
次に「httpd.exe」を指定して「-k install -n “Apache2464“」とコマンドを実行します。
ここで指定する「”Apache2464“」部分はサービス名ですので、
分かりやすい名称を入力すれば問題ありませんが、半角英数字で指定します。
bin\httpd.exe -k install -n "Apache2464"
登録されたサービスを確認するには、
「コントロール パネル\すべてのコントロール パネル項目\管理ツール」と開き「サービス」を確認します。
指定した名称でサービスが登録されていれば、Apacheのインストール自体は完了です。
「Open Apache Monitor」にもサービスが表示されるようになっているはずです。
ちなみに誤ってサービスの登録をしてしまった場合は、
以下手順で削除できます。
そのまま実行してもまだ起動はしません。
httpd.confの修正が必要なのはいつもの事です。が、
今回は既に稼働しているApache2.2のhttpd.confが既にあるわけです。
それをそのまま使いたい!と楽したいのは人の業というものです。
httpd.confがそのままでは動かない。
そうなんですね。
かなり変更が入っているようで、以下のApache公式サイトに書かれています。
(公式)英語-Upgrading to 2.4 from 2.2 – Apache HTTP Server Version 2.4-
(Google翻訳)日本語-Upgrading to 2.4 from 2.2 – Apache HTTP Server Version 2.4-
誰でも影響を受けるであろう記述は以下の様な部分かと思います。
「Deny from all」の記述が「Require all denied」
In this example, there is no authentication and all requests are denied.
2.2 configuration:
12 Order deny,allowDeny from all
2.4 configuration:
1 Require all denied
In this example, there is no authentication and all requests are allowed.
「Allow from all」の記述が「Require all granted」
2.2 configuration:
12 Order allow,denyAllow from all
2.4 configuration:
1 Require all granted
と、書き換わっています。
という訳で、旧記述はすべて書き直す必要があります。
私の場合で言えば、複数のディレクトリ指定を行って、
複数サイトのテスト環境をApacheで利用していましたので以下のように書き換わります。
Apache2.2では・・・
1 2 3 4 5 |
Directory "C:/Apache/htdocs"> AllowOverride None Order allow,deny Allow from all </Directory> |
Apache2.4では・・・
1 2 3 4 5 |
<Directory "${SRVROOT}/htdocs"> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> |
もうこの辺が分かった辺りでhttpd.confのコピー利用は止めました。
新しく生成されたApache2.4のhttpd.confに、
設定をコピペして作っていく感じの方が早いと。
Apache2.2以前のhttpd.confには無かった記述としては、
以下の様な変数記述も使われるようになっています。
まぁ、この程度であれば、使っても使わなくてもいい感じなので、
気にするほどでもないでしょうけども。
1 2 |
Define SRVROOT "c:\Apache2464" ServerRoot "${SRVROOT}" |
.htaccessもそのままでは使えない。
こちらもほぼ同じなんですが、
WordPressの「wp-login.php」へのアクセスを制限したいような場合には、
IP縛りなどを使う場合もあるかもしれません。
今回はローカルなので別に気にするようなものでもないのですけども。
1 2 3 |
<Files "wp-login.php"> Require all granted </Files> |
や
1 2 3 |
<Files "wp-login.php"> Require ip 127.0.0.1 </Files> |
気軽に手を出してはイケないと改めて思いつつも、
結果的には移植、移植でなんとかなりましたけど。
これが分かっていれば、
サーバー環境の設定も焦る必要はなくなるので結果良かったとは思います。
しかし、XSERVERとか、
とっくにApache2.4.6なのに今までハマらなかったんだ?不思議だ。。。
尚、本記事は以下のコンテンツの一部になります。
当サイト内のコンテンツおよび画像を含むすべてにおいて、管理人アルゴリズンが著作権を保持しております。
当サイトでご紹介しております写真等につきましては著作権の放棄はしませんが、
ライセンスフリーでご利用いただいて構いません。
コンテンツを有益であると感じていただけましたら非常に光栄です。
ありがとうございます。
サイト内コンテンツを引用される際には、出典元として当サイト(個別記事)へのリンクをお願いいたします。
申し訳ございませんが、無断転載、複製をお断りさせて頂いております。
公開日: