[Mac]Web共有(ローカルWebサーバー)機能を復活
カテゴリー:Mac
2022.04.07公開
2022.04.18更新
Web共有という名前を聞かなくなって久しいですが、過去のMac OS Xの時代に、システム環境設定でWebサーバ機能のオン・オフが簡単にできました。アプリ上からは消えましたが、機能としては残っています。Macを更新したりOSをアップデートした際に改めて設定しなおしましたので作業記録として残します。
Web共有のおさらい
Web共有とは、主にローカルネットワーク上でMacからWebサイトを公開できる機能です。それぞれのユーザーにwebディレクトリが用意されていてhttp://192.168.x.x/~ユーザID/のようなURLでローカルネットワーク上の他のMacから閲覧することができるようになります。
システム環境設定の共有パネルにファイル共有などと並んでWeb共有はありました。
手作業で作業するためには、ターミナル(Terminal.app)を使わなければなりません。あとターミナル上で開くエディタを使います。個人的にはSierra、high Sierra、Catallinaに続き4バージョン目になります。それでは進めていきましょう。
公開するディレクトリ(フォルダ)を作る
1)ホームフォルダにSitesフォルダを作成する。
まず、ホームフォルダ内にサイトフォルダを作ります。Finderから新規フォルダで作ってもかまいませんが、あえてターミナル.appで行うと
mkdir ~/Sites
2)日本語化する
次にSitesフォルダ内に「.localized」ファイルを作成します。「.(ピリオド)」始まりはFInder上で非表示になってしまうので素直にターミナル.appを使います。
touch ~/Sites/.localized
これを作るとフォルダ名がユーザ環境の言語に変換されます。日本語なので「サイト」に変わります。
Apacheで有効化の設定
ユーザーのごとのサイト作ることができる設定を有効化します。ここからの作業は管理者権限が必要になります。適宜ファイルのバックアップをとりながら進めていきます。例えばこんな感じです。ファイル名の後ろに「.bak」をつけるようにしています。
sudo cp /private/etc/apache2/httpd.conf /private/etc/apache2/httpd.conf.bak
1) http.confを編集
Apacheの設定ファイルを編集します。ここでよく使われるのがviというエディタですが、ぼくは慣れていないので初心者にも優しい「pico」というものを使います。確かApple技術認定関係の参考書で知りました。httpd.confを開くためにターミナルで以下のコマンドを実行します。
sudo pico /private/etc/apache2/httpd.conf
ファイルが開いてターミナルのウィンドウ内に表示されます。次の2行を先頭の#を削除してコメントアウトを解除します。ちなみにぼくの環境では行数は以下のようでした。環境によって異なるかもしれません。
184行目
#LoadModule userdir_module libexec/apache2/mod_userdir.so
521行目
#Include /private/etc/apache2/extra/httpd-userdir.conf
control+Wのショートカットキーで「mod_userdir」を検索します。先頭の#を削除します。
LoadModule userdir_module libexec/apache2/mod_userdir.so
control+Wでhttpd-userdirを検索します。先頭の#を削除します。
Include /private/etc/apache2/extra/httpd-userdir.conf
control+Oでenterキーを押して上書き保存します。control+Xでファイルを閉じます。
ユーザーサイトを用意する設定をする
1) httpd-userdir.confを編集
次に「httpd-userdir.conf」ファイルをpicoで開きます。
sudo pico /private/etc/apache2/extra/httpd-userdir.conf
control+Wでconfを検索します。先頭の#を削除します。
16行目
#Include /private/etc/apache2/users/*.conf
control+Oでenterキーを押して上書き保存します。control+Xでファイルを閉じます。
Include /private/etc/apache2/users/*.conf
control+Oでenterキーを押して上書き保存します。control+Xでファイルを閉じます。
2) ユーザーごとの設定ファイルを作成
テキストエディット.app以外のテキストエディタで新規書類を作成します。古くからあるものとしてはJeditとか、miとか、最近だとVS Codeなんかが流行ってますね。そして以下の内容を入力します。<UserName>のところはWeb共有したいホームフォルダ名(ユーザーのID)に書き換えます。そして適当な場所に”あなたのユーザーID”.confというファイル名で保存します。
<Directory "/Users/<UserName>/Sites/">
Options Indexes Multiviews FollowSymlinks
AllowOverride All
Require all granted
</Directory>
出来上がったファイルをターミナル.appで、「/private/etc/apache2/users/」へコピーします。
sudo cp ~/Desktop/<UserName>.conf /private/etc/apache2/users/
Apacheを起動
Apacheを起動します。
sudo apachectl start
もう起動している場合は、再起動します。
sudo apachectl restart
実際に開けるかWebブラウザで確認してみます。以下のURLをブラウザのアドレスバーに入力して開きます。ユーザIDはデフォルトではホームフォルダの名前と同じになります。
http://localhost/~ユーザーID
何もファイルがないと図のような感じになると思います。
ドキュメントルートの設定
Web共有の設定は終わりましたが、Webサイト構築に利用する時に不便が生じるのでルートをユーザのSIteフォルダに変更します。
ちなみにデフォルトのルートは「/Library/WebServer/Documents/」になります。
Apache設定ファイルの編集
ターミナルでhttpd.confを編集します。picoで開きます。
sudo pico /private/etc/apache2/httpd.conf
control+WでDocumentRootを検索します。以下の二行をコメントアウトして新たにユーザーフォルダの設定を作ります。ぼくの環境では255行目、256行目でした。
255行目
DocumentRoot "/Library/WebServer/Documents"
256行目
<Directory "/Library/WebServer/Documents">
<UserName>は、前述と同様にホームフォルダ名(ユーザID)です。
#DocumentRoot "/Library/WebServer/Documents"
DocumentToot "/Users/<UserName>/Sites"
#<Directory "/Library/WebServer/Documents">
<Directory "/Users/digitalsmith/Sites">
Apacheを再起動します。
sudo apachectl restart
ブラウザで確認します。ブラウザのアドレスバーに「localhost」と入力してページを開き、ユーザサイトに用意したページにアクセスできればOKです。
http://localhost/
まとめ
MacでWeb共有の設定手順をまとめました。今回はBig SurとMontereyで設定してちゃんと動作することが確認できました。
こういう分野は苦手なので、仕事で設定していた時はただただ手順通りに進めただけだったのですが、記事を書きながら設定ファイルの文字列を見ていたら意味がなんとなくわかってきました。仕事中に設定していた時はそんな余裕がなかったので(苦笑)。
Reference: Apacheの起動・停止・再起動
Apacheの起動・停止・再起動コマンドのおさらいです。
起動
sudo apachectl start
停止
sudo apachectl stop
再起動
sudo apachectl restart
参考サイト
以下のサイトを参考にさせていただきました。ありがとうございました。
この記事のカテゴリー:Mac
Author
- digital smith - N.A.
- Old schoolなMacユーザー。DTPっぽいことや、WebコーディングやMacサポートとかでご飯を食べてきました。興味のあることはとりあえずやってみたいと思っている面倒くさい人。服が作りたくてIllustratorを使ったパターンメイキングを勉強しています。将来は有機農業をやってみたい。