MAMPのApacheが接続されない問題

MAMPを使用していたら、突然おかしくなりました(MAMPの問題はちょくちょくある)。

今回、Apacheが接続されずにだいぶ苦労してたのですが、
試せる事は全部やったので、何を実際に行ったのかプロセスを書いていきます。

ググって全部試した事、インフラ系に詳しい方に教えていただいた事をまとめてるので、
どれかが皆さんの問題を解決する答えになっていたら幸いです。

##環境

MAMP

Apache
PHP : 7.4.2
Mysql : 5.7.26


##エラー内容

```apache

Apache couldn't be started because port 80 is in use by some other software.
```

※注意
私のPCで使用してるMAMPは
Apacheのポート番号を80にして
httpd.cofのListenを80にして繋げています。

最初はポート80を他でも使用してるよってエラーが出ました。
この時点で、`既存のファイルを変更しても通常通り動く。`
けど、`新規でファイルを追加すると反映されない。`
↓
ローカルのURLである、http://localhost:10001/ が表示され、ファイル変更しても反映される。
↓
"80のポートを他にも使ってるやつおるで、変えてくれ〜セキュリティ的に〜"みたいな感じで新規ファイルが反映されなくなっているのか(予想)

ちなみにこの時点では、

Apache Server
MySQL Server 
Cloud

どれも点滅してました。(Stop Serverは点滅してない)
<img width="531" alt="スクリーンショット 2020-04-27 3.23.22.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/518907/328f5d82-471f-684b-51fe-522a052b57dd.png">

調べてみて、最初に出てきた記事から進めます。

##ターミナルで同じポートで動いてるやつを消す

こちらの方の記事を参考に、同じようにターミナルからコマンドを叩いてみました。

【自分メモ】MAMPが起動しない時の対処方法
https://qiita.com/xiaoxiao/items/9e5686a4b02b34929c8b

このやり方は、自分のPCで同じポートを使用しているアプリやサイト？などがある場合、その接続を削除できる。

ポートがかぶってると、エラー起きるんだって。へぇ〜。

```
$ kill -9 XXXX 
```

ちなみに、`kill`のコマンドと`kill -9`の違いはこんな感じらしい。
`kill -9`はあまり推奨されてないらしい。(補足)

参考
https://www.atmarkit.co.jp/ait/articles/1708/04/news015.html

ポート80を削除したので、

これで治るかな〜と思ったら、エラーが変わったwなんでやw

しかも、
Apache Server
MySQL Server 
Cloud
のCloud以外は全部点滅しない。
ファイルを開いても、何も見れないので、`Apacheの接続ができなくなった。`
http://localhost:10001/ が表示されない

```
Apache couldn't be started. Please check your MAMP installation and configuration.
```

昔、mysql動かなくなった事があって、MAMPを再インストールしたので、またやり直しか、、、と焦りました。

まさにこの人と同じような挙動でした。
https://www.webdesignleaves.com/pr/plugins/mamp_error_apache.html
(この方は諦めて再インストールしてました)

色々調べて、試しました。
できなかったけど、試した事全部書きます。


##envvarsファイルを編集

https://moodle.org/mod/forum/discuss.php?d=279894

だめでした〜。

##macのApacheを停止、再起動

Apacheを起動するには

```
sudo apachectl start
```
停止したければ、

```
sudo apachectl stop
```
再起動したければ、

```
sudo apachectl restart
```

参考リンク
https://qiita.com/shuntaro_tamura/items/bdabcb77926dc92617b1
https://stackoverflow.com/questions/27387922/mamp-apache-couldnt-be-started-because-port-is-in-use-and-can-t-connect-to

だめでした〜。。

##Nginxはどうよ
ApacheがダメならNginxはどうよ。
問題があるのがどこの部分かを切り分けたい。

MAMPの設定をNginxに変えてみた。
↓
動くやんけ。Nginxは普通に動きました。
ということは、問題はApacheの中。どこだ？

##ポート変更
私のやり方での設定だと、ApacheとNginxのポート番号が80で同じ。
今更だけど、ここ変えてみる？
そもそもポート番号が同じなのはあまり良く無い。(らしい)

①トライ
Apache→80
Nginx→8888
にした。
↓
変わらんやんけ。

②トライ
Apache→8888 conf→8888
Nginx→80
にした。
↓
変わらんやんけ。

これでもダメで、これ以上方法が見当たらなかったので、エラーログを見ることに。


##エラーログを見る


/Applications/MAMP/logs/apache_error.logの中のエラーログをみました。

エラーログの見方
https://www.sakura-vps.net/apache-error-log/

しかし、そもそも
client denied by server configuration
File does not exist
のエラーが、最初から(MAMPをインストールした時から)発生してて、ひどいときは数分単位でエラーログが吐き出されてた。なんも参考にならん。
最初から設定が良くなくて、今おかしくなったのか？と思い、さらに原因が不明に。

一旦apache_error.logの中を全部消してみた。
今はApacheが動いてないからか、apache_error.logに何も追加されない。

httpd.confファイルの中身を全部コメントアウトにしても、エラーログは更新されず。
もはや、一部でもダメ。
confファイルがそもそも死んでる問題？

↓

##conf ファイルにシンタックスエラーがないか確認

```
sudo /Applications/MAMP/Library/bin/apachectl configtest
```
https://qiita.com/bezeklik/items/990bed2e7e529584fa57
結果

```
Syntax OK
```

conf、動いてるねぇ。
(まぁこれもあんま信用できないけど)

httpd.confの中身変えてみたらどうよ
→全部コメントアウトしてみた

```
httpd: Could not reliably determine the server's fully qualified domain name, using mynameMacBook-Pro.local for ServerName
```
おっ、反映されてる。
一応、コメントアウト＋<だけ

```
httpd: Syntax error on line 605 of /Applications/MAMP/conf/apache/httpd.conf: /Applications/MAMP/conf/apache/httpd.conf:605: <> was not closed.
myname@mynamenoMacBook-Pro ~ % sudo /Applications/MAMP/Library/bin/apachectl start
```

ほ〜〜〜(?)

httpd.confを変更して、apache_error.logをみたときはエラーログは出ないけど、
ちゃんと動いてる事がわかった(？)


次はコメントアウトを解除して元の設定に復元し、

```
sudo /Applications/MAMP/Library/bin/apachectl start 
```
↓

```
(48)Address already in use: make_sock: could not bind to address [::]:80
(48)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
```

それは正しい挙動だし、設定ファイルは、間違いなく使われているわ。


confファイルの
Listen 80を8080に変更した上で、
MAMPの設定も8080で動かしてみて

```
lsof -i :80
```

これ打ったら、80のポートを使用してる奴が見えるんよ。

見えるけど、結局振り出し(最初と同じ)に戻ったので、一旦ここで諦め。

ちなみに、ポートを80じゃなくて他の数字にしたら動いた。
(当たり前かw)

##翌日

上司にこれを送ってもらいました。
https://do-zan.com/mac-search-using-port/
https://minatokobe.com/wp/os-x/mac/post-54766.html
https://www.atmarkit.co.jp/ait/articles/0207/20/news003.html

```
lsof -i :80
sudo lsof -i:80
```

sudoすると、ポート80を使用してるアプリケーションが見つかった！！！まじで？！！
sudoすることをおすすめします。

確認した所、
loginwindowとtalagentのhttpdのポートとかぶっているようで。


loginwindowは消せないので、諦めました。

(結局w)

##結果

私は原因が良くわからず、やれることはいろいろやりました。
ここまでやってもだめだったら、普通にMAMPを再インストールするのが良いと思う。