Apache(XAMPP)でWebRootとApiRootを分けたい。
アレ、サービスで動かないの?
もともと、NginxとphpのCliで開発してたんだけど、Windowsではこの人達、サービス登録出来ないことに気づいてあわてたログ。
まぁ、こんな感じで、疑似サービスとして登録できないことはなさそうなんだけど、それはそれでイロイロ お客さんに納めるのも怖い気がしたので、解決策を模索してた。
ちな、もともとのディレクトリ構成はこんな感じ
C:\wwwroot
⇒NigixのDocumentRoot
C:\apiroot
⇒phpで作ったApiRoot
ここにphp動作設定ファイルとかがあって、さらにapiってフォルダに実際はアクセスする
とりまXAMPP
ということで、困った時のXAMPPでどこまで動かせるかやってみた。
DocumentRootの変更
DocumentRoot "C:/wwwroot"
<Directory "C:/wwwroot">
phpファイルのコピー
c:/wwwrootへ、apirootの中身をガリッとコピー
とりま、このままでも動いた。
DirectoryフュージョンしたせいでGit管理が無理無理
動いたんだけど、致命的なこととして、wwwrootとapirootがフュージョンしちゃったので、Gitも融合しちゃうんですよ。
最初、ignoreで逃げようかとも思ったけど、なんかのはずみでnginx環境に戻った場合とかも考えて、それもしたくない。
2,3日ぼーっと考えてたんですが、Apacheの設定でいけんじゃね?って思いついた。
Aliasで設定
本業の方なら、ぱぱぱぱぱぱーっと思いついて片付けれる問題だと思うけど、こちとら、エセSE(ESESEって回文だなどうでもいいけど)なので、そこまで詳しくない。
なので、
「apache URL ディレクトリ 変える」とかITリテラシー低めのキーワードでググり続けて、なんとかこのサイトにたどり着く
おー、そうだそうだAliasとかあったあったということで、alias_moduleのところに追記
<IfModule alias_module>
Alias /api "C:/apiroot/api"
<Directory "C:/apiroot/api">
Require all granted
</Directory>
ScriptAlias /cgi-bin/ "C:/xampp/cgi-bin/"
</IfModule>
ScriptAliasはデフォルトで設定してあるやつ。上のapirootが今回追加したやつ。
最初はWindowsだから、ワンちゃん、下のRequire all granted はいらないかなぁとも思ったけど、
「Forbidden You don't have permission to access this resource.」
って「顔を洗って出直しな」的なメッセージを頂いたのでちゃんと付けたら、普通に動きました。