< linkdetail01.htm > < indextable01.htm > < index.html >

tack Developers Group Homepage!

<<< apache2cgi_01_001.html >>>

ラズパイでApache2とCGI

Raspberry Pi OSで、apache2をインストール&設定。おのおの、完結しています。まだひとつも試していません。どれができてどれができないか不明です。複数の方法がある可能性もあります。
Raspberry Pi OSなどArm64 LinuxではDropboxやOneDriveが対応していません。僕としてはOneDriveがいいのですが…。


(01)WEBサーバー
ラズベリーパイでWEBサーバーを構築しよう!<Apache編>
$ sudo apt update
$ sudo apt upgrade
$ sudo apt install apache2
$ ps agx
apache2の起動が確認できたら、Webブラウザで「localhost」をアドレスバーに打ち込みエンターを押してアクセス。「Apache2 Debian Default Page」が表示されれば、Webサーバーが起動しHTMLファイルで書かれたファイルが表示されています。

ドキュメントルートを変更したい場合(CGIではなくWWW/HTMLの表示)
ここで、現在のデフォルトドキュメントルート「/var/www/html」を変更したい場合、 /etc/apache2以下の「sites-available」ディレクトリ内にある「000-default.conf」ファイルを編集します。
※このような設定ファイルを変更する場合、システム自体に様々な影響を及ぼすため、コピーしてから作業するようにしましょう。

$ sudo cp 000-default.conf 000-default_backup.conf
$ sudo nano 000-default.conf

[ ソース・リンク ]
 ラズベリーパイでWEBサーバーを構築しよう!<Apache編> | FABSHOP.JP -デジタルでものづくり! ファブショップ !
https://www.fabshop.jp/webserver-apache/
>


(02)
Raspberry PiにWEBサーバーを構築しCGIをPerlで動くようにする
$ sudo apt-get install apache2
$ sudo a2enmod cgid
$ sudo systemctl restart apache2
・"/etc/apache2/mods-available/mime.conf"ファイルの以下をコメントアウトを外し、".pl"を追加します。
AddHandler cgi-script .cgi .pl
$ sudo systemctl restart apache2
・cgiファイルを置くディレクトリの確認
"/etc/apache2/conf-enabled/serve-cgi-bin.conf"
上、ラズパイの"/usr/lib/cgi-bin"にcgiファイルを置き、ブラウザからは"/cgi-bin/" もしくは "/usr/lib/cgi-bin/" からアクセスするとcgiが実行されることが分かります。
・cgiファイルを置くディレクトリでもhtmlファイルを表示できるように設定する

[ ソース・リンク ]
Raspberry PiにWEBサーバーを構築しCGIをPerlで動くようにする - PokuG stdio.h
https://pokug.net/entry/2022/06/19/121918
CGI実行時にエラー"Can't locate CGI.pm in @INC..."が出ることがあります。その時は〜


(03)
【Python】Raspberry PiにApache2をインストールしてHTMLを出力
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install apache2
$ sudo apt-get install apache2-dev

# 起動
$ sudo service apache2 start
# 停止
$ sudo service apache2 stop
# 再起動
$ sudo service apache2 restart

・cgi.loadのシンボリックリンクを貼る
$ sudo ln -s /etc/apache2/mods-available/cgi.load /etc/apache2/mods-enabled/cgi.load
・拡張子.py でCGIが実行できるようにする
$ sudo vi /etc/apache2/mods-available/mime.conf
# AddHandler cgi-script .cgi
  ↓ コメントを外し、「.py」を追記
  AddHandler cgi-script .cgi .py
・CGIを動かすディレクトリを定義
$ sudo vi /etc/apache2/conf-available/serve-cgi-bin.conf
[変更前]
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">

[変更後]
ScriptAlias /cgi-bin/ /home/pi/public_html/cgi-bin
<Directory "/home/pi/public_html/cgi-bin">

$ sudo service apache2 restart
・PythonでCGIを書く
$ vi /home/pi/public_htm/cgi-bin/sample.py
・ブラウザに「http://localhost/~pi/cgi-bin/sample.py」と入力し実行

[ ソース・リンク ]
Raspberry pi の OS(RASPBIAN)に Python をインストール | 大-はなまるのモノコトブログ
https://d-hanamaru.fun/2019/12/30/aspberry-pi-apache-python/
>


(04)
Raspberry Pi で CGI(bash)を動かす
$ sudo apt-get install apache2
・Apache のデフォルトの設定では、/usr/lib/cgi-bin/ のディレクトリにおいたファイルは CGI プログラムとして実行されます。
このディレクトリの設定は /etc/apache2/sites-available/default で定義されています。
/etc/apache2/mods-available/mime.conf 219行目のコメントアウトをはずす。
AddHandler cgi-script .cgi
docroot で cgi を利用できるようにする
/etc/apache2/sites-available/default を編集して /var/www/ の設定に「 +ExecCGI」を追記する。
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews +ExecCGI
AllowOverride None
Order allow,deny
allow from all
</Directory>

$ sudo /etc/init.d/apache2 restart
$ cd /usr/lib/cgi-bin/
$ sudo emacs helloworld.cgi
bash CGIを書く。
http://localhost/cgi-bin/helloworld.cgi

[ ソース・リンク ]
Raspberry Pi で CGI(bash)を動かす | ε-ARK Project
http://www.e-ark.jp/2013/05/08/raspberry-pi-%E3%81%A7-cgibash%E3%82%92%E5%8B%95%E3%81%8B%E3%81%99/
>


(05)
apacheでCGIを動作させる方法(改)
# cd /etc/apache2/mods-enabled
# sudo ln -s ../mods-available/cgi.load .
# ls -l | grep cgi
# service apache2 restart
・# nano /etc/apache2/sites-available/000-default.conf
を実行し、以下のコメントアウトされている行をコメント解除します。
Include conf-available/serve-cgi-bin.conf
・# sudo nano /etc/apache2/mods-available/mime.conf
上記のコマンドを実行し、以下のコメントアウトされている行をコメント解除 し、CGIファイルと認識させる拡張子名を入力(以下の場合、.cgiと.pyをCGIファイルとして認識)
AddHandler cgi-script .cgi .py
・次に以下を実行
nano  /etc/apache2/conf-available/serve-cgi-bin.conf
以下のように、
ScriptAliasのところをCGIファイルがあるパスに変更
<Directory “******”>のところを CGIファイルがあるパスに変更
(ここではCGIファイルを置くディレクトリ名を cgi_bin2としています。)
<IfDefine ENABLE_USR_LIB_CGI_BIN>
         ScriptAlias /
cgi-bin/ /home/pi/public_html/cgi-bin2/ 
         <Directory "
/home/pi/public_html/cgi-bin2">
                  AllowOverride None
                  Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                  Require all granted
         </Directory
</IfDefine>

・次に以下を実行
nano /etc/apache2/sites-available/cgi_bin2 ???
実行したら
Options Indexes FollowSymLinks
となっているところを以下のように変更
Options Indexes FollowSymLinks ExecCGI
・# sudo service apache2 restart
「http://localhost/~pi/cgi-bin2/sample.cgi」
?「http://localhost/~pi/public_html/cgi-bin2/sample.cgi」
ユーザーディレクトリを有効化
ユーザーディレクトリを有効化すると、アクセスするときにpublic_htmlが不要となる。
sudo a2enmod userdir
(06)
Apache2インストールとCGI設定
https://monomonotech.jp/kurage/raspberrypi/apache2.html


[ ソース・リンク ]
apacheでCGIを動作させる方法 |じょるブログ
https://jorublog.site/apache%E3%81%A7cgi%E3%82%92%E5%8B%95%E4%BD%9C%E3%81%95%E3%81%9B%E3%82%8B%E6%96%B9%E6%B3%95/
>


(06)
Apache2インストールとCGI設定
???そのまま実行可能???
・Apache2をインストール
$ sudo apt-get install apache2
・ユーザーディレクトリを有効化
ユーザーディレクトリを有効化すると、アクセスするときにpublic_htmlが不要となる。
$ sudo a2enmod userdir
$ sudo a2enmod [module]
$ sudo a2dismod [module]
・CGIを設定する
まずはコマンド入力
$ sudo ln -s /etc/apache2/mods-available/cgi.load /etc/apache2/mods-enabled/cgi.load
nanoで設定ファイル変更
$ sudo nano /etc/apache2/sites-available/000-default.conf
28行目の # を削除して上書き保存する(Ctrl + O, Enter, Ctrl + X)
ちなみにnanoで現在のカーソル位置が何行目かは Ctrl + C で確認できる。
変更前
# Include conf-available/serve-cgi-bin.conf
変更後
Include conf-available/serve-cgi-bin.conf
・拡張子.pyのCGIが動作出来るように設定
$ sudo nano /etc/apache2/mods-available/mime.conf
219行目の #を削除し、最後に .pyを追加して上書き保存
変更前
#AddHandler cgi-script .cgi
変更後
AddHandler cgi-script .cgi .py
CGIを動かすディレクトリの設定(Linuxではユーザーディレクトリーはhome。そこにユーザー名のディレクトリーがある)
$ sudo nano /etc/apache2/conf-available/serve-cgi-bin.conf
11行目の /usr/lib/cgi-bin/ を /home/[username]/public_html/cgi-bin に変更
12行目の /usr/lib/cgi-bin を /home/[username]/public_html/cgi-bin に変更
上書き保存
変更前
                ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
                <Directory "/usr/lib/cgi-bin">

変更後
                ScriptAlias /cgi-bin/ /home/[username]/public_html/cgi-bin
                <Directory "/home/[username]/public_html/cgi-bin">

・Apache実行ユーザー変更
$ sudo nano /etc/apache2/envvars
16行目の www-data を [username] に変更して上書き保存
変更前
export APACHE_RUN_USER=www-data
変更後
export APACHE_RUN_USER=[username]
・実行確認
先にApacheを再起動
$ sudo service apache2 restart
public_html/cgi-bin/フォルダを作る
$ mkdir public_html
$ cd public_html
$ mkdir cgi-bin
$ cd cgi-bin
上記フォルダにHTMLファイルやpythonファイルを置いてアクセスしてみましょう。
pythonファイルはchmod 755で属性変更を忘れずに。

[ ソース・リンク ]
Apache2インストールとCGI設定
https://monomonotech.jp/kurage/raspberrypi/apache2.html
>


(0X)
ラズパイにApache2を導入してみる
$ apachectl -v
$ ifconfig
inet 192.161.***.***  netmask 255.255.255.0   broadcast 192.168.***.***

[ ソース・リンク ]
ラズパイにApache2を導入してみる #RaspberryPi - Qiita
https://qiita.com/mono_taro/items/c4f6dfed115c30d0eef6
>


(07)
※ 僕がapache2用に書き換え。あってる?
Apacheの設定-CGI編
CGIが動作するようにするには、Apacheの設定ファイル(apache2.conf)を編集します。エディタでapache2.confを開きます。
/etc/apache2/apache2.conf
・ScriptAliasの記述を確認
この記述があるかどうかを確認。なければ追加します。
ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/"
・Optionsを下記の内容に変更
<Directory "/usr/local/apache/cgi-bin">
  AllowOverride None
  Options ExecCGI
  Order allow,deny
  Allow from all
</Directory>


[ ソース・リンク ]
Linuxサーバ設定備忘録-Apacheの設定-CGI編
https://www7a.biglobe.ne.jp/~hiro-server/linux/apache/linux_apache_cgi.html
>


(08)
※ Apache2ではない事に注意。
CGI(Perl)をApacheで使用するときの設定
・モジュールを読み込む
LoadModule cgi_module modules/mod_cgi.so
mod_cgiモジュールがコメントアウトされておらず、有効になっていることを確認します。
/etc/apache2/apache2.conf
・拡張子cgiやplのファイルをCGIとして実行させる
AddHandler cgi-script .cgi .pl
・またOptionsディレクティブにExecCGIを追加します。
<Directory "/">
  Options +ExecCGI
</Directory>

ScriptAlias /cgi-bin/ /usr/local/apache2/cgi-bin/
#!/usr/local/bin/perl

#!/usr/bin/perl
このパスはサーバによって異なりますが、Linuxでどちらのパスでも実行できるようにするにはシンボリックリンクを設定します。
ln -s /usr/bin/perl /usr/local/bin/perl


[ ソース・リンク ]
CGI(Perl)をApacheで使用するときの設定 - [サーバー + サーバー] ぺんたん info
https://pentan.info/server/apache_cgi.html
>


Ubuntu で Apache2 のモジュールを有効または無効にする方法
https://www.upken.jp/kb/ubuntu-a2enmod.html
$ sudo a2enmod [module]
$ sudo a2dismod [module]
有効・無効化できるモジュールは /etc/apache2/mods-available/ にあるため、各々のファイル名を拡張子なしで指定する。

Alias と ScriptAliasについて
http://safe-linux.homeip.net/web/linux-apache_ref-02.html

【 ln 】コマンド――ファイルのハードリンクとシンボリックリンクを作る:Linux基本コマンドTips(16) - @IT
https://atmarkit.itmedia.co.jp/ait/articles/1605/30/news022.html

Linux | シンボリックリンクの作成, 確認, 削除 - わくわくBank
https://www.wakuwakubank.com/posts/342-linux-ln-unlink/

Novel Devices 〜 apache error log
http://www.noveldevices.co.uk/rp-apache-errorlog
$ sudo nano /var/log/apache2/error.log
Or
$ sudo cat /var/log/apache2/error.log | less
$ tail -f /var/log/apache2/error.log
>


(... 2023R05-1024-TUE-1148)
(... 2023R05-1023-MON-1946)


CC BY tDG.