IT家・挑戦雑記

情報を制する者は世界を制す!

★状況
 ・Apacheサービスの再起動に失敗した
 ・以下エラーメッセージ
  [linux@user]# service httpd restart
  httpd を停止中: [失敗]
  httpd を起動中:
  (98)Address already in use: make_sock: could not bind to address [::]:80
  (98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
  no listening sockets available, shutting down
  Unable to open logs [失敗]

★環境
 ◆サーバーサイド
  ・OS:CentOS 5.6
   ・PHP:5.3.x
   ・Apache:2.2.x
   ・MySQL:5.5.x

★原因
 ・プロセスが既に握っているため?・・・多分・・・
  ※なぜ握ったままか分からないが、正しくサービスが終了していなかったためと推測される

★解決
 ・対象のプロセスを調べて停止する
 ◆プロセスの調べ方
  /sbin/pidof httpd
   もしくは
  /usr/sbin/lsof -i | grep http
 ◆プロセスの停止
  kill 停止するプロセスの数字

★確認
 ・Apacheの再起動
  /sbin/service httpd start
  httpd を起動中: [ OK ]


★参考URL
 ・[ギーク芸人を目指すデジタルケイタのブログ] apacheの再起動でエラー (98)Address already in use: make_sock: could not bind to address [::]:80

━━━━━━━━━━━━━━━━━━━━━━━━━
★状況
 ・Apacheサービスを起動すると以下エラーログ発生

 ◆エラー内容
 The Apache service named  reported the following error:
 >>> httpd.exe: Could not reliably determine the server's fully qualified domain name,
  using 192.168.0.2 for ServerName

 詳細な情報は、http://go.microsoft.com/fwlink/events.asp の [ヘルプとサポート センター] を参照してください。

 ◆エラー内容(日本語訳)
 Apacheサービスは、次のエラーを報告名前:
 >>>のhttpd.exeは:確実にServerNameには192.168.0.2を使用して、
 サーバーの完全修飾ドメイン名を判断できませんでした

 詳細な情報は、http://go.microsoft.com/fwlink/events.asp の [ヘルプとサポート センター] を参照してください。

 ---
 ※イベントログのアプリケーション(Windows2003R2)にて表示
 ※サービスは正常起動(syntax OK)

★環境
 ◆サーバーサイド
  ・OS:Windows2003 R2
   ・Apache:2.2系

★原因
 ・Apacheのconfに「ServerName」が記述されていない。
 ※「httpd.conf」およびvhostがある場合はvhostのconfにも「ServerName」記述が必要

★解決
 ・confファイルに「ServerName」を記述

 ---
 ※例
  ServerName localhost:80

★状況
 WordPressで記事を投稿した際に、相手サイトにトラックバックができない。

★環境
 ◆サーバーサイド
  ・OS:CentOS 5.5
   ・PHP:5.3.2
    ・WordPress 3.0
   ・Apache:2.2.3

★原因
 ◆トラックバックの際のタイムアウト(時間制限)
  ・デフォルトでタイムアウトが0.01秒と短めに設定されている。
  ・重たいサーバーの場合、トラックバックに失敗する可能性が高くなる!

★解決
 ◆以下のphpを書き換える
  ■対象php
   /wp-includes/cron.php
  
  ■対象箇所
   「cron.php」の234行目付近
    ▲修正前
     wp_remote_post( $cron_url, array(‘timeout’ => 0.01, ‘blocking’ => false, ‘sslverify’ => apply_filters(‘https_local_ssl_verify’, true)) );
    
    ▲修正後
     wp_remote_post( $cron_url, array(‘timeout’ => 3, ‘blocking’ => false, ‘sslverify’ => apply_filters(‘https_local_ssl_verify’, true)) );
     ※本修正は0.01秒から3秒に修正。

以前紹介した「Apacheで突然CGIが使えなくなる問題

突然suexecが復活してCGIが使えなくなる事があります。
そこで、自動的にsuexecが復活しているかチェックして、Apacheを再起動するスクリプトを紹介します。


■スクリプト概要
suexecが存在していた時、自動的に削除してApacheを再起動する

■テスト済み環境
 CentOS 5.4

■スクリプト内容
#////////////////////////////////////////////////////////////////#
# @スクリプト名:chk_suexec.sh
# @バージョン:1.00
# @作成日:10.04.04
# @更新日:10.04.04
# –
# @作者:masa.h(マサ)
# @サイト1:http://masa.cmix.info/
# @サイト2:http://blog.masa.cmix.info/
# @メール:oldtimer.masa@gmail.com
#////////////////////////////////////////////////////////////////#

#———————-#
# +ユーザ環境
#———————-#

#使用方法
#sh chk_suexec.sh

#suexecのpath
suexec_path=/usr/sbin/suexec

#———————-#
# +処理部分
#———————-#

if [ -e $suexec_path ]; then
#echo “File exist !!”
rm $suexec_path
service httpd restart
date ‘+%Y/%m/%d%r’ >> chk_suexec.log

#else
#echo “No file”
fi

■スクリプト概略
 ・サーバーのsuexec_pathを設定
 ・crontabにて設定

■スクリプトのダウンロード先
 シェルスクリプト:chk_suexec.sh