#author("2021-06-17T05:30:42+00:00","default:src128","src128") #author("2021-06-17T05:49:40+00:00","default:src128","src128") &tag(Apache/設定一般); *目次 [#j0d3272b] #contents *関連ページ [#q399df94] *参考情報 [#aa141fe9] *設定ファイルに関して [#wc107eac] **Apache2.4の場合 [#y51b34c0] -Apache2.4ではhttpd.confから以下のようにしてディレクトリ内の部分設定を読み込むようになっている。 #pre{{ IncludeOptional conf.d/*.conf }} -[[conf.d配下のファイル名は気をつけよう | OpenGroove:https://open-groove.net/apache/conf-d-filename/]]にあるように、無闇にバックアップファイルを作成すると、そちらも読み込まれるので注意。一応.conf.bak、.conf~などはマッチしないと思われる。 *UserDirまわり [#xc81d838] **public_htmlを公開する [#w6594c02] ***参考情報 [#md4d3a40] -[[php のCGIモードを有効にする-suEXECには php の cgi モードが欠かせない - それマグで!:http://takuya-1st.hatenablog.jp/entry/20110903/1315008329]] ***基本概念 [#jb76ce5f] -mod_userdirはユーザーディレクトリをマッピングする能力は持っているが、パーミッションに関する設定をうまいことやってくれる機能はない。 -このためApacheの実行ユーザーやグループの権限によってpublic_htmlにアクセスできない場合もある。そのために必要なのがグループでの読み書き宣言、その他読み書き宣言などが必要となる。 -だたしその設定を行っても例えばPHPモジュール版でファイルを作るとApacheの実行ユーザーやグループがオーナーとなってしまう(例えばwordpress popular postsでサムネイルを作った場合)。 -これを回避する機能がsuEXECで、この機能を使う場合PHPをcgiとして実行する必要がある。 -たとえばさくらのレンタルサーバーでPHPがcgiモードで実行されているのは、このためだと思われる。 ***設定 [#te91305d] -[[CentOS 7: httpdのuserdirモジュールでpublic_htmlを公開する - Narrow Escape:https://www.hiroom2.com/2016/06/03/centos-7-httpd%E3%81%AEuserdir%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%E3%81%A7%EF%BD%90ublic-html%E3%82%92%E5%85%AC%E9%96%8B%E3%81%99%E3%82%8B/]]…パーミッションなど -[[CentOS7のapacheでUserdirを有効にする - Qiita:http://qiita.com/tukiyo3/items/6fa33a7f0c37e446cc2a]] -設定ファイルの変更/etc/httpd/conf.d/userdir.confを変更する。 #pre{{ UserDir enable UserDir public_html }} -このままで例えばhttp://localhost/~tanaka/のようにアクセスできるかと思いきや「Forbidden: You don't have permission to access / on this server.」でエラーが発生する。 -原因はhttpdを動かしているapacheユーザーが/home/tanaka/public_htmlにアクセスできないため。 -otherユーザーにアクセスを許可する場合以下のように設定 #pre{{ chmod 701 /home/tanaka chmod 701 /home/tanaka/public_html }} -その他710にしてchownでapacheグループに設定する方法もある。他のユーザーに見られてもいい場合chmodだけですますほうが簡単かも。 -さらに不明なエラーが発生した場合SELinuxを無効化してためしてみる。 *モジュール関連 [#h83169ca] -有効なモジュールを一覧表示。 apachectl -t -D DUMP_MODULES *VirtualHost [#t0488f90] -最初のエントリをダミーとして使うと安全。[[[Apache]意外と知られていない(と思う)VirtualHostの「デフォルト」の活用方法 · DQNEO日記:http://dqn.sakusakutto.jp/2011/07/apachevirtualhost.html]] *環境変数 [#fa11a097] -SetEnvなどが使える。ダブルクォートの意味はシェルと同じか。 SetEnv "abc" #同じ? SetEnv xyz -エスペープまわり。 [[environment variables - How to escape spaces in Apache SetEnvIf value - Server Fault:https://serverfault.com/questions/496202/how-to-escape-spaces-in-apache-setenvif-value]]