はい。
http://www.tomorinao.space/cgi-bin/hello_clang.cgi
どちゃくそはまった。
手順は、
ubuntuのapacheでCGIの許可の設定をして、apache再起動。
指定の場所(今回は/cgi-bin以下)にcgiを配置する。
ラズベリーパイ CGI言語 | 言語・開発 | ラズベリーパイ勉強室 | 株式会社アイネックス|Webシステム構築 | データ復旧サービス |ホームページ作成 | AS400ソリューション
1.CGIのリンクを有効にする
sudo ln -s /etc/apache2/mods-available/cgi.load /etc/apache2/mods-enabled/cgi.load
2.CGI を利用するため設定ファイルの変更
/etc/apache2/mods-available/mime.conf 219行目のコメントアウトをはずす
219 # AddHandler cgi-script .cgi
/etc/apache2/sites-available/000-default.conf 28行目のコメントアウトをはずす
28 # Include conf-available/serve-cgi-bin.conf
書いてたら、これで良いのではという気がしてきた。
Ubuntu上のApacheでCGIを実行できるようにするメモ | 青竹雑記帖(新)
Ubuntu ServerでCGIプログラムを動作させる - サーバーでもUbuntuを使っています
より。
$ ls /etc/apache2/mods-available/
でload可能なモジュール一覧があって、
$ ls /etc/apache2/mods-enabled/
で、使用可能になっているモジュールが確認できる。
$ sudo vim conf-enabled/serve-cgi-bin.conf
CGI動作に必要そうな
$ sudo a2enmod cgi
$ sudo a2enmod cgid
(cgidだけで良いかも。
Apache 2.2 からは mod_cgi ではなく mod_cgid を使う)
をして、apache再起動。
$ sudo systemctl restart apache2
今回は/var/www/cgi-bin/を配置した。
ので、それの設定をしていく。
10 <IfDefine ENABLE_USR_LIB_CGI_BIN>
#CGIディレクトリ:/var/www/cgi-bin/をURL:http://example.com/cgi-bin/に割り当てる11 ScriptAlias /cgi-bin/ /var/www/cgi-bin/
12 #ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
#CGIディレクトリコンテナ13 <Directory "/var/www/cgi-bin">
14 #<Directory "/usr/lib/cgi-bin">
15 AllowOverride None
16 Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
17 Require all granted
18 Allow from all
# cgi-scriptが拡張子.cgiを処理するように設定 # (拡張子.cgiをCGIのファイルとする設定)19 AddHandler cgi-script .cgi
20 </Directory>
21 </IfDefine>
219 AddHandler cgi-script .cgi
一応、/etc/apache2conf-available/serve-cgi-bin.confをincludeするようにしたけど、
上で/etc/apache2conf-enable/serve-cgi-bin.confを書き換えていて、同じ内容なので、これ必要ないですね。
UNIXユーザ奮戦記(ubuntu Apache2設定 CGI)の内容を、やっと理解した。
$ sudo vim /etc/apache2/sites-available/000-default.conf
28 Include conf-available/serve-cgi-bin.conf
いや違う?操作は再起動とa2ensite/a2sissiteコマンドで行って、
xxxx-available以下のファイルを書き換えた方が良さそうっぽい。
設定フォルダ 設定内容 /etc/apache2/site-available サイト設定を 000-default.confをもとに新規作成 /etc/apache2/conf-available 必要に応じてsecurity.confなどを修正 /etc/apache2/mods-available モジュール設定はここ /etc/apache2/site-enabled a2ensite/a2dissiteで設定が反映/削除 /etc/apache2/conf-enabled a2enconf/a2disconfで設定が反映/削除 /etc/apache2/mods-enabled a2enmod/a2dismodで設定が反映/削除 /etc/apache2/port.conf port変更の設定はここ? ``(Listen 8080など)
とりあえずはapacheの設定は完了。
そして、SFTPでCGIの実行ファイルを配置場所に送っているのに動かない。
サーバの設定を何回確認しても、あってそうだったので、
pythonで試したら動くああああああ。
http://www.tomorinao.space/cgi-bin/hello_python.cgi
ゆっくり考えてみたら、
Mac OS XからUbuntuにSFTPで実行ファイル送ってたので、
試しにソースを送って、Ubuntuサーバ上でコンパイルしたら動いた。
当たり前といえば当たり前。チャンチャン。
webフレームワーク流行らないわけだわーコンパイルめんどくさいわー
と思ってたら、C++ web Frameworkあるみたいで。
実行速度は速そうだし、Jenkinsとかでコンパイルを自動化したら使えるかなーという感じ。
参考:
ApacheのAddHandlerはセキュリティ上の懸念から使用すべきではない - Dマイナー志向
Ubuntu Linuxで、ApacheのモジュールとVirtualHostを追加する - CLOVER
Ubuntu版Apache2でmod_rewriteを有効にする
pythonの場合
文字列を表示する - Python CGIプログラミング入門
そーす。