Apache

2024 年 10 月 10 日 改訂

Apache は、web サーバーです。ここでは python の CGI スクリプトを動かすために必要な情報を書いています。

Apache2 では、設定ファイルの本体は /etc/apache2/apache2.conf です。

 

インストール

Ubuntu 20.04 に Apache Web サーバーをインストールする方法

 

設定
Ubuntu 24.04


index.html
/usr/share/doc/apache2/README.Debian.gz

 

(2024年10月)

CGI 設定

環境は以下です。

jinoue@E73F3:~$ apachectl -v
Server version: Apache/2.4.58 (Ubuntu)

jinoue@E73F3:~$ lsb_release -d
No LSB modules are available.
Description: Ubuntu 24.04 LTS

デフォルト:/usr/lib/cgi-bin/ に cgi スクリプトを設定する

CGI モジュールを有効にする。

$ sudo a2enmod cgid

apache2 をリスタートします。

$ sudo systemctl restart apache2

/usr/lib/cgi-binindex.cgi を保存します。内容は以下です。

#!/usr/bin/python3

print("Content-type: text/html\n")
print("<html>\n<body>")
print("<div>")
print("/usr/lib/cgi-bin CGI Script Test Page")
print("</div>")
print("</body>\n</html>")

ファイルのパーミッションを変更します。

$ sudo chmod 705 index.cgi

動作確認をします。

$ curl localhost/cgi-bin/index.cgi

私の場合、curl だと以下のような結果でしたが、ブラウザからは問題ない表示が出ました。

jinoue@E73F3:$ curl localhost/cgi-bin/index.cgi
<html>
<body>
<div>
/usr/lib/cgi-bin CGI Script Test Page
</div>
</body>
</html>

ブラウザからも確認した方が良いです。以下のアドレスを入力します。xxx は IP アドレスです。

https://xxx.xxx.xxx.xxx/cgi-bin/index.cgi

 

上記デフォルト以外のディレクトリに cgi スクリプトを設定する

ここでは、デフォルトファイル serve-cgi-bin.conf を変更する方法を紹介します。本来はデフォルトファイルを変更せずに cgi-enabled.conf ファイルなどを作成して対応すべきですが、うまく動作しなかったです。

1. デフォルトファイルを変更する方法

/etc/apache2/conf-available/serve-cgi-bin.conf を以下のように変更します。

<IfModule mod_alias.c>
<IfModule mod_cgi.c>
Define ENABLE_USR_LIB_CGI_BIN
</IfModule>

<IfModule mod_cgid.c>
Define ENABLE_USR_LIB_CGI_BIN
</IfModule>

<IfDefine ENABLE_USR_LIB_CGI_BIN>
#ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
ScriptAlias /cgi-bin/ /var/www/cgi-bin/
#<Directory "/usr/lib/cgi-bin">
<Directory "/var/www/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Require all granted
</Directory>
</IfDefine>
</IfModule>
osadm@tk2-211-15231:/etc/apache2/conf-available$

/var/www/cgi-binindex.cgi を保存します。内容は以下です。

#!/usr/bin/python3

print("Content-type: text/html\n")
print("<html>\n<body>")
print("<div>")
print("/var/www/cgi-bin CGI Script Test Page")
print("</div>")
print("</body>\n</html>")

ファイルのパーミッションを変更します。

$ sudo chmod 705 index.cgi

apache2 をリスタートします。

$ sudo systemctl restart apache2

動作確認をします。上記のように、curl では問題があっても、ブラウザでは正常に表示されました。

$ curl localhost/cgi-bin/index.cgi

ブラウザからも確認した方が良いです。以下のアドレスを入力します。xxx は IP アドレスです。

https://xxx.xxx.xxx.xxx/cgi-bin/index.cgi

2. デフォルトファイル以外を作成する方法

Apache2: CGI スクリプトを利用する」をご参照ください。

(2024 年 8 月)

 

ベーシック認証設定方法

ベーシック認証とは、サイトのアクセス時にアクセスを制限を行うために、IDとPasswordを用いた認証のことです。

Ubuntu

タンスの狭間を参照しました。

アクセス可能ユーザを作る

$ sudo htpasswd -c /var/htpasswd kaede
管理者のパスワードを入力してください
kaede のパスワードを入力してください(2回)

登録したアカウントの確認は、次のコマンドを入力してください。

$ cat /var/htpasswd
kaede:********************************************

セキュリティフォルダを作成する

今回はhtmlフォルダ直下に himitsu という名前のディレクトリを作成し、Basic認証をかけます。次のコマンドを入力してフォルダを作ります。

$ mkdir /var/www/html/himitsu
$ chmod 755 /var/www/html/himitsu

himitsu ディレクトリ内部に、例として次のようなHTMLファイルを作成し、パーミッションを755に変更しました。

ファイル名 index.html パーミッション 755
 <html> 
   <body><h1>Himitsu no page.</h1></body>
 </html>

apache で Basic 認証の設定を行う

apacheの設定ファイルを開き、どのフォルダにBasic認証をかけるのか設定します。設定ファイルを開くには、次のコマンドを入力してください。

$ sudo vim /etc/apache2/apache2.conf

「<Directory>」という設定が書かれている場所付近に次の設定分を追加してください。

    <Directory /var/www/html/himitsu>
AuthType Basic
AuthName "private area" AuthBasicProvider file
AuthUserFile /var/htpasswd
require valid-user
</Directory>

この設定によって
   「/var/www/html/himitsu」フォルダにBasic認証をかける
   「/var/htpasswd」にログイン可能なユーザが記載されている
に変わります。

apache2 をリスタートします。

sudo service apache2 restart

ブラウザから確認

ユーザーとパスワードが聞かれるはずです。

http://xxx.xx.xx.xxx/secure/

(2024 年 10 月)

CentOS
https://pointsandlines.jp/server-infra/basic-authorize

CentOS6.3 で書かれていますが、CentOS7.5 でもできました。httpd.conf に書き込むやり方が簡単でした。

1. パスワードを作成し、ファイルに保存。ここではユーザー名を htuser としています。

$ sudo htpasswd -c /etc/httpd/conf/.htpasswd htuser

設定するパスワードを聞かれるので答えます。

2. httpd.conf ファイルの最後に以下のコメントを記入。ここでは FILENAME というディレクトリに認証設定を行っています。

<Directory "/var/www/html/FILENAME">
AuthType Basic
AuthName "Please Enter ID and pass"
AuthUserFile /etc/httpd/conf/.htpasswd
Require valid-user
</Directory>

3. 設定ファイルを再度読み込みます。

$ sudo systemctl reload httpd.service

(2022 年 7 月)

 

リンク

設定ファイル

Ubuntu の Apache設定ファイル

・XX-available 内部にあるファイルへのシンボリックリンクの作成コマンド一覧 (作成コマンドと削除コマンドが逆になってようです)。
・実際の設定ファイルは、xx-available にある。/etc/apache2/conf-enabled というディレクトリ内部にあるファイルが読み込まれるが、これらは conf-available 内部にあるファイルへのシンボリックリンクになっている。
・CentOS と違い、Ubuntu の設定ファイルは /etc/apache2/apache2.conf になっている。

CGI

Apache2: CGI スクリプトを利用する
(2020/5)

Apache2 で cgi を機能させるまで
(2020/7)

cgi ファイルを設置するデフォルト設定は、

/etc/apache2/conf-available/serve-cgi-bin.conf

に記述されている (2024 年 3 月)。

[JQuery] Ajax が使える状態かどうかチェックする方法

python CGI でクエリが取得できない

cgi.FieldStorage() が動くかチェックする。

 

公式ページ

Apache HTTP サーバー バージョン 2.4 ドキュメント