カテゴリー : 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認証