質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.76%

  • Linux

    3473questions

    Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

  • CentOS

    2560questions

    CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

  • Apache

    1713questions

    Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

  • Vagrant

    1114questions

    Vagrantは、VirtualBox上の仮想マシンを コマンドラインから作成してくれるソフトウェアです。 ビルド環境など容易に構築が可能です。

Vagrant + CentOS7 でビルドした仮想環境のルート内のファイルをスマホでも閲覧したい

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 232

suzunari0017

score 1

 目的

初めまして。プログラミング初心者の者です。
現在、プログラミングを勉強中で、先達のすすめもあり、Vagrantを利用して仮想環境を構築、
仮想環境内に設置したファイルをスマホから閲覧する事を一旦の目標として進めています。
手順としては、

vagrant init centos/7

vagrant up & sshログイン(ログイン後、スーパーユーザーに)

webサーバー(Apache)をインストール、ファイアーウォールを停止、ファイアーウォール自動設定をoffに

httpd.confを修正

EnableMMAP off
EnableSendfile off



systemctl enable httpd を適用、Apacheを起動
(ここでsystemctl status httpd(正常に動作), systemctl status firewalld(停止)を確認)

一旦ゲストマシンからログアウト、vagrant halt

Vagrantfileを修正(共有ディレクトリの設定と同じLAN内のデバイスからブラウザでアクセスできるように設定)

vagrant up, sshログインし、 ip a でアドレス確認

共有ディレクトリにindex.htmlを入れる

ここまで行い、確認したIPアドレスに接続したところでトラブルが発生しました。

 発生している問題・エラーメッセージ

Error 403 にはならないものの、表示される画面がPC、スマホなどの各デバイス共にApacheのテストページ("Testing 123.."と書いてあるページです)が表示され、index.htmlが表示されませんでした。

きちんとディレクトリ共有がなされていないのではと思い、vagrant ssh → ls /var/www/html(今回共有ディレクトリに設定したディレクトリ=ルートです)を確認した所、ファイルはきちんと存在している。
ホスト側・ゲスト側でで任意のファイルを追加、削除した所、きちんと反映されていることから、ディレクトリ共有自体に問題は無さそうに思いました。
ファイルのアクセスなどが禁止されている訳では無いので、現状SELinuxの線も無いと思っています。


※180414 追記
見事にSELinuxが原因でした。回答を参考に、SELinuxを一旦'Permissive'にして仮想マシンを再起動した結果、表示されるようになりました。


どのようにすれば、ゲストマシンのルートにあるファイルにアクセスできるか、もしくはアクセスできる可能性があるかご教授いただければ幸いです。

 参考情報

【ホスト、ゲストマシン情報】
ホスト: macOS High Sierra (10.13.2)
ゲスト: Cent OS7 (Red Hat)

【ホスト側のディレクトリ構成】
┬ dist ─ index.html
├ Vagrantfile
└ .vagrant

【仮想環境構築ツール】

  • Vagrant v2.0.3
  • virtualbox v5.2.8

【Vagrant Plugin】

  • sahara (0.0.17)(今回使ってません)
  • vagrant-vbguest (0.15.1)

【Vagrantfile(コメントアウト部は省略)】

Vagrant.configure("2") do |config|

  config.vm.box = "centos/7"

  config.vm.network "private_network", ip: "192.168.33.10"

  config.vm.network "public_network"

  config.vm.synced_folder "./dist", "/var/www/html", type: "virtualbox", id: "vagrant-root", owner: "apache", group: "apache",  mount_options:['dmode=777','fmode=777']

end


※180413追記: 文字数の関係上、コメントアウト部を一部省略しています
【/etc/httpd/conf/httpd.conf】

# This is the main Apache HTTP server configuration file.  It contains the
#〜省略〜
#
ServerRoot "/etc/httpd"

# Listen: Allows you to bind Apache to specific IP addresses and/or
#〜省略〜
#
#Listen 12.34.56.78:80
Listen 80

# Dynamic Shared Object (DSO) Support
#〜省略〜
#
Include conf.modules.d/*.conf

# If you wish httpd to run as a different user or group, you must run
#〜省略〜
#
User apache
Group apache

# 'Main' server configuration
#〜省略〜
ServerAdmin root@localhost

# ServerName gives the name and port that the server uses to identify itself.
#〜省略〜
#ServerName www.example.com:80

# Deny access to the entirety of your server's filesystem. You must
#〜省略〜
#
<Directory />
    AllowOverride none
    Require all denied
</Directory>

# Note that from this point forward you must specifically allow
#〜省略〜
DocumentRoot "/var/www/html"

# Relax access to content within /var/www.
#
<Directory "/var/www">
    AllowOverride None
    # Allow open access:
    Require all granted
</Directory>

# Further relax access to the default document root:
<Directory "/var/www/html">
    #〜省略〜
    Options Indexes FollowSymLinks

    #〜省略〜
    AllowOverride None

    #〜省略〜
    Require all granted
</Directory>

<IfModule dir_module>
    DirectoryIndex index.html
</IfModule>

<Files ".ht*">
    Require all denied
</Files>

ErrorLog "logs/error_log"

LogLevel warn

<IfModule log_config_module>
    #〜省略〜
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common

    <IfModule logio_module>
      # You need to enable mod_logio.c to use %I and %O
      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
    </IfModule>

    #〜省略〜
    #CustomLog "logs/access_log" common

    CustomLog "logs/access_log" combined
</IfModule>

<IfModule alias_module>

    ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"

</IfModule>

<Directory "/var/www/cgi-bin">
    AllowOverride None
    Options None
    Require all granted
</Directory>

<IfModule mime_module>

    TypesConfig /etc/mime.types

    #AddType application/x-gzip .tgz

    #AddEncoding x-compress .Z

    #AddEncoding x-gzip .gz .tgz

    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz

    #AddHandler cgi-script .cgi

    # For type maps (negotiated resources):
    #AddHandler type-map var

    #〜省略〜

    AddType text/html .shtml
    AddOutputFilter INCLUDES .shtml
</IfModule>

#〜省略〜
AddDefaultCharset UTF-8

<IfModule mime_magic_module>
    #〜省略〜
    MIMEMagicFile conf/magic
</IfModule>

# Some examples:
#ErrorDocument 500 "The server made a boo boo."
#ErrorDocument 404 /missing.html
#ErrorDocument 404 "/cgi-bin/missing_handler.pl"
#ErrorDocument 402 http://www.example.com/subscription_info.html

# EnableMMAP and EnableSendfile: On systems that support it,
#〜省略〜

EnableMMAP off
EnableSendfile off

IncludeOptional conf.d/*.conf

 試したこと

  • 共有ディレクトリにファイルの追加、ゲストマシンから操作、確認 → 問題なく同期
  • 仮想マシンにssh接続後、apacheユーザーをvboxsfグループに追加 → 以前変わらず
    【操作の詳細(ssh接続後)】
[vagrant@localhost ~]$ sudo su -
Last login: Thu Apr 12 16:47:04 UTC 2018 on pts/0
[root@localhost ~]# gpasswd -a apache vboxsf
Adding user apache to group vboxsf
[root@localhost ~]# groups apache
apache : apache vboxsf
[root@localhost ~]# getent group vboxsf
vboxsf:x:995:apache
[root@localhost ~]# systemctl restart httpd

何卒よろしくお願いいたします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • euledge

    2018/04/13 12:19

    ファイルがあるのなら apache側の設定かもしれませんので httpd.conf を載せてください

    キャンセル

  • suzunari0017

    2018/04/13 20:02

    ご覧いただきありがとうございます。追記いたしました。

    キャンセル

回答 1

checkベストアンサー

+1

詳しくは知りませんがapacheユーザーをvboxsfグループに追加したら反映されました。

sudo gpasswd -a apache vboxsf

訂正
どうやらrebootしたらテスト中にrsyncしてみたファイルを読んでただけでした。申し訳ありません。

でまぁ、詳しく調べたらSELinuxでした。
https://qiita.com/100/items/f7f43994568836b4a453に掲載されているhttpd.teを適用するなり
仮想環境なんて壊してナンボじゃ、とsudo setenforce 0でSELinuxを無効化するなり

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/04/13 19:46

    ご回答いただきありがとうございました。
    当方の方でも試してみましたが、反映されませんでした。。。
    質問本文にも試した手順を追記させていただきますね。何か気になった箇所がありましたらまたご教授いただけると幸いです。

    キャンセル

  • 2018/04/14 12:26

    再度ご回答いただきありがとうございました。

    紹介いただいたリンク先、こちらでも別途調べたところ、見事にSELinuxでした…
    大した知識がないにも関わらず、「現状SELinuxの線も無い」と言い切っている当方の不勉強具合が恥ずかしい限りです。

    これを期にSELinuxやApacheドキュメントをもっと読み込んで理解を深めていきたいと思います。
    改めて、ありがとうございました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.76%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Linux

    3473questions

    Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

  • CentOS

    2560questions

    CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

  • Apache

    1713questions

    Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

  • Vagrant

    1114questions

    Vagrantは、VirtualBox上の仮想マシンを コマンドラインから作成してくれるソフトウェアです。 ビルド環境など容易に構築が可能です。