BLOG-SINGLE

はじめに

ホームページやデータベースのテスト環境構築時に何かと便利な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"内のファイルが表示されました。

この記事を書いた人
小澤行央

主任

esports大会の運営、AIシステムの開発、広報資料のデザイン、人事面で活動