[Mac]不用懶人包,在 OS X 上安裝 Apache, PHP, MySQL

4 / 19, 2015 Mac , PHP , Unix , 架站工具 , 軟體推薦

OS X 上雖然已經有個 MAMP 懶人包給 PHP+MySQL ,但是因為免費版功能不夠強大,又不想用破解版,所以就想說自己安裝不就得了。 OS X 其實一直以來都有內建 Apache 和 PHP 和 MySQL ,只是因為慢慢設定實在太崩潰了所以我一直都懶的慢慢弄,Coding 時把程式碼丟到 Linux Server 上去跑,但是最近因為一些原因不可以把程式丟到遠端 Linux 伺服器,只好來學一下怎麼弄囉,其實出我意料的簡單 XD

此教學在 OS X Yosemite 上撰寫,不保證舊版 OS X 可支援

首先打開終端機,為了避免稍候有任何權限問題,先把執行權限調整成 root

Apache

然後先開啟 Apache

然後看看 http://localhost/ 是否有出現 “It works!” ,如果有就代表 Apache 已經正常運作了,根目錄位置在 /Library/WebServer/Documents

mac-apache-php-mysql-setup-1

我沒看到 “It works!” 怎麼辦?

首先到根目錄 (/Library/WebServer/Documents) ,看看有沒有找到一個檔案叫做 index.html.en ,試試看把 .en 去掉之後會不會看到,我是這樣改掉之後才成功看到的 ==”

(修改檔案時可能會要求 root 權限)

mac-apache-php-mysql-setup-3

PHP

接下來要開啟 PHP 模組,先把現在的 Config 備份一下等一下搞壞了還可以救回來

接下來編輯 httpd.conf ,以下使用 vim ,進去後請先輸入 i 然後就可以編輯了
(聽說第一次用 vim 的人都不知道怎麼編輯 XD ,啊如果你已經成為神話了,歡迎使用 emacs)

找到以下這行並且把前面的井字號 (#) 去除

然後請按 esc ,然後 :wq ,聽說第一次用 vim 的人都不知道麼退出 wwwww
重新啟動 Apache 以套用更新

然後試試看 PHP 是不是如期運作了,可以用 Finder 在根目錄放個 phpinfo() ,或是直接用 CLI 放
(修改檔案時可能會要求 root 權限)

然後瀏覽 http://localhost/phpinfo.php ,是否有正確跳出 phpinfo 資料

mac-apache-php-mysql-setup-2

MySQL

首先到官網把安裝檔下載下來並安裝
http://dev.mysql.com/downloads/mysql/

雖然官網建議把 mysql 指向到 mysqladmin ,但是好累(?)所以我直接在 PATH 加上 MySQL 路徑

確認一下輸出的內容有沒有 “/usr/local/mysql/bin”

最後把 MySQL 和 PHP 連結在一起

最後記得要到系統偏好設定 -> MySQL 把 MySQL Server 打開喔
mac-apache-php-mysql-setup-3

預設的 MySQL root 帳號是沒有密碼的,如果要改可以用以下指令:

(記得要用單引號包住密碼喔)

其他設定

上述方法就已經可以讓 MAMP Server 正常運作了,而我還有改一些地方

首先我把預設 port 改掉,因為我習慣把 Port 80 留下來,或許以後有些軟體會用到,找到以下內容並把 80 改成你想要得 Port

再來有些軟體會用到 mod_rewrite ,所以也開一下,一樣找到下述行並且把井字號去掉

還有因為預設權限問題,有可能會一直遇到 Permission denied,可以把權限開給系統用戶,就不用一直打密碼了

改成

如果不確定用戶名,可以用 whoami 得知

然後把根目錄權限,每一個都調成 讀取與寫入 就可以了(先聲明一下,這是在測試環境才能這樣搞,如果是要公開的,這麼作會有資安風險)

mac-apache-php-mysql-setup-4

大概就是這樣惹,至於 VirtualHost 有空再寫成一篇吧(攤手)

  • 曾少宏

    不好意思 請問如何還原@@
    好像有設定錯誤
    localhost 一直卡在 it works!

    • s3131212

      不好意思現在才回應
      請問您是做到哪一步還是全部跑完了但還是不 work ?
      另外,It works 是預設首頁,記得要去看你放的新檔案而不是首頁喔

  • Ming Tsay

    感謝教學!(推個

  • 劉耿良

    不好意思~~Key一半
    請教echo後面接 ‘<?php phpinfo();' 的意思,其中 ' ' 是代表把 '' 裡面的東西當作文字嗎?
    而<?php phpinfo(); 又是什麼意思?

    • s3131212

      echo 會輸出後面的兩個單引號之間的內容,而再加上 > 就會輸入檔案之中

  • 劉耿良

    請問文章中有一段 echo ‘ /Library/WebServer/Documents/phpinfo.php
    echo 是打印
    而 > 是指向/Library/WebServer/Documents/phpinfo.php 這個檔案
    但是我不懂'<?php phpinfo();' 的意思,可否請版主指教一下

    • s3131212

      echo 是指把東西輸出在 Terminal , > 是指把剛剛輸出的東西寫入到檔案,所以兩者在一起就是把 echo 後面的內容寫進 > 後面的檔案

  • 謝育瑾

    請問 如何查看用戶名? whoami

    • s3131212

      查看用戶名的話請在 Terminal 輸入 whoami 就會有回傳了

      • 謝育瑾

        謝謝

  • Rose Lau

    請問接下來如何裝wordpress?

    • s3131212

      把 WordPress 的檔案拉進 /Library/WebServer/Documents ,並瀏覽 localhost 就可以開始安裝程序了喔

      • Rose Lau

        mac用的還不夠熟實在不知道如何找到/Library/WebServer/Documents 可以請大大圖示嗎^^

        • s3131212

          Finder -> 前往 -> 前往檔案夾

          • Rose Lau

            找到了,也放進去了,可是點install.php後,只能看到html耶

  • 駱俊馳

    我不小心亂改httpd.conf沒有備份,請問您有備份原始檔可以給我復原嗎

    • s3131212

      我沒有欸,網路上應該抓的到才對

  • Jim Lu

    成功了,謝謝您花時間寫下的教學分享!

  • Tutu

    請問我輸入「http://localhost/phpinfo.php」出現的是原始程式碼 這樣是什麼問題?謝謝!

    • s3131212

      請確定
      LoadModule php5_module libexec/apache2/libphp5.so

      前面的井字號有確實刪除而且 Apache 有重新啟動,如果沒有重新啟動更新並不會被套用喔,如果再不行可能就 homebrew 重新裝一下 PHP 吧

      • Sonia

        現在變成「無法連接伺服器」> < http://localhost/~自己的使用者名稱 也是無法連接,這樣要改什麼呢?謝謝!!!

        • s3131212

          請問 Apache 有正確的被啟動嗎?之前我也遇過,結果是 Apache 啟動失敗我沒發現 XD

          • Sonia

            it works!有出現 不確定你說的正確的被啟動是什麼意思,我怎麼樣可以知道啟動有沒有失敗?謝謝:)

            • s3131212

              抱歉比較挽回
              只要 It works 有出現就代表是成功了喔

  • zx1986

    缺點是每次 Mac 更新以後,會把你的舊設定檔複製一份丟到旁邊,用回它預設的

  • Anon

    ftfy
    sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist

  • Jk

    use Homebrew.

  • z1995

    其實我比較想要看 virtual host (笑)

    • s3131212

      好啦以後會寫啦 XD

  • <-不會用 vim,從此都用 nano…

    • s3131212

      我一開始也是用 nano ,之後朋友推薦才轉用 vim 的, nano 真的人性化很多,但是 vim 感覺比較強大