OS : Mojaveへアップデートしたらlocalhostの設定が変わってしまった件。対処方法。

localhost, mac, mojave, os, サーバー, ローカル

    みなさん、こんにちは。
    いつも通り今日も研究しよーって思ってローカルサーバーにあるファイル開こうと思ったら404エラーが出て焦ったPQTomです。
    マジで焦りました。
    私、何事も期間が迫らないと本気を出せないタイプなもんで。。。
    進捗発表前日の出来事だったので
    これは夢か
    と思いました。

    さて、なぜこんなことになったのか。
    それは

    MacOSをアップデートしたから

    です。
    最近アップデートありましたよね。また。

    High Sirrera → Mojave

    これで私はトンデモないミスを犯しました。

    発表前日にアップデートする

    ってこと。
    ありえないミスです。
    そんな大きなアップデートではないだろうとタカを括ってました。。。

    ローカルサーバーの設定全部持ってかれました。

    いつもローカル環境でテストしているこの私にとっては

    最悪

    でした。

    そこで今回はどのようにして元の設定に戻していったのか話していこうと思います。

    目標(ローカル環境設定変更後)

    今回の設定についてですが、

    Mac
    OS:mojave

    を使用していることを前提に

    パスを変更して、よくある

    Sitesディレクトリにアクセス

    できるところまで行っていきます。

    ドキュメントルート(Document Root)の変更

    ドキュメントルート(Document Root)とは

    そもそもドキュメントルートとは

    ウェブサイトのファイルを置いておくディレクトリ

    です。
    つまり、

    localhostに誰かが訪ねてきた時、アクセスされる場所

    のことですね。
    このドキュメントルートは二つあります。

    システムレベルドキュメントルート(System level document root)

    一つ目が

    システムレベルのドキュメントルート

    です。
    ここは、

    localhostに接続するとデフォルトでアクセスされる場所

    ですね。
    なので、何も設定していない人はlocalhost接続時に

    it works!

    が出るかと思いますが、それはここのファイルにアクセスしているからですね。
    Macでは基本

    /Library/WebServer/Documents/

    ですね。
    一度アクセスしに行ってみてはどうでしょう。

    ユーザーレベルドキュメントルート(User level document root)

    ユーザーが作るやつですね。
    これがいわゆる

    Sites

    と呼ばれるものです。
    このディレクトリは

    ユーザーが自ら作成する

    もので、作成してルートを設定するじ感じになります。

    では、始めて行きましょう!!

    Sitesディレクトリ作成

    localhostに接続した時に動くSitesディレクトリの作成です。
    このディレクトリは

    ユーザーホームディレクトリ内

    に作成します。
    ターミナル開いて始めの場所です。
    そこで

    $ mkdir Sites

    はい。作成できましたね。
    きっと

    /Users/username(自分のユーザー名)/Sites

    にあるはずです。

    ユーザー名.confの作成

    次に作ったSitesディレクトリの設定をするためのファイルを作成します。
    それが

    ユーザー名.conf

    です。
    ユーザー名は自分のユーザー名を使用してください。

    $ whoami

    で自分の名前がわからない人はわかるので参考に。
    で、このconfファイルを作る場所なんですけど、

    /etc/apache2/users/

    のところで作ってください。
    なので

    $ cd /etc/apache2/users/
    $ sudo vi ユーザー名.conf

    という感じです。
    Vimを使っていない人は他のエディターで良いです。もちろん。
    中身なんですけど、

    AllowOverride All
    Options Indexes MultiViews FollowSymLinks
    Require all granted
    

    を書いておきます。

    Webサーバーソフトウェアの設定

    Macには標準で

    Apacheが入っています。

    なので、そのApacheの設定ですね。
    まず、Apacheのディレクトリまで行きます。

    $ cd /etc/apache2/

    で、ここに

    httpd.conf

    があるので、これを書き換えます。
    ただ、ここは設定で重要な部分となるので、変なことをすると

    Webサーバーが動かなくなります。

    そうならないために

    バックアップを取っておきましょう。

    $ sudo cp httpd.conf httpdbackup.conf

    これで、動かなくなっても、元ファイルに戻せばいいのでバッチリです。
    では、書き換えていきましょう。

    $ sudo vi httpd.conf

    書き換えると言っても、いろいろな設定が書かれているファイルなので、ただ、

    コメントアウトを削除したり付け足したりするだけです。基本。

    LoadModule authz_core_module libexec/apache2/mod_authz_core.so
    LoadModule authz_host_module libexec/apache2/mod_authz_host.so
    LoadModule userdir_module libexec/apache2/mod_userdir.so
    LoadModule include_module libexec/apache2/mod_include.so
    LoadModule rewrite_module libexe
    Include /private/etc/apache2/extra/httpd-userdir.conf
    

    この6つを探して、コメントアウトを削除します。

    次は、

    DocumentRoot "/Library/WebServer/Documents"
    

    これを
    コメントアウトします(#をつける)
    なぜなら

    ドキュメントルートは/Users/ユーザー名/Sites/

    にしたいからですね。なのでさらに、

    DocumentRoot "/Users/ユーザー名/Sites/"

    を付け足します。
    すぐ下くらいに書いとけば後からもわかりやすいでしょう。
    ユーザー名は自分の名前を使ってくださいね。
    あと、そのまま下にスクロールしていくと

    AllowOverride None

    となっている部分があるのでそこを

    AllowOverride All

    に直してください。

    これが終わったら、保存してこのファイルへの用はなくなります。

    次に

    httpd-userdir.conf

    の方も設定します。
    まず

    $ cd /etc/apache2/extra/

    でファイルのあるディレクトリへ。
    これも非常に重要なファイルなのでバックアップはしておきましょう。
    この中にファイルがあるのでファイルを開きます。

    $ sudo vi httpd-userdir.conf

    ファイルの中の

    Include /private/etc/apache2/users/*.conf

    という部分があるのでコメントアウトを消してください。

    apacheのテスト

    ここまで、全ての作業が終了したら、apacheが正常に動くかテストします。

    $ sudo apachectl configtest

    これで、文法エラーが発生していないかとかわかるので、何もなければ

    Syntax OK

    と出力されるはずです。

    サーバーの再起動

    問題なければサーバーを再起動します。

    $ sudo apachectl restart

    もともと起動していなかった人は起動させてください。

    $ sudo apachectl start

    おまけにサーバーの停止についても

    $ sudo apachectl stop

    これで、localhost接続時に自分の作ったSitesディレクトリにアクセスするようになったはずです。
    もし、変化なかった場合は

    パソコンごと再起動

    してみてください。
    僕はそれで直りました。

    まとめ

    今回、localhostで接続時、自分のユーザーディレクトリへアクセスするように設定を変更してきました。
    ちょっと文章が長くなってしまい、わかりずらい部分もあったかと思いますが、申し訳ございません。
    ここらへんの設定を変更する時は十分に気をつけて行ってくださいね。

    タイの話を続けたかったんですが、さすがにやばかったので忘れないうちに書きました。
    これでまた、タイについての話に安心して戻ることができそうです。
    ではまた。

    でわでわ。

    参考資料

    [1]. MacOS MojaveのApacheでSitesディレクトリを使ってlocalhostを特定アカウントで利用する方法, https://pqtomblog.com/wp-admin/post.php?post=749&action=edit, Qiita
    [2]. How to install Apache, MySQL, PHP on macOS Mojave 10.14, https://www.dyclassroom.com/howto-mac/how-to-install-apache-mysql-php-on-macos-mojave-10-14, CLASSROOM
    [3]. Document Root, https://www.karelia.com/support/sandvox/help/z/Document_Root.html, Sandvox Help