Linuxサーバー構築~その5~

<はじめに>
Linuxサーバー構築シリーズその5です。

今回はperlで書いたCGIをWebサーバーで動かします。


<作業内容>
単にCGIを動かすだけであれば特に変更は必要ないですが、

まずは/etc/httpd/conf/httpd.confの中身を見てみます。

f:id:nomurabbit:20131221172749p:plain

User,Groupにapacheとあります。

そこでOSのユーザーを見てみると、apacheというユーザーが確認できます。

f:id:nomurabbit:20131221173258p:plain

おそらくhttpdでCGIを実行するときは、

このapacheユーザーを使うということだと思います。

また、/etc/httpd/conf/httpd.confにはこのような記述もあります。

f:id:nomurabbit:20131221173419p:plain

ここにOptions ExecCGIと記述があることによって、

/var/www/cgi-binフォルダ内で、CGIの実行が許可されます。

それではCGIを作成します。

test.cgi

#!/usr/bin/perl

print "Content-type: text/html\n\n";
print "Hello world";

ファイルのアクセス権を755とし、

/var/www/cgi-bin/test.cgiとして保存します。

ここでlsコマンドに-Zオプションをつけて、selinuxのラベルを確認しておきます。

f:id:nomurabbit:20131221181859p:plain

あまり詳しくはないのですが、

この、httpd_sys_script_exec_tというラベルがついていないと、

CGIが上手く動かないような気がします。

もし、CGIが動かない原因としてラベルが疑われるようであれば、

chcon unconfined_u:object_r:httpd_sys_script_exec_t:s0 /var/www/cgi-bin/test.cgi

というコマンドでラベルの貼り換えが可能です。

ここまで済めば動作確認です。

test.cgiにブラウザからアクセスしてみます。

f:id:nomurabbit:20131221183159p:plain

無事にCGIにアクセスできました。

<まとめ>
今回の記事まででapachを使って

CGIを動かすことができるようになりました。

前回、今回はhttpを使ったアクセスに限定していましたが、

次回以降mod_sslをインストールして

httpsでアクセスする方法も書いていこうと思います。