NAS(AS-202TE)の個人ディレクトリでCGIを動かしてみた
AS-202TEにTracをインストールするで、NAS上のサービス構築を試したところ、その他、手軽にWebサービス構築を試す環境を構築してみる気になりました。
ASUSTORのNASには、Webサイトを公開する機能があります。この機能自体はさして珍しくないものです。
デフォルトの設定では、共有フォルダであるWebフォルダにHTMLファイルを配置すると、http://[NAS名]/からWebサイトにアクセス可能です。さらに、http://[NAS名]/cgi-bin/のCGIファイルも有効化されています。
PCにマウントする個人フォルダについても、Serviceアプリの説明に書いてありますが、個人フォルダにwwwフォルダを作成し、その配下にHTMLファイルを置くと、http://[NAS名]/~[ユーザ名]/で個人Webサイトにアクセスできます。
NASでのWebサイト構築を可能とした環境を用意しておくと、マウントされているNASでの作業がローカルディスクでの作業と同様にできますので、設定や開発がローカルでのファイル操作と同様の環境で作業できますから、結構便利です。
ただし、個人フォルダのCGIはデフォルトでは有効化されていないので、設定する必要があります。その過程をメモ。
apacheのモジュールuserdirの設定ファイルを編集して個人フォルダの設定を行います。
このため、/usr/builtin/etc/apache2/mods-available/userdir.confを/root/conf/apache2/(どこのディレクトリかは任意ですが…一例として)にuserdir_custom.confとしてコピーします。
次に、userdir_custom.confに対して、以下のとおり、追記します。24-28行のハイライトされた部分が、今回追記した箇所です。
LoadModule userdir_module /usr/builtin/lib/apache2/modules/mod_userdir.so
#
<IfModule mod_userdir.c>
# UserDir: The name of the directory that is appended onto a user's home
# directory if a ~user request is received. Note that you must also set
# the default access control for these directories, as in the example below.
#
UserDir www
UserDir disabled root
#
# Control access to UserDir directories. The following is an example
# for a site where these directories are restricted to read-only.
#
<Directory /home/*/www>
AllowOverride FileInfo AuthConfig Limit Indexes
Options MultiViews SymLinksIfOwnerMatch IncludesNoExec
<Limit GET POST OPTIONS>
Require all granted
</Limit>
<LimitExcept GET POST OPTIONS>
Require all denied
</LimitExcept>
</Directory>
<Directory /home/*/www/cgi-bin>
Options ExecCGI
# SetHandler cgi-script
AddHandler cgi-script .cgi .pl .py .rb
</Directory>
</IfModule>
次に、/usr/builtin/etc/apache2/mods-enabledのuserdir.confのシンボリックリンク先を先程の/root/conf/apache2/userdir_custom.confにして、apache2をrestartします。
# cd /usr/builtin/etc/apache2/mods-enabled
# rm userdir.conf
# ln -s /root/conf/apache2/userdir_custom.conf ./userdir.conf
# /usr/builtin/etc/init.d/S54apache2 restart
Macにマウントされた個人フォルダのwww/cgi-binに、例えば、すぐ使えるWebサーバ環境チェッカーのCGIファイル(test.cgi)をコピーして、ブラウザからこのcgiにアクセスしてみましょう。
# 便利なスクリプトをありがとうございます。

おっと、エラーになってしまいました。実は、suexecが有効になっているため、test.cgiのパーミションが755のように、他ユーザから書き込み可能になっていると、cgiファイルが実行できないようになっています。
# suexec -V
-D AP_DOC_ROOT="/volume1/home"
-D AP_GID_MIN=100
-D AP_HTTPD_USER="admin"
-D AP_LOG_EXEC="/usr/builtin/var/log/apache2/suexec_log"
-D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
-D AP_UID_MIN=100
-D AP_USERDIR_SUFFIX="www"
cgiファイルのパーミションを700にすれば良いのですが、手っ取り早いのはftpコマンドを使うことでしょう。ASUSTOR NASへはrootまたはadminユーザのみsshでログイン可能ですが、一般ユーザにrootでログインさせてchmodコマンドを実行させるわけにいきませんからね。ftpコマンドなら自分のユーザー権限で自分のファイルのアクセス権を操作できます。ただし、予めNASのftpサービスを有効にしておく必要があります。ftpコマンドの使い方はここには書きませんが、test.cgiのパーミションを700に設定して、再びブラウザからtest.cgiにアクセスしてみましょう。

cgiファイルを実行することができました。
| 固定リンク
「NAS」カテゴリの記事
- NASにiTunesライブラリを置く時に注意する事(その2)(2019.01.13)
- NAS(AS-202TE)の個人ディレクトリでCGIを動かしてみた(2017.11.15)
- NAS(AS-202TE)でTracとGit連携(2017.10.29)
- AS-202TEにTracをインストールする(2017.09.23)
- AS-202TEにmod_wsgiをインストールする(2017.09.19)
コメント