トップ 一覧 置換 検索 ヘルプ RSS ログイン

Apache(httpd)の設定の変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!!/etc/httpd/conf
 #ポート変更
 Listen *:80

 #SELinux の方でも制御しているので、80以外にするときは、SELinuxの設定も変える
 # semanage port -a -t http_port_t -p tcp 88

 #サーバーの名前
 ServerName t-cent01
ServerName は、サーバ自身が使用するサーバ名とポート番号を指定します。このディレクティブは、Apache2からはデフォルトでコメントアウトされており、BIND でサーバー名が自動取得できるようになっていれば指定する必要はありませんが、起動時の問題を避けるためにも明示的に指定しておく事が推奨されています。

!各ユーザのpublic_htmlの有効化(CentOS7)
/etc/httpd/conf.d/userdir.confを編集する
vi /etc/httpd/conf.d/userdir.conf
 <IfModule mod_userdir.c>
     #
     # UserDir is disabled by default since it can confirm the presence
     # of a username on the system (depending on home directory
     # permissions).
     #
     #UserDir disabled
 
     #
     # To enable requests to /~user/ to serve the user's public_html
     # directory, remove the "UserDir disabled" line above, and uncomment
     # the following line instead:
     # 
     UserDir public_html
 </IfModule>
 
 <Directory "/home/*/public_html">
     #AllowOverride FileInfo AuthConfig Limit Indexes
     AllowOverride FileInfo AuthConfig Limit Indexes Options
     #Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
     Options MultiViews SymLinksIfOwnerMatch IncludesNoExec
     Require method GET POST OPTIONS
 </Directory>


!各ユーザのpublic_htmlの有効化(CentOS7より前)
 #各ユーザーの public_html を有効にする
 <IfModule mod_userdir.c>
     #
     # UserDir is disabled by default since it can confirm the presence
     # of a username on the system (depending on home directory
     # permissions).
     #
     #UserDir "disable"
 
     #
     # To enable requests to /~user/ to serve the user's public_html
     # directory, use this directive instead of "UserDir disable":
     # 
     UserDir public_html
 
 </IfModule>
 
 # Control access to UserDir directories.  The following is an example
 # for a site where these directories are restricted to read-only.
 # ホームディレクトリのパーミッションも変更すること。
 <Directory /home/*/public_html>
     AllowOverride FileInfo AuthConfig Limit
     Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec ExecCGI
     <Limit GET POST OPTIONS>
         Order allow,deny
         Allow from all
     </Limit>
     <LimitExcept GET POST OPTIONS>
         Order deny,allow
         Deny from all
     </LimitExcept>
 </Directory>

インデックスファイル
 DirectoryIndex index.html index.html.var index.php

!CGIを使う場合
 <Directory /home/*/public_html>
    AllowOverride FileInfo AuthConfig Limit Options
    Options MultiViews SymLinksIfOwnerMatch IncludesNoExec
AllowOverride All
Options All
は極力避ける。

.htaccess
 Options +ExecCGI -Indexes
 AddHandler cgi-script cgi pl

perl の実行権限は suExec によりホーム以下の場合は各ユーザの権限で実行される。
php での実行は、apache ユーザで実行されるので注意。
所有者をapacheにするか、sgid と apache の umask の設定で対処する

== AddHandler cgi-script .cgi ==
==または、  httpd.conf を==
== <Directory /home/*/public_html>==
==     Options All==
==     AllowOverride All==
==     #AllowOverride FileInfo AuthConfig Limit==
==     #Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec==
==として、 .htaccess に==
== Options +ExecCGI==
== AddHandler cgi-script cgi pl==
==を書く。==




!!/etc/httpd/conf.d/ssl.conf
ポートを変更する。
!!SSLを有効にする
[[Let's EncryptでSSL化]]
必要に応じてポートを変更する。
/etc/httpd/conf.d/ssl.conf 内の 443 を 変更先のポート番号へ変更。


!!動作確認
test.cgi
 #!/usr/bin/perl
 
 print "Content-type:text/html\n\n";
 
 print "<html>";
  print "<head>";
  print "<meta HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=euc-jp\">";
  print "</head>";
 print "テストCGIだよ";
 print "</html>";
perl の実行権限は suExec によりホーム以下の場合は各ユーザの権限で実行される。

test.php
 <? phpinfo() ?>
php での実行は、apache ユーザで実行されるので注意。
所有者をapacheにするか、sgid と apache の umask の設定で対処する

!!Apache実行時の環境変数
/etc/sysconfig/httpd を編集することでApache実行時の環境変数を設定出来る
 # vi  /etc/sysconfig/httpd

 export NLS_LANG=Japanese_Japan.UTF8
とか

!!Apacheのumaskを変更する
言語側でファイル書き込みの際にumaskを変更しても良い。
例えば、PHPの場合は
 $oldmask = umask(002);
 //何か処理
 umask($oldmask)
Apacheのプロセスのumaskを変更するときは以下の方法を使う。

!systemd
http://www.dondari.com/Apache%E3%83%A6%E3%83%BC%E3%82%B6%E3%81%AEumask%E5%80%A4%E3%82%92%E5%A4%89%E6%9B%B4%E3%81%99%E3%82%8B-systemd%E7%B7%A8

/etc/systemd/system/httpd.service ファイルを作成します。 
 .include /lib/systemd/system/httpd.service
 [Service]
 UMask=002

systemdのリロード
 systemctl --system daemon-reload

再起動
 systemctl restart httpd

!init.d(systemd以前)
http://www.dondari.com/index.php/Apache%E3%83%A6%E3%83%BC%E3%82%B6%E3%81%AEumask%E5%80%A4%E3%82%92%E5%A4%89%E6%9B%B4%E3%81%99%E3%82%8B

/etc/sysconfig/httpd を編集することで、apacheユーザのumaskを変更できる。
 #vi /etc/sysconfig/httpd

 umask 002

 # /etc/init.d/httpd restart


!!Apacheのロケールを変更する
ApacheのロケールをUTF-8にしたい場合は、HTTPD_LANGをja_JP.UTF-8にする

/etc/sysconfig/httpd 
 #HTTPD_LANG=C
 HTTPD_LANG=ja_JP.UTF-8

!!任意のディレクトリを公開する
 vi /etc/httpd/conf.d/hoge.conf

 Alias /hoge /home/hoge/web
 <Directory /home/hoge/web>
     #AllowOverride FileInfo AuthConfig Limit
     #Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
       AllowOverride FileInfo AuthConfig Limit Options
    Options MultiViews SymLinksIfOwnerMatch IncludesNoExec
     <Limit GET POST OPTIONS>
         Order allow,deny
         Allow from all
     </Limit>
     <LimitExcept GET POST OPTIONS>
         Order deny,allow
         Deny from all
     </LimitExcept>
 </Directory>

!!アクセス制御
!!2.4以降
!全部拒否
 Require all denied
!全部許可
 Require all granted
!特定の接続元のみ拒否
 <RequireAll>
 Require all granted
 Require not ip 192.168. 127.0.0.1
 </RequireAll>
!特定の接続元のみ許可
 Require all denied
 Require ip 192.168. 127.0.0.1

!!2.2以前
!全部拒否
 Order deny,allow
 Deny from all
!全部許可
 Order allow,deny
 Allow from all
!特定の接続元のみ拒否
 order allow,deny
 allow from all
 deny from 192.168. 127.0.0.1
!特定の接続元のみ許可
 order deny,allow
 deny from all
 allow from 192.168. 127.0.0.1

!!その他の設定
!File does not exist: robots.txt/favicon.ico のエラーがログに出力される
favicon.icoが存在しないというエラーで、無視しても問題ない。
気になる場合は httpd.conf に以下を追記する。
 Redirect 404 /favicon.ico
 
 <Location /favicon.ico>
 ErrorDocument 404 "No favicon
 </Location>


{{category2 OS,Linux}}