FreeNAS で Apache を使う(FreeNAS をWebサーバーにする)

  • 投稿日:
  • カテゴリ:

FreeNAS の記事とかを見ていると、どうしてか
「Webサーバー機能がないから使えない(OS)」
というのを見かけます。

NAS用のOSで、Webサーバー機能はNASの管理画面に使っているので、
Webサーバー用途として設定するのにハードルが高いのがまず1つ、
そして、Webサーバーで何をしようと思っているのか考えると、
このような特定用途になっているOSを使わずに、それこそ、
FreeBSDとか他のLinux OSとか使えばいいんじゃないかと思うのです。
(Webサーバーとして静的なHTMLを表示したいだけならまだしも、
 アレを追加したりコレを追加したり、とするなら FreeNAS のインターフェースが活きないので、結局 FreeNAS である必要が...)

どうしても、というなら、
jail
を使って、1個の仮想マシン内で Apache を起動するくらいかな、
と思ったところ、そういう記事を見かけたので試してみました。
(FreeNASのRaidZのストレージの堅牢性が活きる、というところだろうか)

Freenas 9.3 jail with apache and php. « Tim's sysad corner

Jailの用意

まず、jailを1個、専用に用意します。

Jails - Add Jail

Jail Name: apache_1 とか適当に

特に指示が書いていないので、 Basic Mode でそのまま作成
(特定のIPアドレスにしたい場合は、 Advanced Mode にすると、IPアドレスを指定したりできる。Webサーバーにしたいのならそれもアリかと)

しばらくダウンロードが続いて、
Jail ができます。

できた apache_1 jail をクリックして、下の

Shell をクリック、以下コマンドラインでキーボードからコマンドを入力して実行。

# pkg update
# pkg upgrade

どちらもそれなりに時間がかかります。

# pkg upgrade

元のドキュメントでは2回 upgrade するように書いてありますが、
メッセージを見る限り、2回目は何もしていない様子。

# pkg install nano bash wget

# portsnap fetch
# portsnap extract
# portsnap fetch update

apacheのインストール

# cd /usr/ports/www/apache24
# make install clean

デフォルトでガンガン [Enter] で。

/usr/local/etc/apache24/httpd.conf

に設定ファイルがあるので、

Listen 80
ServerName 192.168.17.13:80

ぐらいは設定するとのことですが、
リッスンポートは80がデフォルトだったし、
サーバー名関係ないならもともとコメントアウトされているので何も触らない。
(この辺の設定は Apache について説明しているサイトを参考すればいいと思う)

自動起動の設定

# echo 'apache24_enable="YES"' >> /etc/rc.conf

PHPのインストール

# cd /usr/ports/lang/php56/
# make install clean
# cd ../php56-extensions
# make install clean

# cd /usr/local/etc
# cp php.ini-production php.ini

# cd /usr/ports/www/mod_php56
# make install clean

Apache に phpモジュールの組み込み。

/usr/local/etc/apache24/httpd.conf

を編集する。

<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>

index.php を追記(これはしなくても...)

最下行の下に追加。

<FilesMatch ".php$">
SetHandler application/x-httpd-php
</FilesMatch>
<FilesMatch ".phps$">
SetHandler application/x-httpd-php-source
</FilesMatch>

以上が終わったら
Apache 起動。

# service apache24 start

これで一応 Apache が起動するはず。

jailのIPアドレスは初期設定では適当に決められているハズなので、
jailの IPv4 Address の欄を確認してブラウザでアクセスしてみる。

特定のIPアドレスが設定したければ、
Edit jail からIPアドレスを指定することも可能。

ドキュメントルートの変更

ドキュメントルートは

DocumentRoot "/usr/local/www/apache24/data"

とのことなので、

シェルを抜けて
apache_1 jail をハイライトして、
Add Storage

Source: に親のFreeNASのどこかのフォルダを指定して
Destination: /usr/local/www/apache24/data

と設定すると、
親のFreeNASのCIFSなどで共有されているフォルダにサイトを作成すれば、
それが、jailのIPアドレスでWebサーバーとして公開されている形になる。

とりあえずここまでかな。

ただ、ここまで設定するだけで、メモリ8GBの MicroServer の FreeNAS 上で1時間くらいかかっているので、そうまでして設定する意味あるのかな...と思わなくもない...。
手順的にも FreeNAS のGUI全然関係ないし。

そして上記の手順で具体的に何が起きているかはあんまり気にしていない。
きっと、Jailをアップグレードして、インストール用のパッケージをダウンロードして、Jail上でApacheとPHPを make install しているんだろうなあ、程度。

php も phpinfo() をおいて動作しているのを見ただけ。

なんでかっていうとわざわざNAS専用OSで......(冒頭に戻る)