ソースコードからインストールしたApacheが起動できない
大学で現在の時刻を表す動的webページをCGI,Perl,PHP,SSIとJavaScriptそれぞれ一つずつ作りなさいという課題をやった後、apache再起動時に以下のエラーがでました。
[root@user1 ~]:501# /etc/init.d/apache start
(98)Address already in use: AH00072: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
AH00015: Unable to open logs
とりあえず/usr/sbin/lsof -i |grep httpdコマンドでプロセスを調べ、kill -9 ****コマンドで一つずつ削除したところ、再起動できました。
[root@user1 ~]:502# /usr/sbin/lsof -i |grep httpd
httpd 1679 root 3u IPv4 10333 0t0 TCP *:http (LISTEN)
httpd 1685 apache 3u IPv4 10333 0t0 TCP *:http (LISTEN)
httpd 1686 apache 3u IPv4 10333 0t0 TCP *:http (LISTEN)
httpd 1688 apache 3u IPv4 10333 0t0 TCP *:http (LISTEN)
httpd 1689 apache 3u IPv4 10333 0t0 TCP *:http (LISTEN)
httpd 1690 apache 3u IPv4 10333 0t0 TCP *:http (LISTEN)
httpd 1691 apache 3u IPv4 10333 0t0 TCP *:http (LISTEN)
httpd 1692 apache 3u IPv4 10333 0t0 TCP *:http (LISTEN)
httpd 1693 apache 3u IPv4 10333 0t0 TCP *:http (LISTEN)
[root@user1 ~]:503# kill -9 1679
[root@user1 ~]:504# kill -9 1685
[root@user1 ~]:505# kill -9 1686
[root@user1 ~]:506# kill -9 1688
[root@user1 ~]:507# kill -9 1689
[root@user1 ~]:508# kill -9 1690
[root@user1 ~]:509# kill -9 1691
[root@user1 ~]:510# kill -9 1692
[root@user1 ~]:511# kill -9 1693
[root@user1 ~]:512# /usr/sbin/lsof -i |grep httpd
[root@user1 ~]:517# /etc/init.d/apache start
[root@user1 ~]:518#
しかしCentOSをrebootすると再び上記と同じ起動できない状況になってしまいます。(iptablesは停止をしたくらいで設定をいじった覚えはないです。)
Linux経験が浅いのでこういったトラブルにはまだ自力で解決できません。原因が何なのか教示をお願いできないでしょうか。
よろしくお願いたします。
以下にこのサイトで調べてやってみたこと、LAMP環境構築の流れ、大学の課題の動的webページのソースを載せておきます。
やってみたこと
[root@user1 ~]:518# grep Port /etc/ssh/sshd_config
#Port 22
#GatewayPorts no
[root@user1 ~]:519# ps -ef |grep http
root 2706 1 0 16:51 ? 00:00:00 /usr/local/apache/bin/httpd -k start
www 2709 2706 0 16:51 ? 00:00:00 /usr/local/apache/bin/httpd -k start
www 2710 2706 0 16:51 ? 00:00:00 /usr/local/apache/bin/httpd -k start
www 2711 2706 0 16:51 ? 00:00:00 /usr/local/apache/bin/httpd -k start
www 2712 2706 0 16:51 ? 00:00:00 /usr/local/apache/bin/httpd -k start
www 2713 2706 0 16:51 ? 00:00:00 /usr/local/apache/bin/httpd -k start
root 3033 2286 0 17:57 pts/0 00:00:00 grep http
[root@user1 ~]:522# /usr/sbin/lsof -i |grep sshd
sshd 1522 root 3u IPv4 10141 0t0 TCP *:ssh (LISTEN)
LAMP環境構築の流れ
大学の講義の流れでCentOSインストール、yum -y updateコマンド実行、開発環境構築後すぐにLAMP環境構築に入りました。
1.OpenSSL(1.0.2o)をコンパイルでインストール
2.Apache(2.4.33)のソースをapr,apr-utilと一緒にダウンロード、コンパイルしてインストール(講義内の指定でドキュメントルートは/home/apache/htdocsにしています。)
講義で使用するサイトに従って設定を行った後index.htmlを作ってfirefoxからページが見えるか確認したところ成功。
3.MariaDB(10.2.14)インストール。(講義の教授の指定でMySQLではなくMariaDBにしています。)
4.PHP5.6をコンパイルでインストール。インストール後、Apache連携確認、再起動成功。 phpinfo.phpを作ってfirefoxからphpのトップページが見えるか確認したところ、成功。(このタイミングでchkconfig httpd onコマンドで自動起動を設定しました。)
これでLAMP環境の構築は無事に終わりました。
動的webページのソース
以下/home/apache/htdocs/
CGI(date.cgi
#!/bin/sh
echo "Content-type: text/html"
echo
echo "<html>"
echo "<head>"
echo "<meta http-equiv=\"content-TYPE\" content=\"text/html; charset=UTF-8\">"
echo "</head>"
echo "<body>"
echo "<h2>こんにちは Common Gateway Interface (CGI) by Shell Script</h2>"
echo "<font size=+1 color=#c01010>"
echo "現在の時刻は "
/bin/date +"%y年%m月%d日(%a) %H時%M分%S秒"
echo "<br/></font>"
echo "</body>"
echo "</html>"
Perl(date.pl)
#!/usr/bin/perl
print "Content-type: text/html\n";
print "\n";
print "<html>\n";
print "<head>\n";
print "<meta http-equiv=\"content-TYPE\" content=\"text/html; charset=UTF-8\">\n";
print "</head>\n";
print "<body>\n";
print "<h2>こんにちは Perl</h2>\n";
print "<font size=+1 color=#c01010>\n";
print "現在の時刻は \n";
$time = localtime(time);
print $time;
print "<br/></font>\n";
print "</body>\n";
print "</html>\n";
PHP(date.php)
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title> PHP Date </title>
</head>
<body>
<h2>こんちは Hypertext Preprocessor (PHP)</h2>
<font size=+1 color=#c01010>
<?php
date_default_timezone_set('Asia/Tokyo');
print(date('現在の時刻は Y年m月d日 (D) a h時i分s秒 です').'<br/>');
?>
</font>
</body>
</html>
SSI(date_ssi.html date.sh .htaccess)
date_ssi.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title> SSI Date </title>
</head>
<body>
<h2>こんにちは Server Side Include (SSI)</h2>
<font size=+1 color=#c01010>
現在の時刻は <!--#exec cmd='./date.sh' --> <br />
</font>
</body>
</html>
date.sh
#!/bin/sh
/bin/date +"%y年%m月%d日(%a) %H時%M分%S秒"``
.htaccess
Options +Includes
Javascript(date_js.html)
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title> JavaScript Date </title>
</head>
<body>
<h2>こんにちは Java Script</h2>
<font size=+1 color=#c01010>
現在の時刻は
<script language="JavaScript">
<!--
function show_date(){
var date = new Date();
document.write(date);
}
show_date();
//-->
</script>
</font>
</body>
</html>
date.cgi,date.plにはchmod 755
コマンドを使いました。
SSI以外は成功しました。
ちなみに講義の教授は多忙の為研究室にいないことが多く、頼るのは難しいです。