« NAS(AS-202TE)でTracとGit連携 | トップページ | Firefox Quantum (Firefox 57) にバージョンアップしたらレガシー・アドオンが動かなくなった »

2017.11.15

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にアクセスしてみましょう。
# 便利なスクリプトをありがとうございます。
2017111501
おっと、エラーになってしまいました。実は、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にアクセスしてみましょう。
2017111502
cgiファイルを実行することができました。

|

« NAS(AS-202TE)でTracとGit連携 | トップページ | Firefox Quantum (Firefox 57) にバージョンアップしたらレガシー・アドオンが動かなくなった »

NAS」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1024423/72194643

この記事へのトラックバック一覧です: NAS(AS-202TE)の個人ディレクトリでCGIを動かしてみた:

« NAS(AS-202TE)でTracとGit連携 | トップページ | Firefox Quantum (Firefox 57) にバージョンアップしたらレガシー・アドオンが動かなくなった »