OS : Mojaveへアップデートしたらlocalhostの設定が変わってしまった件。対処方法。
みなさん、こんにちは。
いつも通り今日も研究しよーって思ってローカルサーバーにあるファイル開こうと思ったら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
ディスカッション
コメント一覧
まだ、コメントがありません