目次
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種類修正します。
以下のサイトを参考にさせていただきました。
- Qiita: High Sierraでローカル環境(Apacheのバーチャルホスト)が動かなくなったときの対応
- iRASPA: Setting up Apache User Sites Folders on MacOS
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.さいごに
クライアントアプリ開発においてもたまに
このような確認をしたい場面がありますね。
お役に立てればと思います。
以上です。
お疲れ様でした!