!!/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
#
# 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
#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
!各ユーザのpublic_htmlの有効化(CentOS7より前)
#各ユーザーの public_html を有効にする
#
# 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
# Control access to UserDir directories. The following is an example
# for a site where these directories are restricted to read-only.
# ホームディレクトリのパーミッションも変更すること。
AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec ExecCGI
Order allow,deny
Allow from all
Order deny,allow
Deny from all
インデックスファイル
DirectoryIndex index.html index.html.var index.php
!CGIを使う場合
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 を==
== ==
== Options All==
== AllowOverride All==
== #AllowOverride FileInfo AuthConfig Limit==
== #Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec==
==として、 .htaccess に==
== Options +ExecCGI==
== AddHandler cgi-script cgi pl==
==を書く。==
!!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 "";
print "";
print "";
print "";
print "テストCGIだよ";
print "";
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
#AllowOverride FileInfo AuthConfig Limit
#Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
AllowOverride FileInfo AuthConfig Limit Options
Options MultiViews SymLinksIfOwnerMatch IncludesNoExec
Order allow,deny
Allow from all
Order deny,allow
Deny from all
!!アクセス制御
!!2.4以降
!全部拒否
Require all denied
!全部許可
Require all granted
!特定の接続元のみ拒否
Require all granted
Require not ip 192.168. 127.0.0.1
!特定の接続元のみ許可
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
ErrorDocument 404 "No favicon
{{category2 OS,Linux}}