tech_memo / apache


tech_memo

トラブルシュート

apache起動時に「Resource temporarily unavailable: setuid: unable to change to uid:XXX」

  • 参考 : https://support.plesk.com/hc/en-us/articles/115001275565-Unable-to-start-Apache-11-Resource-temporarily-unavailable-setuid-unable-to-change-to-uid-502
  • 起動時、/var/log/error_logに出力され、起動失敗する(落ちる)。
  • apacheユーザの利用プロセス数が上限に達しているのが原因
  • 対処法
    • /etc/sysconfig/httpdにmax processを変更できるように追記してから、apacheを起動する
      ulimit -u 2048
    • 他のサイトで、/etc/security/limits.confに、以下の記述をすると記載があったが、この方法では回避できず。
      apache    sofr    nproc    2048
      apache    hard    nproc    2048
      • 上記だと、suコマンドでapacheユーザになるのはできるようになった。デーモンによる起動だと、limits.confは読まれない?

cgi-bin配下のCSS、JavaScript?外部ファイルが読み込めない

  • デフォルトではcgi-binフォルダにあるファイルはすべて実行ファイルとして見られてしまうため、httpd.confに以下の設定を追加する。
    <Directory "/var/www/cgi-bin">
       AllowOverride None
       Options None
       Order allow,deny
       Allow from all
       AddHandler text/css .css         ★追加
       AddHandler text/javascript .js  ★追加
    </Directory>

apache起動時に「httpd: Could not reliably determine...」のメッセージ

  • 起動はできるが下記のような警告が出力される
    shishimaru@v-cent65% sudo service httpd start 
    Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using 192.168.3.65 for ServerName
                                                              [  OK  ]
  • httpd.conf に ServerName? を設定すると解消される
    vi /etc/httpd/conf/httpd.conf
    ServerName v-cent65:80

コマンド


htpasswd

  • Basic認証で利用するパスワードファイルを生成する。すでにパスワードファイルが存在する場合は、ユーザを追加。
    htpasswd <パスワードファイルパス> <ユーザ名>
  • 「-c」オプションを付加した場合は、指定パスに既存のパスワードファイルがある場合は上書き
    htpasswd -c <パスワードファイルパス> <ユーザ名>
  • その他のオプション

BASIC認証

  • 設定例
    <LocationMatch "^/git">
       AuthType Basic
       AuthName "git repository"
       Require valid-user
       AuthUserFile /etc/apache2/htpasswd
    </LocationMatch>

ScriptAlias?

  • CGIディレクトリのエイリアス
    ScriptAlias /cgi-bin/ "/home/apache/my-cgi-bin/"