cgi-binで走るスクリプトをpythonのみに限定する
上記のサイトでは
/etc/apache2/conf-available/cgi-enabled.conf
にその設定を書き込むように書いてあるが、自分の環境では動かなかった・・・
代替手段としては
sudo emacs /etc/apache2/mods-available/cgid.conf で下に、 AddHandler cgi-script .py と追記する
これで行けるなら?
ということで、別の設定ファイルに追記してみた
sudo emacs /etc/apache2/conf-available/serve-cgi-bin.conf
<IfDefine ENABLE_USR_LIB_CGI_BIN>
ScriptAlias /cgi-bin/ /var/www/html/hogehoge/cgi-bin/
<Directory "/var/www/html/hogehoge/cgi-bin/">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
AddHandler cgi-script .py
Require all granted
</Directory>
</IfDefine>という行を下の方に追記した
hogehogeは自分の環境に合わせて変更してください
公開されるページは、 /var/www/html/hogehoge に下に書かれているhtmlなどなど
SymLinksIfOwnerMatch
は、そのディレクトリに置いてあるシンボリックリンクも遡って公開するか? という設定
ExecCGI
は、cgi-binを使うために必要だと思う
AddHandler cgi-script .py
がpythonの拡張子を持ったスクリプトのみ走るようにする制限
再起動
- `systemctl reload apache2`
ありがちだった罠
今回はまだハマっていないけど、以前ありがちだった罠をメモしておきます
- 走らせたいスクリプトの実行権限は755にしておく
- `chmod 755 hoge.py`
- 公開するディレクトリの所有者は特にいじらなくても良い
- ただし cgi-bin の実行結果をどこかのディレクトリに格納したい場合は、そのディレクトリの所有者は、www-data にしておく必要がある
- `sudo chown -R www-data:www-data ./`
- 公開するディレクトリがシンボリックリンクの場合は上記の SymLinksIfOwnerMatch を忘れないようにする
- スクリプトをcgi-bin経由で実行すると、コードがそのまま表示される
- これは、そのスクリプトが実行できるスクリプトだと見なされていない時に起こるエラー
- 上記の AddHandler cgi-script .py あたりがうまくいってなさそう
ランキング参加中です
↓クリックしていただけると嬉しいです〜