目次
はじめに
ホームページやデータベースのテスト環境構築時に何かと便利なlocalhostですが、PCの買い替えに伴い、改めて立てる機会があったので、記事にまとめました!
今回の環境は以下で実行しています。
OS : MAC OS Catalina version:10.15.5
PHP version : 7.3.11
httpd version : Apache/2.4.41 (Unix)
Apacheの起動(httpdの起動)と確認
・起動
$ sudo apachectl start
・停止
$ sudo apachectl stop
・再起動
$ sudo apachectl restart
・CUI上でApacheの起動を確認
$ ps aux | grep httpd
・ブラウザでApacheの起動を確認
http://localhost で検索
“It works!”が表示されていれば成功です。
ローカルホストへブラウザからアクセスした時に”It works!”と表示されるということは、あるhtmlファイルが表示されているということです。このファイルがどこにあるのかというと、/Library/WebServer/Documents/index.html.enの中にあります。しかし、/Library/WebServer/Documents/のownerはrootになっており、root権限が必要であるから、直接編集するには使いにくいです。したがって、ユーザーのディレクトリで作業できるように設定していきます(ユーザーディレクトリーの有効化)。
ユーザディレクトリの有効化
1. php7.3の有効化
以下のコマンドでhttpf.confgを開きます。
$ sudo vi /etc/apache2/httpd.conf
以下のコメントアウトを消去します。
#LoadModule php7_module libexec/apache2/libphp7.so
#AddOutputFilter INCLUDES .shtmlから</IfModule>の間に以下の2行を追記します。
AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps
以下のコメントアウトを消去します。
#LoadModule userdir_module libexec/apache2/mod_userdir.so #Include /private/etc/apache2/extra/httpd-userdir.conf
以下のコマンドで保存して終了します。
:wq
3. ディレクトリの有効化
以下のコマンドでhttpd-userdir.confを開きます。
$ sudo vi /etc/apache2/extra/httpd-userdir.conf
UserDir Sites の上に以下を記入します。(ディレクトリーの有効化)
UserDir enabled
以下のコメントアウトを消去します。
#Include /private/etc/apache2/users/*.conf
以下のコマンドで保存して終了します。
:wq
4. ユーザディレクトリの作成
以下のコマンドでユーザー直下に”Site”というディレクトリを作成します
$ mkdir ~/Sites
以下のコマンドで新しく「ユーザ名.conf」を作成し、編集します。
$ sudo vi /etc/apache2/users/ユーザ名.conf
以下の内容を「ユーザ名.conf」へコピー&ペーストします。
<Directory /Users/*/Sites> DirectoryIndex index.html index.php AllowOverride All Options All Require all granted </Directory>
以下のコマンドで保存して終了します。
:wq
http://localhost/~ユーザ名/で「Sites」の中に置いたHTMLファイルが表示されれば成功です。
5. 僕がぶつかった壁
4までの設定を終わらせ、http://localhost/~ユーザ名でlocalhostにアクセスすると以下のような画面になり開くことができませんでした。
とりあえず以下のコマンドでエラー文の確認をしました。
$ httpd -t
AH00526: Syntax error on line 254 of /private/etc/apache2/httpd.conf: DocumentRoot '/usr/local/var/www' is not a directory, or is not readable
どうやら、httpd.confの中のDocumentRootでwwwというディレクトリがないためエラーが出ているみたいです。
$ sudo vi /etc/apache2/httpd.conf
もう一度httpd.confを開きDocumentRootの部分を確認します。
DocumentRoot "/usr/local/var/www/"
この部分のwww/を消去して、DocumentRoot “/usr/local/var/とし保存して終了します。
以下のコマンドでサーバーを再起動します。
$ sudo apachectl restart
※ 再起動しないと編集内容が反映されないので注意してください。
改めてhttp://localhost/~ユーザ名/にアクセスすると、無事”Site”内のファイルが表示されました。