検索
AND検索
OR検索
トップ
|
リロード
|
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
Tips/Linux/Apache2 をテンプレートにして作成
メニュー
トップページ
奥村研にようこそ
卒業研究
奥村研Blog
Outlook Live
FUポータル
Wiki編集者
↑
【 メンバー専用 】
:メンバー
:連絡先
:予定
:写真
:ゼミ
ゼミ実験
サーバー仕様・構成
研究成果
Create Travel Map with Moves
未使用ページ
MenuBar を
edit
【 Tips 】
†
Linux
各種サーバ構築関連
web, qmail, Linuxディストリ, ハードウェア, Samba, モニタリング, Tips
Windows
PortableApps.com
TeraTermPro
WSUS
リモートデスクトップ
Tips
その他 古い話題
Hardware
映像端子
ビデオキャプチャ
道具
AVIOSYS_IPSensor9216
NWハードウェア(L2SW,FW)
LAN配線
APC Smart-UPS
CD-R, DVD-R, BD-R
いろいろベンチマーク
USBサーバ
ベンチマーク, Zaurus, その他メモ
VMWare
VMware Workstation
VMware ESXi
VMware player
HTML, Pukiwiki
HTML
Pukiwiki設定
calendar2
XAMPP for Mac OSX
Apache
MySQL
その他
okkun-labにおけるレポート(報告書)Tips
レポート
Android (Java)
Java Tips
Android Tips
SQL
PostgreSQL Tips
AWS
Amazon Ami Linux
etc
MySQL Tips
Amazon API
TEPRA PRO
無線
印刷Tips
福岡市内ICカード比較
Perl Tips
診断くん
(ミラー)
traceping
Pasoli電子錠
福岡市消防局
Tips を
edit
最新の20件
2024-02-19
Tips/Linux/Tips
2024-02-17
Tips/Linux/RaspberryPiOS
2024-02-15
Tips/Hardware/NWHW/Cisco
Tips/Hardware/NWHW/Juniper_Netscreen_25
2022-11-29
Tips/Linux/MySQL
2022-06-12
RecentDeleted
2022-05-28
MenuBar
AutoTicketLinkName
2022-05-03
Tips/Linux/mdadm
2022-04-15
Tips/Hardware/LAN
2021-12-20
Tips/Windows/rsync
2021-10-12
etc/perl
2021-09-20
Tips/Linux/Samba4
2021-01-10
Tips/Hardware/NWHW/Alaxala
2021-01-06
Tips/Linux/BIND9
Tips/Linux/CentOS6
2020-09-15
Tips/Linux/Postfix/Postfix
2020-05-03
Tips/Linux/CentOS7
2019-08-10
Tips/HTML
2019-07-26
Tips/Linux/Apache2
Total:0/Today:0
開始行:
*Apache2 [#mf05a797]
-Turbolinux 10 server
--Apache 2 系の設定
--一般的な変更点のみ
-CentOS 5.6
--SELinuxとかconf.dとかを若干修正
**contents [#a6e85fef]
#contents
**/etc/httpd/conf/httpd.conf [#m1adf372]
-''Apache本体の設定''
-MaxRequestsPerChild 5000
--子プロセスあたりの最大リクエスト数
--指定数以上のリクエストを受けると子プロセスは自動的に再...
--メモリリーク対策
--0 で無制限
--StartServers, MinSpareServers, MaxSpareServers, MaxClie...
--Apache2から処理の種類に応じて設定できるようになった。~
けどよく分からないから全部同じにしている。
-ExtendedStatus On
--/server-status が見れるようになる。
--アクセス中のホスト名とかモジュールのバージョンが見える...
あまり設定すべきではない。
--後述の Location も設定すること
-User apache / Group apache
--Apacheの動作権限
-ServerAdmin sabakan@jamfunk.net
--管理者のメアド
--404の下部に表示される
-ServerName katae.jamfunk.jp:80
--サーバ名と標準ポート
-''ルートディレクトリの設定''
-DocumentRoot "/home/sabakan/public_html"
--http://katae.jamfunk.jp/ と指定したときのホームディレク...
--SELinuxが有効化されている状態で変更すると"documentroot ...
-<Directory />
<Directory />
Options All MultiViews
AllowOverride All
</Directory>
--/ (=DocumentRoot) の設定
--この設定では大開放設定なので、制限を付けてみても良いか...
--Apache 2.4系から書き方が変わったらしい
# Require all denied
Require all granted
-<Directory "/var/www/html">
#<Directory "/var/www/html">
#</Directory>
--/var/www/html を使わないならコメントアウトして良い。
--今回の場合では DocumentRoot を元々設定してあった /var/w...
-''ユーザディレクトリの設定''
-<IfModule mod_userdir.c>
<IfModule mod_userdir.c>
UserDir public_html
</IfModule>
--ユーザディレクトリのどこをルートにするか
--この場合、/homt/hoge/public_html/ = http://katae.jamfun...
-<Directory /home/*/public_html>
<Directory /home/*/public_html>
AllowOverride All
Options All MultiViews
</Directory>
--そのディレクトリの設定
--例によって大開放
-DirectoryIndex
DirectoryIndex index.html index.html.var index.html inde...
cgi index.php
--一行で
--ファイル名を省略したときに呼び出すファイル名
--左から順番に試される。
-''モジュールの設定''
-HostnameLookups Off
--ログに表示するアクセス元を逆引きするか
--処理が多くなると重くなるので、offの方が良いかも
-AliasMatch
AliasMatch ^/manual(?:/(?:de|en|fr|ja|ko|ru))?(/.*)?$ "/...
<Directory "/var/www/manual">
--/manual を公開する
--普通はいらないからこの項目を全てコメントアウトしても良...
-ScriptAlias
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
<Directory "/var/www/cgi-bin">
--CGIを別ディレクトリに置かせる
--頭がこんがらがるから切って良いと思う
-IndexOptions FancyIndexing FoldersFirst VersionSort Name...
--Options で All または Indexes を指定しているときに~
ディレクトリ指定でファイル一覧を表示させるときの形式
--NameWidth=* でファイル名が省略されるのを防げる
--後述の modencoding も参照
-ReadmeName / HeaderName
ReadmeName README.html
HeaderName HEADER.html
--Options Indexes でのヘッダとreadmeに表示するファイル
-''文字コードの設定''
-DefaultLanguage ja
--デフォルト言語
-LanguagePriority ja en da nl et fr de el it ko no pl pt ...
--言語優先度
--jaを頭に持ってきておいた方が無難
-AddDefaultCharset EUC-JP
--デフォルトの文字コード
--TL11S の場合、UTF-8 にすると全て UTF-8 で解釈されるので...
指定しない方が幸せになれるかも。
-''実行権限の設定''
-AddHandler cgi-script .cgi
--CGI実行権限を与える
-AddOutputFilter INCLUDES .shtml
--Server Side Include (SSI) を有効化
-''レスポンスの設定''
-<Location >
<Location /server-status>
<Location /server-info>
--前述の ExtendedStatus での詳細な設定
--アクセス制限をかけるべき
--Allow from .jamfunk.jp みたいな
-<IfModule mod_proxy.c>
#<IfModule mod_proxy.c>
#ProxyRequests On~
#<Proxy *>
--簡易プロクシ
--設定を間違えると[[CyberSyndorome:http://www.cybersyndro...
-''ヴァーチャルホストの設定''
-NameVirtualHost *:80
--ホスト名を利用したヴァーチャルホストを有効化する
-<VirtualHost *:80>
<VirtualHost *:80>
ServerAdmin sabakan@jamfunk.net
DocumentRoot /home/httproot/public_html
ServerName katae.jamfunk.jp
ErrorLog logs/httproot-error_log
CustomLog logs/httproot-access_log common
</VirtualHost>
--記述例
--原則として、定義していないヴァーチャルホストは最初に書...
**Index表示のファイルアイコンをもっときれいにしてみる。 [...
-Apache で Option Indexes している場合、ディレクトリを指...
ディレクトリ一覧が表示される。
--アイコンが古い。。。
--きれいなものに差し替えてしまいましょう。
-デスクトップ環境 KDE のアイコンを使います。
-アイコンをコピーする
--mkdir /home/httproot/public_html/icons
--cp -R /var/www/icons/* /home/httproot/public_html/icons
---Apache オリジナルアイコン
--cp -R /usr/share/icons/crystalsvg/32x32/* /home/httproo...
---KDE アイコン
--chown -R httproot:httproot /home/httproot/public_html/i...
-設定の適用(アイコンのディレクトリを差し替える)
--vi /etc/httpd/conf/httpd.conf
#Alias /icons/ "/var/www/icons/"
Alias /icons/ "/home/httproot/public_html/icons/"
# apache の DocumentRoot が /home/httproot/public_html ...
#<Directory "/var/www/icons">
<Directory "/home/httproot/public_html/icons">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
# disable apache default icons
#AddIconByEncoding (CMP,/icons/compressed.gif) x-compres...
#AddIconByType (TXT,/icons/text.gif) text/*
#AddIconByType (IMG,/icons/image2.gif) image/*
#AddIconByType (SND,/icons/sound2.gif) audio/*
#AddIconByType (VID,/icons/movie.gif) video/*
#AddIcon /icons/binary.gif .bin .exe
#AddIcon /icons/binhex.gif .hqx
#AddIcon /icons/tar.gif .tar
#AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
#AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
#AddIcon /icons/a.gif .ps .ai .eps
#AddIcon /icons/layout.gif .html .shtml .htm .pdf
#AddIcon /icons/text.gif .txt
#AddIcon /icons/c.gif .c
#AddIcon /icons/p.gif .pl .py
#AddIcon /icons/f.gif .for
#AddIcon /icons/dvi.gif .dvi
#AddIcon /icons/uuencoded.gif .uu
#AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
#AddIcon /icons/tex.gif .tex
#AddIcon /icons/bomb.gif core
#AddIcon /icons/back.gif ..
#AddIcon /icons/hand.right.gif README
#AddIcon /icons/folder.gif ^^DIRECTORY^^
#AddIcon /icons/blank.gif ^^BLANKICON^^
# enable KDE icons
AddIconByEncoding (CMP,/icons/mimetypes/tgz.png) x-compr...
AddIconByType (TXT,/icons/mimetypes/txt.png) text/plain
AddIconByType (IMG,/icons/mimetypes/images.png) image/*
AddIconByType (SND,/icons/mimetypes/mime_audio.png) audi...
AddIconByType (VID,/icons/mimetypes/mime_video.png) vide...
AddIcon /icons/filesystems/exec.png .bin .exe
AddIcon /icons/mimetypes/binary.png .hqx
AddIcon /icons/mimetypes/tar.png .tar
AddIcon /icons/mimetypes/tgz.png .Z .z .tgz .gz .zip .lz...
AddIcon /icons/mimetypes/postscript.png .ps .ai .eps
AddIcon /icons/filesystems/www.png .html .shtml .htm
AddIcon /icons/mimetypes/text.png .txt
AddIcon /icons/mimetypes/source_c.png .c
AddIcon /icons/mimetypes/source_p.png .py
AddIcon /icons/mimetypes/dvi.png .dvi
AddIcon /icons/mimetypes/shellscript.png .sh .shar .csh ...
AddIcon /icons/mimetypes/tex.png .tex
AddIcon /icons/mimetypes/core.png core
AddIcon /icons/actions/1uparrow.png ..
AddIcon /icons/mimetypes/readme.png README
AddIcon /icons/filesystems/folder_open.png ^^DIRECTORY^^
AddIcon /icons/blank.gif ^^BLANKICON^^
# enable KDE icons (additional)(Apacheでは定義されてい...
AddIcon /icons/mimetypes/font_bitmap.png .fnt
AddIcon /icons/mimetypes/font_truetype.png .ttf .ttc
AddIcon /icons/mimetypes/log.png .log
AddIcon /icons/mimetypes/midi.png .mid
AddIcon /icons/mimetypes/pdf.png .pdf
AddIcon /icons/mimetypes/real.png .ra .ram
AddIcon /icons/mimetypes/rpm.png .rpm
AddIcon /icons/mimetypes/source_cpp.png .cpp
AddIcon /icons/mimetypes/source_h.png .h
AddIcon /icons/mimetypes/source_java.png .j .js
AddIcon /icons/mimetypes/wordpirocessing.png .doc
AddIcon /icons/mimetypes/spreadsheet.png .xls
AddIcon /icons/mimetypes/source_pl.png .conf .ini
AddIcon /icons/mimetypes/make.png .dll
AddIcon /icons/actions/compfile.png .lnk
AddIcon /icons/mimetypes/template_source.png .vbs
DefaultIcon /icons/mimetypes/empty.png
**ファイル一覧 (Options Indexes)が西ヨーロッパ言語(ISO)に...
-Options Indexes でファイル一覧を許可している場合~
ファイル一覧で日本語ファイル名を表示させると~
DefaultCharset だろうが mod_encoding だろうが何を設定して...
エンコードが 西ヨーロッパ言語(ISO)になってしまう。
--最近オプションが追加されたらしい。。。
--各ディレクティブ(Options Indexes を定義しているところ...
IndexOptions Charset=EUC-JP
--
**Tipsサイト [#h7119d9b]
-Linuxで自宅サーバ構築・管理: KSKNET
--http://www.ksknet.net/apache/post_151.html
**サイトにBasic認証をかける [#ve799d67]
-たとえば、http://server/~test/requireauth/ = /home/test/...
-vi /home/test/public_html/requireauth/.htaccess
AuthName "テスト認証です"
AuthType Basic
AuthUserFile /home/test/.htpasswd
require valid-user
--AuthNameは認証ダイアログに表示されるサイト名
--AuthUserFile は不可逆暗号化されたパスワードを保存するフ...
できれば公開ディレクトリ外に置いたほうが吉
-htpasswd -c /home/test/.htpasswd testuser
New password:
Re-type new password:
Adding password for user testuser
--ひとりひとりユーザを追加する
--2人目以降は -c はいらない
-ヒント
--[[Usermin>Tips/Linux/Usermin]]でwebブラウザ上から.htacc...
**サイトにDigest認証をかける [#wf834dfb]
-テスト中
--IEのバージョンによって、getメソッドのCGIがバグるとの噂。
**Option Indexesしたときの Welcome ページを無効化 [#a6ede...
-vi /etc/httpd/conf.d/welcome.conf
--全部コメントアウト
**httpからhttpsへリダイレクトする [#yc2e9d2e]
-vi .htaccess
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R...
*ユーザごとのホームディレクトリを作る [#b6618021]
-UserDir public_html を指定すると ~
/home/user/public_html = http://server/~user/ になる。
--デフォルトでユーザディレクトリに public_html は作られて...
各自作成させる必要がある。
---mkdir ~/public_html
---chmod 755 ~/public_html~
ディストリビューションによっては 700 かもしれないし、~
アクセス権限がデフォルトで自動的に設定してくれるかもしれ...
--新規ユーザ作成時に自動的に作るには
---mkdir /etc/skel/public_html
---chmod 755 /etc/skel/public_html
*/etc/httpd/conf.d/mod_encoding.conf [#n8a5025f]
-Options Indexes を有効化したとき、ファイルシステムの漢字...
--特にTrubolinux 10 server は、ファイルシステムはEUC-JPな...
--CentOS系は完全にUTF-8なので、問題ない模様。
# mod_encoding を有効化
EncodingEngine on
# サーバ側のファイルシステムの文字コード
#SetServerEncoding UTF-8
SetServerEncoding EUC-JP
NormalizeUsername on
# ブラウザ側のデフォルト文字コード
DefaultClientEncoding MSSJIS JA-AUTO-SJIS-MS
# 面倒だから Microsoft 仕様に設定している。
-注意点
--どうも "〜"(全角チルダ)はそれでも不安定になる模様
---ブラウザ上では表示されているが、リンク先の % エンコー...
*Suexecにする [#cf15bcc6]
-ApacheがCGIやphpを起動するとユーザapacheで動く。
--ログファイルや設定ファイルをapacheで作られると、削除で...
--アップするときにログやアップロード用のディレクトリを、...
--各ユーザ権限で動かしてしまえ。
-前提
--CentOS 6.3 x86_64
--コンパイルはしない。yumとかスクリプトにこだわる。
-設定変更
--mkdir /var/www/home
--mount --bind /home /var/www/home
---homeディレクトリを無理矢理/var/www/homeにマウントする。
---別パーティションや別サーバからmountしているならbindで...
--vi /etc/fstab
/home /var/www/home none bind 0 0
---再起動時に自動でマウント。
--chmod 701 /home/hoge
--chmod 701 /home/hoge/public_html
---もしOptions Indexesしているならpublic_htmlは704にする。
--vi /etc/httpd/conf/httpd.conf
<VirtualHost *:80>
ServerAdmin root@localhost
DocumentRoot /var/www/home/hoge/public_html
ServerName test.example.com
ErrorLog logs/test.example.com-error_log
CustomLog logs/test.example.com-access_log common
SuexecUserGroup user user
</VirtualHost>
---SuexecUserGroupを書くとそのユーザ・グループで起動する。
--''phpのFastCGIとSuexec対応''
--vi /etc/php.ini
user_ini.filename = ".user.ini"
---user-defined php.iniを有効化。
---FastCGIにすると.htaccessのphp_valueが反映されないため。
--vi /etc/httpd/conf.d/php.conf
#AddHandler php5-script .php
#AddType text/html .php
Action php-fcgi /cgi-bin/php-cgi
AddType php-fcgi .php
--ln -s /usr/bin/php-cgi /var/www/cgi-bin/php-cgi
--vi /etc/httpd/conf/httpd.conf
ScriptAlias /php-hoge /var/www/cgi-bin/hoge/php-hoge
<VirtualHost *:80>
ServerAdmin root@localhost
DocumentRoot /var/www/home/hoge/public_html
ServerName test.example.com
Action php-hoge /php-hoge
AddHandler php-hoge .php
</VirtualHost>
--mkdir /var/www/cgi-bin/hoge
--chmod 711 /var/www/cgi-bin/hoge
--chown hoge:hoge /var/www/cgi-bin/hoge
--vi /var/www/cgi-bin/hoge/php-hoge
#!/bin/sh
exec /usr/bin/php-cgi
--chmod 700 /var/www/cgi-bin/hoge/php-hoge
--chown hoge:hoge /var/www/cgi-bin/hoge/php-hoge
--/etc/init.d/httpd restart
-テスト用
--vi /home/hoge/public_html/whoami.cgi
#!/usr/bin/perl
print "Content-Type: text/plain;\n\n";
print "user: " . `whoami` . "\n";
exit 0;
--chmod 700 /home/hoge/public_html/whoami.cgi
---apacheではなく、ユーザ名が出てくるはず。
--vi /home/hoge/public_html/whoami.php
<?php
echo 'php is running as user: ' . exec('whoami');
?>
--chmod 600 /home/hoge/public_html/phpinfo.php
---おなじく、apacheではなく、ユーザ名が出てくるはず。
--vi /home/hoge/public_html/phpinfo.php
<?php
echo phpinfo();
?>
--chmod 600 /home/hoge/public_html/phpinfo.php
---Server APIにCGI/FastCGI、_SERVER["ORIG_SCRIPT_FILENAME...
-その他のフォロー
--各ディレクトリやファイルの権限
|ホームディレクトリ|701|
|public_htmlや各ディレクトリ|701|
|Option Indexesするディレクトリ|705|
|Webに公開するファイル|604|
|CGI(Perl, シェルなど)|700|
|php, 実行させない.pl, 見せないファイル|600|
---なお、CGIやphpに読み書きさせるディレクトリも701または7...
--session.save_pathの必要なphpの設定
---phpMyAdminなど、sessionを使うものはphp.iniのsession.sa...
---Suexecしているとユーザ権限で動くため、apache権限のフォ...
---.user.iniを有効にして、session.save_pathを/home/hoge/p...
-参考
--apache の FastCGI(mod_fcgid) で phpを動かしてみる - レ...
http://server-setting.info/centos/apache_fastcgi_fcgid_ph...
--SuEXECの設定 - メメメモモ~
http://memememomo.hatenablog.com/entry/20100716/1279258431
--yumで入れたapache+suexecのdocroot問題 - Nacky Snowland....
http://snowland.net/nucleus/item/2846
--suEXECのドキュメントルートを変更する - 片っ端からメモっ...
http://www.parlia.net/weblog/post/729.html/
--phpMyAdmin "Cannot start session without errors" - the ...
http://www.electrictoolbox.com/phpmyadmin-cannot-start-se...
**転送を圧縮する (mod_deflate) [#ifb100cb]
-vi /etc/httpd/conf.d/deflate.conf (新規作成)
<Location />
# テキストを圧縮対象にする
AddOutputFilterByType DEFLATE text/html text/plain tex...
# Netscape対策
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
# Microsoft Internet Explorerは何が何でも圧縮させる
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
# 圧縮比対応プロクシ対策
Header append Vary User-Agent env=!dont-vary
</Location>
-参考
--mod_deflateによるコンテンツの圧縮転送 - atmarkIT
---http://www.atmarkit.co.jp/ait/articles/0510/07/news107...
--Webサーバー間通信内容圧縮(mod_deflate) - CentOSで自宅サ...
---http://centossrv.com/apache-deflate.shtml
**DoS対策 (mod_evasive) [#q378573b]
-DoSで叩かれると鯖負荷だけでは無く、NW負荷も高くなり、プ...
--ApacheにDoS対策モジュールがあるので、インストールしてみ...
-CentOS6 + yum EPELレポジトリ
--yum install --enablerepo=epel mod_evasive
-設定
--vi /etc/httpd/conf.d/mod_evasive.conf
# モジュール有効化
LoadModule evasive20_module modules/mod_evasive20.so
<IfModule mod_evasive20.c>
# ハッシュテーブルのサイズ(よく分からないからデフォ...
DOSHashTableSize 3097
# しきい値
# DOSPageCount (pages) / DOSPageInterval (sec) ま...
# DOSSiteCount (pages) / DOSSiteInterval (sec) を...
# DOSBlockingPeriod (sec) の間そのIPには403を返す...
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 50
# アラート
DOSEmailNotify alert@example.com
# ログディレクトリ(拒否ったIPのファイル名ができあが...
DOSLogDir "/var/log/mod_evasive"
# ホワイトリスト
DOSWhitelist 127.0.0.1
DOSWhitelist 172.27.*.*
</IfModule>
-ログディレクトリ
--mkdir /var/log/mod_evasive
--chown apache:apache /var/log/mod_evasive
-アラートメールはPostfixか何か、/bin/mailxが稼働できる環...
-テスト
--ab -n 30 -c 10 http://example.com/
---abしてわざと引っかかってみる。
---ホワイトリストに入っていないまたは入れていないホストか...
---/var/log/messagesに以下のメッセージが出る。
Sep 11 15:15:00 websvr1 mod_evasive[13848]: Blacklisting...
possible DoS attack.
*php [#t7e00113]
**phpのアップロードサイズをディレクトリごとに設定する [#p...
-デフォルト
memory_limit = 128M
post_max_size = 8M
upload_max_filesize = 2M
- .htaccessで設定する(mod_phpで稼働している場合のみ有効)
php_value memory_limit 500M
php_value post_max_size 500M
php_value upload_max_filesize 500M
- .user.iniで設定する(mod_phpでもFastCGIでもどちらでも有...
memory_limit = 500M
post_max_size = 500M
upload_max_filesize = 500M
--/etc/php,iniでuser_ini.filename = ".user.ini"でuser-def...
**php 5.3にmcryptをRPMでインストールする [#p6ba2ffb]
-epelレポジトリをインストール
--rpm -ivh "http://ftp.riken.jp/Linux/fedora/epel/6/x86_6...
-epelレポジトリからmcryptをインストール
--yum --enablerepo=epel install php-mcrypt
**phpの複数バージョンを共存させる [#na717fd9]
-php5.6と7.2と7.3を1つのサーバで共存し、ユーザー単位で切...
--remiレポジトリのphp5.6をインストールしている環境に7.3を...
-インストール
--yum install php73-php php73-php-gd php73-php-mbstring p...
---お好みで
---php.iniは/etc/opt/remi/php73/に
-ローカルプロクシの設定変更
--sed -i '/pm = /s/dynamic/ondemand/' /etc/opt/remi/php73...
--sed -i "s/9000/9073/" /etc/opt/remi/php73/php-fpm.d/www...
-php.iniの設定変更
--vi /etc/opt/remi/php73/php.ini
user_ini.filename = ".user.ini"
;short_open_tag = Off
;output_buffering = 4096
mbstring.language = Japanese
mbstring.encoding_translation = Off
mbstring.detect_order = UTF-8,SJIS,EUC-JP,JIS,ASCII
-SuEXECで設定したユーザ権限スクリプト
--vi /var/www/cgi-bin/hoge/php-hoge
#!/bin/sh
#exec /usr/bin/php-cgi
exec /opt/remi/php73/root/usr/bin/php-cgi
-再起動
/etc/init.d/php73-php-fpm restart
/etc/init.d/httpd restart
終了行:
*Apache2 [#mf05a797]
-Turbolinux 10 server
--Apache 2 系の設定
--一般的な変更点のみ
-CentOS 5.6
--SELinuxとかconf.dとかを若干修正
**contents [#a6e85fef]
#contents
**/etc/httpd/conf/httpd.conf [#m1adf372]
-''Apache本体の設定''
-MaxRequestsPerChild 5000
--子プロセスあたりの最大リクエスト数
--指定数以上のリクエストを受けると子プロセスは自動的に再...
--メモリリーク対策
--0 で無制限
--StartServers, MinSpareServers, MaxSpareServers, MaxClie...
--Apache2から処理の種類に応じて設定できるようになった。~
けどよく分からないから全部同じにしている。
-ExtendedStatus On
--/server-status が見れるようになる。
--アクセス中のホスト名とかモジュールのバージョンが見える...
あまり設定すべきではない。
--後述の Location も設定すること
-User apache / Group apache
--Apacheの動作権限
-ServerAdmin sabakan@jamfunk.net
--管理者のメアド
--404の下部に表示される
-ServerName katae.jamfunk.jp:80
--サーバ名と標準ポート
-''ルートディレクトリの設定''
-DocumentRoot "/home/sabakan/public_html"
--http://katae.jamfunk.jp/ と指定したときのホームディレク...
--SELinuxが有効化されている状態で変更すると"documentroot ...
-<Directory />
<Directory />
Options All MultiViews
AllowOverride All
</Directory>
--/ (=DocumentRoot) の設定
--この設定では大開放設定なので、制限を付けてみても良いか...
--Apache 2.4系から書き方が変わったらしい
# Require all denied
Require all granted
-<Directory "/var/www/html">
#<Directory "/var/www/html">
#</Directory>
--/var/www/html を使わないならコメントアウトして良い。
--今回の場合では DocumentRoot を元々設定してあった /var/w...
-''ユーザディレクトリの設定''
-<IfModule mod_userdir.c>
<IfModule mod_userdir.c>
UserDir public_html
</IfModule>
--ユーザディレクトリのどこをルートにするか
--この場合、/homt/hoge/public_html/ = http://katae.jamfun...
-<Directory /home/*/public_html>
<Directory /home/*/public_html>
AllowOverride All
Options All MultiViews
</Directory>
--そのディレクトリの設定
--例によって大開放
-DirectoryIndex
DirectoryIndex index.html index.html.var index.html inde...
cgi index.php
--一行で
--ファイル名を省略したときに呼び出すファイル名
--左から順番に試される。
-''モジュールの設定''
-HostnameLookups Off
--ログに表示するアクセス元を逆引きするか
--処理が多くなると重くなるので、offの方が良いかも
-AliasMatch
AliasMatch ^/manual(?:/(?:de|en|fr|ja|ko|ru))?(/.*)?$ "/...
<Directory "/var/www/manual">
--/manual を公開する
--普通はいらないからこの項目を全てコメントアウトしても良...
-ScriptAlias
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
<Directory "/var/www/cgi-bin">
--CGIを別ディレクトリに置かせる
--頭がこんがらがるから切って良いと思う
-IndexOptions FancyIndexing FoldersFirst VersionSort Name...
--Options で All または Indexes を指定しているときに~
ディレクトリ指定でファイル一覧を表示させるときの形式
--NameWidth=* でファイル名が省略されるのを防げる
--後述の modencoding も参照
-ReadmeName / HeaderName
ReadmeName README.html
HeaderName HEADER.html
--Options Indexes でのヘッダとreadmeに表示するファイル
-''文字コードの設定''
-DefaultLanguage ja
--デフォルト言語
-LanguagePriority ja en da nl et fr de el it ko no pl pt ...
--言語優先度
--jaを頭に持ってきておいた方が無難
-AddDefaultCharset EUC-JP
--デフォルトの文字コード
--TL11S の場合、UTF-8 にすると全て UTF-8 で解釈されるので...
指定しない方が幸せになれるかも。
-''実行権限の設定''
-AddHandler cgi-script .cgi
--CGI実行権限を与える
-AddOutputFilter INCLUDES .shtml
--Server Side Include (SSI) を有効化
-''レスポンスの設定''
-<Location >
<Location /server-status>
<Location /server-info>
--前述の ExtendedStatus での詳細な設定
--アクセス制限をかけるべき
--Allow from .jamfunk.jp みたいな
-<IfModule mod_proxy.c>
#<IfModule mod_proxy.c>
#ProxyRequests On~
#<Proxy *>
--簡易プロクシ
--設定を間違えると[[CyberSyndorome:http://www.cybersyndro...
-''ヴァーチャルホストの設定''
-NameVirtualHost *:80
--ホスト名を利用したヴァーチャルホストを有効化する
-<VirtualHost *:80>
<VirtualHost *:80>
ServerAdmin sabakan@jamfunk.net
DocumentRoot /home/httproot/public_html
ServerName katae.jamfunk.jp
ErrorLog logs/httproot-error_log
CustomLog logs/httproot-access_log common
</VirtualHost>
--記述例
--原則として、定義していないヴァーチャルホストは最初に書...
**Index表示のファイルアイコンをもっときれいにしてみる。 [...
-Apache で Option Indexes している場合、ディレクトリを指...
ディレクトリ一覧が表示される。
--アイコンが古い。。。
--きれいなものに差し替えてしまいましょう。
-デスクトップ環境 KDE のアイコンを使います。
-アイコンをコピーする
--mkdir /home/httproot/public_html/icons
--cp -R /var/www/icons/* /home/httproot/public_html/icons
---Apache オリジナルアイコン
--cp -R /usr/share/icons/crystalsvg/32x32/* /home/httproo...
---KDE アイコン
--chown -R httproot:httproot /home/httproot/public_html/i...
-設定の適用(アイコンのディレクトリを差し替える)
--vi /etc/httpd/conf/httpd.conf
#Alias /icons/ "/var/www/icons/"
Alias /icons/ "/home/httproot/public_html/icons/"
# apache の DocumentRoot が /home/httproot/public_html ...
#<Directory "/var/www/icons">
<Directory "/home/httproot/public_html/icons">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
# disable apache default icons
#AddIconByEncoding (CMP,/icons/compressed.gif) x-compres...
#AddIconByType (TXT,/icons/text.gif) text/*
#AddIconByType (IMG,/icons/image2.gif) image/*
#AddIconByType (SND,/icons/sound2.gif) audio/*
#AddIconByType (VID,/icons/movie.gif) video/*
#AddIcon /icons/binary.gif .bin .exe
#AddIcon /icons/binhex.gif .hqx
#AddIcon /icons/tar.gif .tar
#AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
#AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
#AddIcon /icons/a.gif .ps .ai .eps
#AddIcon /icons/layout.gif .html .shtml .htm .pdf
#AddIcon /icons/text.gif .txt
#AddIcon /icons/c.gif .c
#AddIcon /icons/p.gif .pl .py
#AddIcon /icons/f.gif .for
#AddIcon /icons/dvi.gif .dvi
#AddIcon /icons/uuencoded.gif .uu
#AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
#AddIcon /icons/tex.gif .tex
#AddIcon /icons/bomb.gif core
#AddIcon /icons/back.gif ..
#AddIcon /icons/hand.right.gif README
#AddIcon /icons/folder.gif ^^DIRECTORY^^
#AddIcon /icons/blank.gif ^^BLANKICON^^
# enable KDE icons
AddIconByEncoding (CMP,/icons/mimetypes/tgz.png) x-compr...
AddIconByType (TXT,/icons/mimetypes/txt.png) text/plain
AddIconByType (IMG,/icons/mimetypes/images.png) image/*
AddIconByType (SND,/icons/mimetypes/mime_audio.png) audi...
AddIconByType (VID,/icons/mimetypes/mime_video.png) vide...
AddIcon /icons/filesystems/exec.png .bin .exe
AddIcon /icons/mimetypes/binary.png .hqx
AddIcon /icons/mimetypes/tar.png .tar
AddIcon /icons/mimetypes/tgz.png .Z .z .tgz .gz .zip .lz...
AddIcon /icons/mimetypes/postscript.png .ps .ai .eps
AddIcon /icons/filesystems/www.png .html .shtml .htm
AddIcon /icons/mimetypes/text.png .txt
AddIcon /icons/mimetypes/source_c.png .c
AddIcon /icons/mimetypes/source_p.png .py
AddIcon /icons/mimetypes/dvi.png .dvi
AddIcon /icons/mimetypes/shellscript.png .sh .shar .csh ...
AddIcon /icons/mimetypes/tex.png .tex
AddIcon /icons/mimetypes/core.png core
AddIcon /icons/actions/1uparrow.png ..
AddIcon /icons/mimetypes/readme.png README
AddIcon /icons/filesystems/folder_open.png ^^DIRECTORY^^
AddIcon /icons/blank.gif ^^BLANKICON^^
# enable KDE icons (additional)(Apacheでは定義されてい...
AddIcon /icons/mimetypes/font_bitmap.png .fnt
AddIcon /icons/mimetypes/font_truetype.png .ttf .ttc
AddIcon /icons/mimetypes/log.png .log
AddIcon /icons/mimetypes/midi.png .mid
AddIcon /icons/mimetypes/pdf.png .pdf
AddIcon /icons/mimetypes/real.png .ra .ram
AddIcon /icons/mimetypes/rpm.png .rpm
AddIcon /icons/mimetypes/source_cpp.png .cpp
AddIcon /icons/mimetypes/source_h.png .h
AddIcon /icons/mimetypes/source_java.png .j .js
AddIcon /icons/mimetypes/wordpirocessing.png .doc
AddIcon /icons/mimetypes/spreadsheet.png .xls
AddIcon /icons/mimetypes/source_pl.png .conf .ini
AddIcon /icons/mimetypes/make.png .dll
AddIcon /icons/actions/compfile.png .lnk
AddIcon /icons/mimetypes/template_source.png .vbs
DefaultIcon /icons/mimetypes/empty.png
**ファイル一覧 (Options Indexes)が西ヨーロッパ言語(ISO)に...
-Options Indexes でファイル一覧を許可している場合~
ファイル一覧で日本語ファイル名を表示させると~
DefaultCharset だろうが mod_encoding だろうが何を設定して...
エンコードが 西ヨーロッパ言語(ISO)になってしまう。
--最近オプションが追加されたらしい。。。
--各ディレクティブ(Options Indexes を定義しているところ...
IndexOptions Charset=EUC-JP
--
**Tipsサイト [#h7119d9b]
-Linuxで自宅サーバ構築・管理: KSKNET
--http://www.ksknet.net/apache/post_151.html
**サイトにBasic認証をかける [#ve799d67]
-たとえば、http://server/~test/requireauth/ = /home/test/...
-vi /home/test/public_html/requireauth/.htaccess
AuthName "テスト認証です"
AuthType Basic
AuthUserFile /home/test/.htpasswd
require valid-user
--AuthNameは認証ダイアログに表示されるサイト名
--AuthUserFile は不可逆暗号化されたパスワードを保存するフ...
できれば公開ディレクトリ外に置いたほうが吉
-htpasswd -c /home/test/.htpasswd testuser
New password:
Re-type new password:
Adding password for user testuser
--ひとりひとりユーザを追加する
--2人目以降は -c はいらない
-ヒント
--[[Usermin>Tips/Linux/Usermin]]でwebブラウザ上から.htacc...
**サイトにDigest認証をかける [#wf834dfb]
-テスト中
--IEのバージョンによって、getメソッドのCGIがバグるとの噂。
**Option Indexesしたときの Welcome ページを無効化 [#a6ede...
-vi /etc/httpd/conf.d/welcome.conf
--全部コメントアウト
**httpからhttpsへリダイレクトする [#yc2e9d2e]
-vi .htaccess
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R...
*ユーザごとのホームディレクトリを作る [#b6618021]
-UserDir public_html を指定すると ~
/home/user/public_html = http://server/~user/ になる。
--デフォルトでユーザディレクトリに public_html は作られて...
各自作成させる必要がある。
---mkdir ~/public_html
---chmod 755 ~/public_html~
ディストリビューションによっては 700 かもしれないし、~
アクセス権限がデフォルトで自動的に設定してくれるかもしれ...
--新規ユーザ作成時に自動的に作るには
---mkdir /etc/skel/public_html
---chmod 755 /etc/skel/public_html
*/etc/httpd/conf.d/mod_encoding.conf [#n8a5025f]
-Options Indexes を有効化したとき、ファイルシステムの漢字...
--特にTrubolinux 10 server は、ファイルシステムはEUC-JPな...
--CentOS系は完全にUTF-8なので、問題ない模様。
# mod_encoding を有効化
EncodingEngine on
# サーバ側のファイルシステムの文字コード
#SetServerEncoding UTF-8
SetServerEncoding EUC-JP
NormalizeUsername on
# ブラウザ側のデフォルト文字コード
DefaultClientEncoding MSSJIS JA-AUTO-SJIS-MS
# 面倒だから Microsoft 仕様に設定している。
-注意点
--どうも "〜"(全角チルダ)はそれでも不安定になる模様
---ブラウザ上では表示されているが、リンク先の % エンコー...
*Suexecにする [#cf15bcc6]
-ApacheがCGIやphpを起動するとユーザapacheで動く。
--ログファイルや設定ファイルをapacheで作られると、削除で...
--アップするときにログやアップロード用のディレクトリを、...
--各ユーザ権限で動かしてしまえ。
-前提
--CentOS 6.3 x86_64
--コンパイルはしない。yumとかスクリプトにこだわる。
-設定変更
--mkdir /var/www/home
--mount --bind /home /var/www/home
---homeディレクトリを無理矢理/var/www/homeにマウントする。
---別パーティションや別サーバからmountしているならbindで...
--vi /etc/fstab
/home /var/www/home none bind 0 0
---再起動時に自動でマウント。
--chmod 701 /home/hoge
--chmod 701 /home/hoge/public_html
---もしOptions Indexesしているならpublic_htmlは704にする。
--vi /etc/httpd/conf/httpd.conf
<VirtualHost *:80>
ServerAdmin root@localhost
DocumentRoot /var/www/home/hoge/public_html
ServerName test.example.com
ErrorLog logs/test.example.com-error_log
CustomLog logs/test.example.com-access_log common
SuexecUserGroup user user
</VirtualHost>
---SuexecUserGroupを書くとそのユーザ・グループで起動する。
--''phpのFastCGIとSuexec対応''
--vi /etc/php.ini
user_ini.filename = ".user.ini"
---user-defined php.iniを有効化。
---FastCGIにすると.htaccessのphp_valueが反映されないため。
--vi /etc/httpd/conf.d/php.conf
#AddHandler php5-script .php
#AddType text/html .php
Action php-fcgi /cgi-bin/php-cgi
AddType php-fcgi .php
--ln -s /usr/bin/php-cgi /var/www/cgi-bin/php-cgi
--vi /etc/httpd/conf/httpd.conf
ScriptAlias /php-hoge /var/www/cgi-bin/hoge/php-hoge
<VirtualHost *:80>
ServerAdmin root@localhost
DocumentRoot /var/www/home/hoge/public_html
ServerName test.example.com
Action php-hoge /php-hoge
AddHandler php-hoge .php
</VirtualHost>
--mkdir /var/www/cgi-bin/hoge
--chmod 711 /var/www/cgi-bin/hoge
--chown hoge:hoge /var/www/cgi-bin/hoge
--vi /var/www/cgi-bin/hoge/php-hoge
#!/bin/sh
exec /usr/bin/php-cgi
--chmod 700 /var/www/cgi-bin/hoge/php-hoge
--chown hoge:hoge /var/www/cgi-bin/hoge/php-hoge
--/etc/init.d/httpd restart
-テスト用
--vi /home/hoge/public_html/whoami.cgi
#!/usr/bin/perl
print "Content-Type: text/plain;\n\n";
print "user: " . `whoami` . "\n";
exit 0;
--chmod 700 /home/hoge/public_html/whoami.cgi
---apacheではなく、ユーザ名が出てくるはず。
--vi /home/hoge/public_html/whoami.php
<?php
echo 'php is running as user: ' . exec('whoami');
?>
--chmod 600 /home/hoge/public_html/phpinfo.php
---おなじく、apacheではなく、ユーザ名が出てくるはず。
--vi /home/hoge/public_html/phpinfo.php
<?php
echo phpinfo();
?>
--chmod 600 /home/hoge/public_html/phpinfo.php
---Server APIにCGI/FastCGI、_SERVER["ORIG_SCRIPT_FILENAME...
-その他のフォロー
--各ディレクトリやファイルの権限
|ホームディレクトリ|701|
|public_htmlや各ディレクトリ|701|
|Option Indexesするディレクトリ|705|
|Webに公開するファイル|604|
|CGI(Perl, シェルなど)|700|
|php, 実行させない.pl, 見せないファイル|600|
---なお、CGIやphpに読み書きさせるディレクトリも701または7...
--session.save_pathの必要なphpの設定
---phpMyAdminなど、sessionを使うものはphp.iniのsession.sa...
---Suexecしているとユーザ権限で動くため、apache権限のフォ...
---.user.iniを有効にして、session.save_pathを/home/hoge/p...
-参考
--apache の FastCGI(mod_fcgid) で phpを動かしてみる - レ...
http://server-setting.info/centos/apache_fastcgi_fcgid_ph...
--SuEXECの設定 - メメメモモ~
http://memememomo.hatenablog.com/entry/20100716/1279258431
--yumで入れたapache+suexecのdocroot問題 - Nacky Snowland....
http://snowland.net/nucleus/item/2846
--suEXECのドキュメントルートを変更する - 片っ端からメモっ...
http://www.parlia.net/weblog/post/729.html/
--phpMyAdmin "Cannot start session without errors" - the ...
http://www.electrictoolbox.com/phpmyadmin-cannot-start-se...
**転送を圧縮する (mod_deflate) [#ifb100cb]
-vi /etc/httpd/conf.d/deflate.conf (新規作成)
<Location />
# テキストを圧縮対象にする
AddOutputFilterByType DEFLATE text/html text/plain tex...
# Netscape対策
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
# Microsoft Internet Explorerは何が何でも圧縮させる
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
# 圧縮比対応プロクシ対策
Header append Vary User-Agent env=!dont-vary
</Location>
-参考
--mod_deflateによるコンテンツの圧縮転送 - atmarkIT
---http://www.atmarkit.co.jp/ait/articles/0510/07/news107...
--Webサーバー間通信内容圧縮(mod_deflate) - CentOSで自宅サ...
---http://centossrv.com/apache-deflate.shtml
**DoS対策 (mod_evasive) [#q378573b]
-DoSで叩かれると鯖負荷だけでは無く、NW負荷も高くなり、プ...
--ApacheにDoS対策モジュールがあるので、インストールしてみ...
-CentOS6 + yum EPELレポジトリ
--yum install --enablerepo=epel mod_evasive
-設定
--vi /etc/httpd/conf.d/mod_evasive.conf
# モジュール有効化
LoadModule evasive20_module modules/mod_evasive20.so
<IfModule mod_evasive20.c>
# ハッシュテーブルのサイズ(よく分からないからデフォ...
DOSHashTableSize 3097
# しきい値
# DOSPageCount (pages) / DOSPageInterval (sec) ま...
# DOSSiteCount (pages) / DOSSiteInterval (sec) を...
# DOSBlockingPeriod (sec) の間そのIPには403を返す...
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 50
# アラート
DOSEmailNotify alert@example.com
# ログディレクトリ(拒否ったIPのファイル名ができあが...
DOSLogDir "/var/log/mod_evasive"
# ホワイトリスト
DOSWhitelist 127.0.0.1
DOSWhitelist 172.27.*.*
</IfModule>
-ログディレクトリ
--mkdir /var/log/mod_evasive
--chown apache:apache /var/log/mod_evasive
-アラートメールはPostfixか何か、/bin/mailxが稼働できる環...
-テスト
--ab -n 30 -c 10 http://example.com/
---abしてわざと引っかかってみる。
---ホワイトリストに入っていないまたは入れていないホストか...
---/var/log/messagesに以下のメッセージが出る。
Sep 11 15:15:00 websvr1 mod_evasive[13848]: Blacklisting...
possible DoS attack.
*php [#t7e00113]
**phpのアップロードサイズをディレクトリごとに設定する [#p...
-デフォルト
memory_limit = 128M
post_max_size = 8M
upload_max_filesize = 2M
- .htaccessで設定する(mod_phpで稼働している場合のみ有効)
php_value memory_limit 500M
php_value post_max_size 500M
php_value upload_max_filesize 500M
- .user.iniで設定する(mod_phpでもFastCGIでもどちらでも有...
memory_limit = 500M
post_max_size = 500M
upload_max_filesize = 500M
--/etc/php,iniでuser_ini.filename = ".user.ini"でuser-def...
**php 5.3にmcryptをRPMでインストールする [#p6ba2ffb]
-epelレポジトリをインストール
--rpm -ivh "http://ftp.riken.jp/Linux/fedora/epel/6/x86_6...
-epelレポジトリからmcryptをインストール
--yum --enablerepo=epel install php-mcrypt
**phpの複数バージョンを共存させる [#na717fd9]
-php5.6と7.2と7.3を1つのサーバで共存し、ユーザー単位で切...
--remiレポジトリのphp5.6をインストールしている環境に7.3を...
-インストール
--yum install php73-php php73-php-gd php73-php-mbstring p...
---お好みで
---php.iniは/etc/opt/remi/php73/に
-ローカルプロクシの設定変更
--sed -i '/pm = /s/dynamic/ondemand/' /etc/opt/remi/php73...
--sed -i "s/9000/9073/" /etc/opt/remi/php73/php-fpm.d/www...
-php.iniの設定変更
--vi /etc/opt/remi/php73/php.ini
user_ini.filename = ".user.ini"
;short_open_tag = Off
;output_buffering = 4096
mbstring.language = Japanese
mbstring.encoding_translation = Off
mbstring.detect_order = UTF-8,SJIS,EUC-JP,JIS,ASCII
-SuEXECで設定したユーザ権限スクリプト
--vi /var/www/cgi-bin/hoge/php-hoge
#!/bin/sh
#exec /usr/bin/php-cgi
exec /opt/remi/php73/root/usr/bin/php-cgi
-再起動
/etc/init.d/php73-php-fpm restart
/etc/init.d/httpd restart
ページ名: