Apacheの設定について

このQ&Aのポイント
  • Apacheの設定に関しては、ブラウザから見えるディレクトリを変更する方法について説明します。
  • 具体的には、Apacheの設定ファイルを編集し、DocumentRootのパスを変更することで実現できます。
  • 設定ファイルの場所としては、通常は/etc/httpd/conf/httpd.confになります。
回答を見る
  • ベストアンサー

Apacheの設定について

OSはRedhatLinux7.1 Apache_1.3.26 php-4.2.3 mysql-3.23.52 を使っています。 WebサーバにApacheを使っており、 今は /usr/local/apache/htdocs の下に直接ファイルやディレクトリを置いてブラウザから見ています。 しかし、例えば、 /home/master/public_html の下に置いてあるファイルやディレクトリもブラウザから見えるようにするにはどのようにすればよいのですか? apacheの設定を変えればよいのかなと思うのですが、どこをどのように変えればよいのかわからず困っています。 アドバイスお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • xjd
  • ベストアンサー率63% (1021/1612)
回答No.1

私が別の方に説明してますので参考にしてください。 ------------------------------------------- 文字だけで説明するのはむずかしいですね。 (httpd.conf 箇所1) こんな感じです。 # 127.0.0.1 is the TCP/IP local loop-back address, often named localhost. Your # machine always knows itself by this address. If you use Apache strictly for # local testing and development, you may use 127.0.0.1 as the server name. # ServerName localhost.localdomain (httpd.conf 箇所2) # # UserDir: The name of the directory which is appended onto a user's home # directory if a ~user request is received. # <IfModule mod_userdir.c>   UserDir public_html </IfModule> (httpd.conf 箇所3) # # 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   <Limit GET POST OPTIONS PROPFIND>     Order allow,deny     Allow from all   </Limit>   <LimitExcept GET POST OPTIONS PROPFIND>     Order deny,allow     Deny from all   </LimitExcept> </Directory> (httpd.conf 箇所4) # # DirectoryIndex: Name of the file or files to use as a pre-written HTML # directory index. Separate multiple entries with spaces. # <IfModule mod_dir.c>   DirectoryIndex index.html </IfModule> (ファイル・ディレクトリの権限) drwxr-xr-x 6 root root 1024 Dec 7 19:08 /home drwxr-xr-x 22 hoge hoge 1024 Jan 8 01:20 /home/hoge drwxr-xr-x 3 hoge hoge 1024 Jan 8 01:13 /home/hoge/public_html -rw-r--r-- 1 hoge hoge 53 Dec 19 16:26 /home/home/public_html/index.html よけいなオプションもありますが、上記のように必要箇所の#記号をとるだけで、とりあえずユーザ配下のhtmlが表示できるはずですが。

参考URL:
http://www.okweb.ne.jp/kotaeru.php3?q=439489
emitika
質問者

お礼

くわしい説明ありがとうございました。

関連するQ&A

  • apache2.0のhtdocs

    apache2.0でドキュメントルートが/usr/local/apache2/htdocsであるとします。 HP公開はユーザーディレクトリのみで、 もし、htdocsにアクセスしてきた場合、あるユーザーディレクトリ(例:/home/taro/public_html)にアクセスさせたい場合どのようにすればよいでしょうか? また、エラードキュメントを返したい場合はどのようにすればよろしいでしょうか? ご存知の方、宜しくお願いいたします。

  • apacheのhtdocs

    毎度、お世話になってます。 またくだらない質問かもしれないのですが、 apache で、htmlドキュメントその他いわゆるWebページとして 公開するファイルを置くディレクトリに良く見られるのが /usr/local/apahce/htdocs 等だと思われます。 ですが、私の環境(FreeBSD Release6.1+Apache1.3.34)だと インストール後のデフォルトが /usr/local/www/data になってる ようです。いわゆるレンタルサーバなどの場合、前者/usr/local/apache/htdocs みたいなのを良く見かけたのですが (OSはFreeBSDのバージョン違い)これって、違ってるのが普通 なんでしょうか。 個人的感覚からして、こういうディレクトリ構造ってある程度 似通ってるのが普通なんじゃないかと思っていたのですが。

  • Apache+SuexecでForbidden

    Apache 2.4.18 + PHP 5.6.18 で Suexec VirtualHost & Suexecを用いて、PHPの実行権を 各VirtualHostで異なるようにしたいのですが gdtest.php を /usr/local/apache2/htdocs に置いて http://172.16.72.152/gdtest.php では正常動作しますが gdtest.php を /home/user1/public_html に置いて http://dummy-host1.XXXXXXX.jp/gdtest.php では Forbidden You don't have permission to access /php-user1/php_user-cgi/gdtest.php on this server と表示されます。 以下に当方の情報をお示しますので、どこが間違っているのか ご指摘いだだけますようお願いいたします。 1.Apache config ./configure --prefix=/usr/local/apache2 \ --with-apr=/usr/local/apr/apr-1.5.2 \ --with-apr-util=/usr/local/apr-util/apr-util-1.5.4 \ --with-pcre=/usr/local/pcre/pcre-8.38 \ --with-mpm=prefork \ --with-suexec-userdir=public_html \ --with-suexec-docroot=/home \ --with-suexec-caller=daemon \ --enable-suexec apache は User daemon, Group daemon で動作する 2.PHP config phpinfo()で確認 Configure Command : './configure' '--enable-mbstring=ja' '--enable-bcmath' '--with-gd' '--with-freetype-dir=/usr/include/' '--with-png-dir=/usr/include' '--with-jpeg-dir=/usr/include' Server API : CGI/FastCGI Virtual Directory Support : disabled Loaded Configuration File : /usr/local/lib/php.ini : 3.Virtual Hostは正常動作 /usr/local/apache2/conf/extra/httpd-vhosts.conf # 1st priority <VirtualHost 172.16.72.152:80> ServerAdmin root@172.16.72.152 DocumentRoot "/usr/local/apache2/htdocs" ServerName 172.16.72.152:80 ErrorLog "logs/error_log" CustomLog "logs/access_log" common ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/" <Directory "/usr/local/apache2/htdocs"> Options Indexes FollowSymLinks AllowOverride All Action php56 /cgi-bin/php56-cgi AddHandler php56 .php Require all granted </Directory> </VirtualHost> # 2nd priority <VirtualHost 172.16.72.152:80> ServerAdmin root@172.16.72.152 DocumentRoot "/home/user1/public_html" ServerName dummy-host1.XXXXXXX.jp ErrorLog "logs/dummy-host1-error_log" CustomLog "logs/dummy-host1-access_log" common SuexecUserGroup user1 user1 ScriptAlias /cgi-bin/ "/home/user1/cgi-bin/" Action php_user1 /cgi-bin/php_user1-cgi AddHandler php_user1 .php <Directory "/home/user1/public_html"> Options Indexes FollowSymLinks Includes ExecCGI AllowOverride All Require all granted </Directory> </VirtualHost> 4.suexec -V -D AP_DOC_ROOT="/home" -D AP_GID_MIN=100 -D AP_HTTPD_USER="daemon" -D AP_LOG_EXEC="/usr/local/apache2/logs/suexec_log" -D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin" -D AP_UID_MIN=100 -D AP_USERDIR_SUFFIX="public_html" 5. httpd -M Loaded Modules: core_module (static) so_module (static) http_module (static) mpm_prefork_module (static) authn_file_module (shared) authn_core_module (shared) authz_host_module (shared) authz_groupfile_module (shared) authz_user_module (shared) authz_core_module (shared) access_compat_module (shared) auth_basic_module (shared) reqtimeout_module (shared) filter_module (shared) mime_module (shared) log_config_module (shared) env_module (shared) headers_module (shared) setenvif_module (shared) version_module (shared) unixd_module (shared) status_module (shared) autoindex_module (shared) suexec_module (shared) cgid_module (shared) vhost_alias_module (shared) dir_module (shared) actions_module (shared) userdir_module (shared) alias_module (shared) 6. directory, file関係 755 user1 user1 /home/user1/cgi-bin <-- daemon でも変わらない 755 user1 user1 /home/user1/cgi-bin/php_user1-cgi cgi版phpである /usr/local/apache2/cgi-bin/pgp56-cgi を php_user1-cgi としてコピー 755 user1 user1 /home/user1/public_html/gdtest.php /home, /home/user1 もパーミッションは 755 7. log messages 172.16.72.152 - - [09/Feb/2016:15:13:30 +0900] "GET /gdtest.php HTTP/1.1" 403 241 [/usr/local/apache2/logs/dummy-host1-error_log] [Tue Feb 09 15:13:] [authz_core:error] [pid 4905] [client 172.16.72.152:43902] AH01630: client denied by server configuration: /home/user1/cgi-bin/php_user1-cgi

  • Apache2で仮想ディレクトリ(alias)の設定について

    お世話になります。 下記の環境で社内WEBサーバを構築しています。 OS:CentOS4.4 httpd:Apache2.0.61 httpd.confの内容 ServerRoot "/usr/local/apache" User apache Group apache DocumentRoot "/usr/local/apache/htdocs" <Directory "/usr/local/apache/htdocs"> Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory> Alias /icons/ "/usr/local/apache/icons/" <Directory "/usr/local/apache/icons"> Options Indexes MultiViews AllowOverride None Order allow,deny Allow from all </Directory> Alias /info/ "/home/info/" <Directory "/home/info"> AllowOverride None Order allow,deny Allow from all </Directory> 上記のようなhttpd.confを書いて、 "/home/info/"以下のファイルに"www.example.co.jp/info/"で アクセスしたいと考えています。 しかしブラウザから確認をすると、 You don't have permission to access /info/index.htm on this server. Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request. のエラーが表示されます。(当然、希望するページは表示されません) 実際のディレクトリのパーミッションも確認しましたが、設定されているように思えます。(私の知識不足、誤認識であれば指摘ください。) drwxr-xr-x 6 root root /home drwxrw-r-x 2 info apache /home/info "/home/info"には766・755・744のどれをあてても同じ結果です。 また、"/home/info"以下のファイル"index.htm"は存在を確認し、 パーミッションも下記のように確認しています。 -rwxr-xr-x 1 root root index.htm ファイルの所有者・グループは"root"になっていますが、これはテスト的に作成したもので、実際の運用は"info"ユーザで作成されます。 httpd.confやパーミッションの設定で間違っているところがあれば ご指摘をおねがいいたします。 また情報が不足していましたら、補足に載せますのでご指摘をお願いします。

  • apacheのCGI設定

     pc9821にFreeBSD(98)をいれapache1.3を起動させています。cgiはlight.cgiというソフトをつかっています。なかなかcgiがうまくいきません。参考ページには public_html / index.html (トップページ) | +-- bbs / light.cgi [755] | admin.cgi [755] ・・・・(省略) +-- lock [777] / | +-- past [777] / 0001.cgi [666] とかかれていますが、実際に私のサーバーにはpublic_htmlというフォルダは存在していなくて /usr/local/www/cgi-binにbbsというフォルダをつくり あとは上のようにしています。またindex.htmlは/usr/local/www/dataのなかにいれて表示してWebサーバーとしてはたらいています。またapacheの/usr/local/etc/apacheのhttpd.confは 関係ありそうな行だけあげると ServerRoot "/usr/local" DocumentRoot "/usr/local/www/cgi-bin" <Directory "/usr/local/www/cgi-bin/bbs"> Options Indexes FollowSymLinks MultiViews <location "/cgi-bin/"> Options ExecCGI AllowOverride AuthConfig Limit Order allow ,deny Allow from all </Location> <IfModule mod_mime.c> TypesConfig /usr/local/etc/apache/mime.types ADDHandler cgi-script .cgi </IfModule> ScriptAlias /cgi-bin/ "/usr/local/www/cgi-bin/" <Directory "/usr/local/www/cgi-bin/bbs"> AllowOverride None Options ExecCGI Order allow,deny Allow from all </Directory> AddHandler cgi-script .cgi どこがおかしいのかおしえていただけないでしょうか?

    • ベストアンサー
    • CGI
  • apache1.3でのUserDir設定について

    apache1.3.37を使用してます。 httpd.confを下記のようにして、UserDirを有効にしてます。 <IfModule mod_userdir.c> UserDir /home/*/public_html/index.html <Directory /home/*/public_html> AllowOverride All </Directory> </IfModule> ※UserDir関連では上記以外変更してません。 この設定で、http://www.xxxx.jp/~useridを開き /home/userid/public_html/index.htmlは表示されるのですが、 画像ファイル等だけ、DocumentRootに指定したディレクトリを 見に行ってしまいます。(エラーログにて確認) 当然、画像はDocumentRootで指定したディレクトリではなく 、/home/userid/public_htmlに入ってるので表示されず ×マークになります。 画像ファイル等も/home/userid/public_html直下から参照したいのですが どのようにすれば良いでしょうか? 設定が不足してるのでしょうか? また、/home/userid/public_html配下にcgiと言うディレクトリを 作成し、CGIを動作させたいのですが、その場合どのような設定を 追加すればよいのでしょうか? よろしくお願いします。

  • apacheでcgiが動きません

    apacheをインストールし設定を行っていますがCGIが動いてくれません。 具体的にはCGIのソースがそのまま表示されてしまいます。 ネットを調べてみても <Directory /home/ultra/public_html> Options +ExecCGI AddHandler cgi-script .cgi .pl </Directory> を追加すれば動くような事が書いてありますがこの設定では動いてくれないようです。 何か根本的に間違っていることをしているのでしょうか。 アパッチのバージョンは以下のとおりです。 Server version: Apache/2.4.3 (Unix) suexecで動かしたくsuexecの設定もしていますが、 ログにsuexecのログが生成されないのでその前の段階かと思うのですが・・。 エラーログなどは特に表示されません。cgiのソースが20xで返されているので 当たり前かもしれませんが .コンパイル前の /configreは以下のように設定しました。 ./configure --enable-mbstring \ --enable-mbstr-enc-trans \ --enable-mbregex \ --enable-i18n \ --with-xml \ --with-mysql=/usr/local/mysql \ --with-pgsql=/usr/local/pgsql \ --enable-track-vars \ --enable-discard-path \ --with-gd \ --enable-gd-native-ttf \ --with-zlib-dir=/usr/local \ --with-pdflib=/usr/local \ --enable-shared-pdflib \ --enable-exif \ --disable-debug \ --enable-debug=no \ --enable-debugger=yes \ --enable-memory-limit=yes \ --enable-magic-quotes=yes \ --with-exec-dir=/usr/bin \ --without-system-regex \ --with-dbase=yes \ --enable-bcmath=yes \ --enable-ftp \ --enable-sockets \ --disable-posix-threads \ --enable-xsl \ --enable-xslt \ --with-xslt-sablot \ --with-xsl=/usr/local \ --with-dom=/usr/local \ --with-dom-xslt=/usr/local \ --enable-soap \ --enable-simplexml \ --with-gettext=/usr/local \ --enable-sqlite-utf8 \ --with-pdo-mysql=/usr/local/mysql \ --with-pdo-pgsql=/usr/local/pgsql \ --with-pdo-sqlite=/usr/local \ --with-curl=/usr/local/lib \ --with-openssl=/usr/local/openssl \ --with-mcrypt=/usr/local \ --with-iconv=/usr/local \ --with-xmlrpc \ --enable-safe-mode \ --enable-ssl \ --enable-dav \ --enable-so \ --enable-suexec \ --with-suexec-caller=apache \ --with-suexec-userdir=public_html \ --with-suexec-docroot=/home \ --with-suexec-logfile=/usr/local/apache2/logs/suexec_log \ --with-suexec-uidmin=500 \ --with-suexec-gidmin=100 ご回答よろしくお願いいたします

  • apacheの設定

    Linuxの初心者です。 CentOSを使っていて、apacheの起動スクリプトの作成・実行権限の付与、ユーザの作成などが終わり、実際に起動させようと /etc/init.d/httpd start とやっても、以下のようなエラーメッセージが出ます。 Starting httpd: Syntax error on line 18 of /usr/local/apache/conf/httpd.conf: Cannot load /usr/local/apache/modules/libphp4.so into server: /usr/local/apache/modules/libphp4.so: cannot open shared object file: No such file or directory これの意味していることは何でしょうか? どうしたら解決できるでしょうか? よろしくお願いします。

  • 同サーバー内のファイルの存在確認ができません

    ※説明の為相対パスで書かせていただきます。 ↓本ファイルの設置ディレクトリ /usr/local/apache/htdocs/admin/check.php $img="/home/monky/www/monky.jp/img/1.jpg"; $chk=(file_exists($img))?TRUE:FALSE; ↑とするとエラーがでました。 このPHPとIMGファイルは以下のように、 /usr/local/apache/htdocs/admin/check.php /home/monky/www/monky.jp/img/1.jpg 階層が全然違いますが、同サーバー内です。 fopenやfile_get_contentsなどURLで指定すれば存在確認ができたのですが、動作が遅すぎなので、なんとかfile_existsで行いたいです。 この場合はどうすればうまくいくのでしょうか??

    • ベストアンサー
    • PHP
  • RedHat7.3 apache-2 ユーザーのページが見れない。

    ブラウザを立ち上げて http://localhost/ ってやると/usr/local/apache2/htdocs/index.htmlが見えるのですが、 taroというユーザーを作ってホームディレクトリのしたに ~taro/public_html/index.html をつくってやると Forbidden You don't have permission to access /~taro on this server. Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request. Apache/2.0.39 Server at localhost Port 80 といわれちゃいます。ちなみに.httpd.confの中の所では #UserDir public_html <IfModule mod_userdir.c> UserDir public_html </IfModule> となっています。 どうすれば見れるようになるのでしょうか?