カテゴリー : Apache

[Apache][Windows7] No listening sockets available エラーで起動できないときの解決方法

Windows7 に Apache をインストールして、起動してみると”No listening sockets available”というエラーで起動できないときの解決方法をご紹介します。

イベントビューアーでシステムイベントログを確認してみると下記のようなメッセージが出ていました。

The Apache service named reported the following error:
>>> (OS 10048)通常、各ソケット アドレスに対してプロトコル、ネットワーク アドレス、またはポートのどれか 1 つのみを使用できます。 : make_sock: could not bind to address 0.0.0.0:80

Apacheが、” No listening sockets available”というエラーをはいて起動しない場合。 Apacheが使う80番ポートをほかのサービスが使用していることが原因でした。

Windows上での解消手順は続きの通りです。

使用ポートの調べ方

コマンドプロンプトで

netstat -oan

として、80番ポートを使用しているサービスの、プロセスIDを調べる
同じくコマンドプロンプトで

tasklist /svc

として、サービスとプロセスIDとの対応を調べる
対応するサービスを終了、または設定変更して80番ポート以外を使うようにする

とりあえずこれでOKです。

次に、Skypeの使用ポート変更します。

今回80番ポートを使っていたのはSkypeでした。

Skypeが使えないのも困るので、Skypeが使用するポートを変更します。

メニューの「ツール」→「詳細」→「接続」
上から2番目の「上記のポートに代わり、ポート80を使用」のチェックを外す
Skypeを再起動する

C:\Users\bakorer>netstat -oan
 
アクティブな接続
 
  プロトコル  ローカル アドレス          外部アドレス        状態           PID
  TCP    0.0.0.0:80             0.0.0.0:0              LISTENING       3956
  TCP    0.0.0.0:135            0.0.0.0:0              LISTENING       804
  TCP    0.0.0.0:443            0.0.0.0:0              LISTENING       3956
・
・
・
C:\Users\bakorer>tasklist /svc
 
イメージ名                     PID サービス
========================= ======== ============================================
System Idle Process              0 N/A
System                           4 N/A
・
・
・
Skype.exe                     3956 N/A

参考情報

Apacheが起動しない場合 – Hextomino

[Apache] 実行ユーザーの umask の設定方法

Apache 実行ユーザーの umask の設定方法をメモ。

# find / -name envvars
/usr/local/apache2/bin/envvars
# vim /usr/local/apache2/bin/envvars
 
# umask 002 to create files with 0664 and folders with 0775
umask 002
# service httpd restart

例えば、Capistrano での自動デプロイ運用で、この設定が役に立つ。

Capistrano で自動デプロイするときに、色んなユーザから deploy できるようにしたい場合にぶつかるファイルのパーミッション問題を umask の設定で解決できる。

Apache とデプロイ権限のあるユーザを共通グループ(deploy とか)に所属させて、運用させたいWebアプリのファイルのグループ所有にする。

そして、パーミッションもファイルは 664、ディレクトリは 775 にすれば、cap deploy:cleanup とかでファイルを削除するタイミングでもエラーが出ることはなくなるはず。

[参考]:/etc/sysconfig/httpd

[Apache] Forbidden You don’t have permission to access xxx on this server の解決方法

Apache で下記のようなアクセス権限が無いというエラーが出たときの対処方法をメモ。

エラーメッセージ

1
2
Forbidden
You don't have permission to access xxx on this server

ディレクトリのパーミッション設定を確認する

chmod o+x /home/myapp.com

httpd.conf の設定を確認する

httpd.conf に書いている Order deny,allow や、Allow from all とかの設定を間違って書くとアクセスできなくなる。

<Directory />
    Options FollowSymLinks
    AllowOverride All
    Order deny,allow
    Allow from all
</Directory>

参考情報

ホーム・ディレクトリ以下のpublic_htmlディレクトリをWebで公開してのに,アクセスできない:ITpro

apache – Forbidden You don't have permission to access / on this server – Stack Overflow

[Apache][PHP4] Cannot load /etc/httpd/modules/libphp4.so into server: libpq.so.2.1: cannot open shared object file: No such file or directory

Apache + PHP4 + PostgreSQL で下記のようなエラーが出た場合の解決方法をメモ。

libphp4.so で使う libpq.so.2.1 が無いというエラーです。

# /etc/init.d/httpd configtest
Syntax error on line 941 of /etc/httpd/conf/httpd.conf:
Cannot load /etc/httpd/modules/libphp4.so into server: libpq.so.2.1: cannot open shared object file: No such file or directory

libphp4.so のダイナミックリンクの関係を表示して確認すると、libpq.so.2.1 => not found となっていることが確認できます。

# ldd /etc/httpd/modules/libphp4.so
	libpam.so.0 => /lib/libpam.so.0 (0x40177000)
	libdl.so.2 => /lib/libdl.so.2 (0x40180000)
	libpq.so.2.1 => not found
	libcrypt.so.1 => /lib/libcrypt.so.1 (0x40184000)
	libresolv.so.2 => /lib/libresolv.so.2 (0x401b2000)
	libm.so.6 => /lib/libm.so.6 (0x401c4000)
	libnsl.so.1 => /lib/libnsl.so.1 (0x401e6000)
	libc.so.6 => /lib/libc.so.6 (0x401fd000)
	/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000)
# find / -name libpq.so.2.1
/usr/local/src/postgresql-7.0.3/src/interfaces/libpq/libpq.so.2.1
/usr/local/pgsql/lib/libpq.so.2.1

postgres 以下にある libpq.so.2.1 を /lib 以下にシンボリックリンクを貼ります。

# ln -s /usr/local/pgsql/lib/libpq.so.2.1 /lib/libpq.so.2.1

ちゃんと libpq.so.2.1 が読み込めていることを確認できました。

# ldd /etc/httpd/modules/libphp4.so
	libpam.so.0 => /lib/libpam.so.0 (0x40177000)
	libdl.so.2 => /lib/libdl.so.2 (0x40180000)
	libpq.so.2.1 => /lib/libpq.so.2.1 (0x40184000)
	libcrypt.so.1 => /lib/libcrypt.so.1 (0x40196000)
	libresolv.so.2 => /lib/libresolv.so.2 (0x401c4000)
	libm.so.6 => /lib/libm.so.6 (0x401d6000)
	libnsl.so.1 => /lib/libnsl.so.1 (0x401f8000)
	libc.so.6 => /lib/libc.so.6 (0x4020f000)
	/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000)
# vi /etc/httpd/conf/httpd.conf
#LoadModule php4_module        lib/apache/libphp4.so
LoadModule php4_module        /usr/lib/apache/libphp4.so

[参考]:2日目突入ちぅ – やちまうの戯言

[Apache] Passenger の Basic 認証設定

Apache + Passenger で Basic 認証を設定したのでメモ。

myuser というユーザのパスワードファイルを作成する。

# htpasswd -c /usr/local/apache2/.htpasswd myuser

Apache の設定ファイルを修正する。

# vim /usr/local/apache2/conf/extra/passenger.conf
<VirtualHost *:80>
    PassengerUserSwitching off
    PassengerDefaultUser app
 
    ServerName example.com
    DocumentRoot "/srv/example.com/current/public"
    ErrorLog "logs/example.com-error_log"
    CustomLog "logs/example.com-access_log" common
    <Directory /srv/example.com/current/public>
        AllowOverride all
        Options -MultiViews
        Order allow,deny
        Allow from all
    </Directory>
    <Location />
        AuthType Basic
        AuthName "Please enter your ID and Password"
        AuthUserFile /usr/local/apache2/.htpasswd
        Require user myuser
    </Location>
 
</VirtualHost>

Apache の再起動

# service httpd restart

以上です。

【参考】

@IT:Apacheでユーザー認証を行うには(Basic認証編) はてなブックマーク - @IT:Apacheでユーザー認証を行うには(Basic認証編)

blog.sowatchasayin: rails + passengerでbasic認証 はてなブックマーク - blog.sowatchasayin: rails + passengerでbasic認証

[Mac] Mountain Lion で PHP + Apache2 の設定方法

Mac の Mountain Lion にデフォルトでインストールされている PHP と Apache2 を使えるようにする設定方法を調べたのでメモ。

主にこの辺の記事を参考にします。

Mac OS X LionでApache、PHP、MySQLを動かす | HAPPY*TRAP

Mountain Lionでphp – komagata

DB はデフォルトでインストールされている PostgreSQL を使うか、MySQL を Homebrew もしくはソースからインストールして使います。

簡単にできる Mac OS X Lion に PHP + MySQL の開発環境を構築する方法 | ウェブル

MacBookAirでHomebrewを使ったMySQL 5.5.14のインストール | クラスメソッド開発ブログ

HomebrewでMySQLをインストールする時に知っておきたいこと | Macとかの雑記帳

Macでhomebrewを使ってMySqlのインストール – KRAKENBEAL RECORDS

以上です。

[Apahce][PHP] libphp4.so: cannot open shared object file: No such file or directory

Apahce2 + PHP4 構成のサーバーを構築中していまして、Apache起動したら libphp4.so がないってエラーが出ました。

service httpd start
httpd: Syntax error on line 63 of /usr/local/apache2/conf/httpd.conf: Cannot load /usr/local/apache2/modules/libphp4.so into server: /usr/local/apache2/modules/libphp4.so: cannot open shared object file: No such file or directory

libphp4.so の Path を調べて、正しい場所へ httpd.conf を修正すれば解決しました。

# find / -name libphp4.so
/usr/local/src/php-4.4.9/libs/libphp4.so
/usr/local/src/php-4.4.9/.libs/libphp4.so
/usr/lib64/httpd/modules/libphp4.so
# vim /usr/local/apache2/conf/httpd.conf
LoadModule php4_module /usr/lib64/httpd/modules/libphp4.so

以上です。


参考情報

libphp4.soの行方 – loumo.jp

[Apache] SSL (HTTPS) で起動しない時の対処方法

Apache を apachectl restart で再起動したら、http は繋がるけど、https は繋がらない問題が発生しました。

原因は、Apache のバージョンが 2.0.x 系で、apachectl startssl か -DSSL オプションを付けて起動するかしないと、SSLサポートが有効にならないみたいでした。

apachectl -v
Server version: Apache/2.0.59

apachectl のオプションであった startssl は無くなりました。 SSL サポートを有効にするには httpd.conf を 編集して関連する mod_ssl ディレクティブを 入れるようにし、それから apachectl start で サーバをスタートしてください。 mod_ssl を有効にする設定ファイルの例が conf/extra/httpd-ssl.conf にあります。

[引用元]:2.0 から 2.2 へのアップグレード – Apache HTTP サーバ

知らないと再起動した後に、https 繋がらなくてサービス停止状態になっちゃうので、下記の記事を参考に apachectl を編集するといいかも。

apachectl 3分ハッキング – C#とか。 – Grim Saga Project 別館:れびんの勉強部屋

あとは、そもそも古いバージョンの Apache を使ってないで、さっさとバージョン上げれば良いのですがね。


参考情報

シリコンバレー 24時: Apacheを 2.0 から 2.2 へアップデートすると SSLが無効になるトラブル

[仕事] Apache2.0.x→2.2.xのSSL対応について|TEAM RISE x すかの日記

[Apache] [warn] _default_ VirtualHost overlap on port 443, the first has precedence

Apache の config ファイルに2ヶ所以上 という感じの記述を書いていてエラーが出ていました。

■ エラー内容

[warn] _default_ VirtualHost overlap on port 443, the first has precedence

今回は、ssl.conf と proxy.conf の2ファイルに別々に記述してしまったというオチ。

[Apache] Invalid command ‘SSLCertificateFile’, perhaps misspelled or defined by a module not included in the server configuration

Apache に SSL の設定をして httpd configtest を実行したら、エラーがでました。

エラー内容

Invalid command 'SSLCertificateFile', perhaps misspelled or defined by a module not included in the server configuration

Apache が mod_ssl に対応してなかったので、mod_ssl を追加することでエラーが消えました。

mod_ssl の追加方法は、ソースからコンパイルしてインストールしている場合と、yum などでインストールしている場合とで違ってきます。

ソースからインストールしている場合

・参考:apxsでapacheにモジュールを追加する

yum でインストールしている場合

mod_sslインストール

# yum -y install mod_ssl

opensslインストール

# yum -y install openssl

以上です。


参考情報

apache+mod_sslでSSL — server-memo.net

かぴぶろぐ