[Mac][Server] Macにローカルサーバを立てる方法

1.はじめに

簡単なWebページ確認などをするため、
サクッとローカルサーバを立てたい時があるかと思います。

そのようなときに使える方法を3つまとめます。

最初の2つはコマンドラインで1秒で簡易サーバを立ち上げる方法、
3つ目はApacheサーバを立ち上げる方法です。

2.前提条件

Mac: macOS Big Sur バージョン11.5.1
Python: 2.7.16 (古い…)
PHP: 7.3.24 (古い…)
Apache/2.4.46 (Unix)

3.コマンド1行で簡易的なサーバを立てる方法

HTML などの静的なファイルを確認するだけなら、コマンド1行で事足ります。

3-1.pythonコマンド

Python2 の場合、以下のコマンドをターミナルで打ちます。
8888 はポート番号です。

python -m SimpleHTTPServer 8888

Python3 の場合は以下のコマンドでできるようです(未検証です 🙇‍♂️)

python -m http.server 8888

すると、コマンドを打ったディレクトリに index.html がある場合、
http://localhost:8888/ でアクセスできるようになります。

もしくは同じネットワーク内なら、異なるデバイスからでも
http://192.168.0.1:8888/ のようにMac のローカルIPアドレス指定で
アクセスすることができます。

また、test.html がある場合はもちろん
http://localhost:8888/test.html でアクセスできるようになります。

参考:
Qiita: Macで簡易ローカルサーバーをたてる
Serverworks: Python の http.server を使って簡単にWebサーバーを立てる

4.phpコマンド

以下のコマンドをターミナルで打ちます。
8888 はポート番号です。

php -S localhost:8888

python のときと同様、コマンドを打ったディレクトリに index.html がある場合、
http://localhost:8888/ でアクセスできるようになります。

ただし、こちらの手法の場合はローカルIPアドレスを指定しても
異なるデバイスからのアクセスはできないようです。

参考: オリジナルゲーム.com: 【Mac】ローカルにWebサーバを立ち上げる超簡単な方法!

4.Apacheサーバを立てる方法

上記2つの方法はとても簡単ですが、スクリプトが動かなかったりするため、
静的ファイル以外の確認ができない場合があります。

そのような場合はApache サーバを立てるのも一つの手かなと思います。

今回は .conf 系のファイルを3種類修正します。

以下のサイトを参考にさせていただきました。

4-1. Sites ディレクトリを作成する

まずは Sites ディレクトリを作成します。

mkdir ~/Sites

4-2. /etc/apache2/httpd.conf を修正する

以下、粛々と修正していきます。

自分一人しか使わないことを想定し、今回は最低限として
こちらの http.conf においては3点のみ修正をします。

まずは157行目付近の mod_http2.so のコメントアウトを外します。
これで HTTP/2 を使えるようになるようです。

LoadModule http2_module libexec/apache2/mod_http2.so

PHPを使いたい場合は 187行目付近の libphp7.so のコメントアウトを外します。

LoadModule php7_module libexec/apache2/libphp7.so

521行目付近の httpd-userdir.conf のコメントアウトを外します。
これで /etc/apache2/extra/httpd-userdir.conf を読み込みます。

Include /private/etc/apache2/extra/httpd-userdir.conf

これで /etc/apache2/httpd.conf の修正は完了です。

4-3. /etc/apache2/extra/httpd-userdir.conf を修正する

上記で読み込み可能になったファイルです。

以下のコメントアウトを外します。

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

4-4. /etc/apache2/users/<username>.conf を修正する

上記で読み込み可能になったファイルです。
<username>は自分のアカウント名などに読み替えてください。

以下のように記述します。
8888 はポート番号です。

Listen 8888
<VirtualHost *:8888>
    DocumentRoot "/Users/<username>/Sites"
    <Directory "/Users/<username>/Sites">
        Require all granted
    </Directory>
</VirtualHost>

Apache の設定は以上です。
あとは起動するだけです。

4-5. Apache を起動する

先述しましたが、以下のコマンドを打つとApache が起動します。

sudo apachectl start

すると、コマンドを打ったディレクトリに index.html がある場合、
http://localhost:8888/ でアクセスできるようになります。

もしくは同じネットワーク内なら、異なるデバイスからでも
http://192.168.0.1:8888/ のようにMac のローカルIPアドレス指定で
アクセスすることができます。

今回は libphp7.so も有効にしたので PHP ファイルも実行できます。

4-6. Apache を停止する

以下のコマンドでOKです。

sudo apachectl stop

こうするとブラウザからは http://localhost:8888/ などでアクセスできなくなります。

4-7. 補足1: .conf ファイルなどを編集せずともサーバは立てられるが…

これまで書いたような .conf ファイルの編集を行わずとも
Apache サーバは立てられます。

例えば、何も編集せずに

sudo apachectl start

とコマンドを打ってブラウザから localhost にアクセスすると
It works! と表示されるHTMLが閲覧できます。

ここで参照されるのは /Library/WebServer/Documents/index.html.en となります。
任意のファイルを /Library/WebServer/Documents/ に置いて
同様にブラウザから参照することもできるかもしれません🤔

が、この手法は推奨されていないようです。

その代わりにSites ディレクトリをドキュメントルートにするのがデファクトのようなので
そちらの本ポストではそちらの方法を記載しました。

Mac のあるバージョンまでは
Sites ディレクトリがデフォルトで用意されてたようですが、
最近のバージョンではそうでもないようです。
(Lion あたりで変わったのかな? 🤔)

4-8. 補足2: /etc と /private/etc は同じ

/etc/private/etc といったパスが出てきましたが、
Mac では /etc/private/etcシンボリックリンクとなっています。

$ ls -l /etc
lrwxr-xr-x@ 1 root  wheel  11  1  1  2020 /etc -> private/etc

ですので、例えば以下の2つは同じファイルを指しています。

  • /private/etc/apache2/extra/httpd-userdir.conf
  • /etc/apache2/extra/httpd-userdir.conf

Apache 周りの設定などを調べていると
/etc/private/etc のパスが色々出てきて混乱してしまいますが、
同じファイルを指していると分かれば少しは把握しやすいかもしれません 🙌

5.さいごに

クライアントアプリ開発においてもたまに
このような確認をしたい場面がありますね。

お役に立てればと思います。

以上です。
お疲れ様でした!

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。