ユーザ毎のwebサーバを立ち上げるuserdirモジュールの使い方を記載します。
Table of Contents
1 apache2のインストール
apache2をインストールします。
> sudo zypper -n in apache2 > sudo systemctl enable apache2 > sudo systemctl start apache2
2 mod_userdirの有効化
OpenSUSE 13はデフォルトでmod_userdirが有効です。有効でない場合は以下を実行してください。
$ sudo a2enmod userdir $ sudo systemctl restart apache2
3 ポートの開放
apache2のファイルを利用してポートを開放します。
> firewall_open_service() { for t in FW_CONFIGURATIONS_EXT FW_CONFIGURATIONS_DMZ FW_CONFIGURATIONS_INT; do sudo sed -e "s/^${t}=\"\(.*\)\"/${t}=\"\1 $1\"/g" \ -i /etc/sysconfig/SuSEfirewall2 done sudo systemctl restart SuSEfirewall2 } > firewall_open_service apache2
4 public_htmlの作成
OpenSUSE 13ではデフォルトで~/public_htmlが存在します。ない場合は作成します。
$ mkdir ~/public_html
このまま以下のURLにアクセスすると以下の様な画面が表示されます。
ファイルをダウンロードさせるだけならばこのままpublic_htmlにファイルを置くだけでも良いでしょう。
http://<server>/~<username>
URLにアクセスするとDirectoryIndexにindex.htmlやindex.cgiがデフォルトで呼ばれます。
index.htmlを作成して簡易なページを表示させることもできます。
5 Digest認証の導入
ページアクセスにDigest認証を使用するようにします。
auth_digestモジュールを有効にします。
$ sudo a2enmod auth_digest $ sudo systemctl restart apache2
以下の様なpublic_html/.htaccessを作成します。"hiroom2"はレルムと呼ばれるものです。
AuthType Digest AuthName "hiroom2" AuthUserFile /home/hiroom2/.htdigest require valid-user
レルム"hiroom2"へアクセスするユーザhiroom2を追加します。
$ htdigest2 -c ~/.htdigest "hiroom2" hiroom2 Adding password for hiroom2 in realm hiroom2. New password: Re-type new password:
ページにアクセスするとユーザ名とパスワードを求められます。
6 CGIの導入
userdirはデフォルトでExecCGIを許可していません。CGI導入するならDocker等でコンテナを作成した方が良いのかもしれません。
userdir.confのOptionsにExecCGIを追加します。
> sudo sed -e 's/\( *\)Options \(.*\)/\1Options ExecCGI \2/g' \ -i /etc/apache2/mod_userdir.conf
cgiモジュールを有効にします。
$ sudo a2enmod cgi $ sudo systemctl restart apache2
以下の様なpublic_html/.htaccessを作成します。
AddHandler cgi-script .cgi DirectoryIndex index.cgi
以下のindex.cgiを追加します(chmod a+xで実行権限を与えて下さい)。
#!/bin/sh echo "Content-type: text/html" echo "" echo "<pre>" free -m echo "</pre>" echo "<pre>" w echo "</pre>"
URLにアクセスするとindex.cgiによるHTMLが出力されました。