不用mac自帶的apache和php,安裝自己想要的版本羹唠。配置過程一直采坑惫皱,需要有閑時間和好的心理素質(zhì)才行叙量,哈哈产镐,因為網(wǎng)上很教程都有紕漏之處隘庄,所以先把采坑無數(shù)后發(fā)現(xiàn)的個人認為最好的一個教程鏈接放在這里https://github.com/nodejh/nodejh.github.io/issues/25
下面記錄我的采坑過程。
安裝mysql
官網(wǎng)https://www.mysql.com/downloads/
下載mysql癣亚,有問題百度丑掺。下載后安裝,安裝過程中會有一個臨時密碼的提示述雾,要注意保存一下街州,后面會用到。安裝完畢進入系統(tǒng)偏好設(shè)置
在最下面找到mysql圖標并打開玻孟,點擊Start MySQL Server
啟動mysql唆缴。命令行cd到/usr/local/mysql/bin
,分別執(zhí)行alias mysql=/usr/local/mysql/bin/mysql
和alias mysqladmin=/usr/local/mysql/bin/mysqladmin
,這兩條命令是為了方便直接打開 iTerm 就可以運行mysql命令黍翎,而不是必須進入mysql安裝目錄才能運行面徽。接下來,重置密碼匣掸。執(zhí)行命令mysqladmin -u root -p password ***
***是你的新密碼趟紊。回車后提示輸入密碼旺聚,此時數(shù)次剛剛保存的臨時密碼织阳,我的是)6m1d/m<joVi。
此時提示mysqladmin: [Warning] Using a password on the command line interface can be insecure.Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.
說明已經(jīng)重置密碼成功砰粹。我在這里浪費了很多時間,以為這是錯誤提示造挽,其實已經(jīng)ok了碱璃。
登錄mysql。命令mysql -u root -p
,然后輸入剛剛重置的密碼饭入。然后登錄成功會跳出提示信息
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1032
Server version: 5.7.19 MySQL Community Server (GPL)
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
大意是說sql命令以;結(jié)尾嵌器,當前mysql版本是5.7.19。另外我們也可以通過sql命令select version();
來查看版本谐丢。用exit;
退出登錄爽航。安裝完畢蚓让。
apache使用mac自帶的
(開始的時候想用mac自帶apache來著,后來和配置php7時候各種問題讥珍,放棄了使用mac自帶apache)
基本用法的命令如下:
apachectl -v
查看版本历极,提示Server version: Apache/2.4.25 (Unix)
sudo apachectl start
啟動
sudo spachectl stop
停止
sudo apachectl restart
重啟
相關(guān)目錄:
apache日志/private/var/log/apache2/error_log
apache配置主文件/etc/apache2/httpd.conf
apache的vhost配置/etc/apache2/extra/httpd-vhost.conf
安裝php7.0
參考博客http://www.cnblogs.com/redirect/p/6131751.html
添加brew的php擴展庫(mac上沒有php的包,需要綁定其他人的git倉庫,命令brew tap github_user/repo),執(zhí)行如下命令
brew update
brew tap homebrew/dupes
brew tap homebrew/php
可以使用brew options php70
來查看安裝php的選項衷佃。注意如果使用apache作為web server趟卸,安裝php命令要加--with-apache
選項,如果使用nginx作為web server氏义,安裝php命令要加--with-fpm
選項锄列,我的安裝命令和選項brew install php70 --with-apache --width-apxs2 --with-gmp --with-imap --with-tidy --with-debug
,然后我按照教程http://www.cnblogs.com/redirect/p/6131751.html
上執(zhí)行brew link php70
開啟php7.0的進程,但是查看php -v
提示版本還是php5.6惯悠,執(zhí)行brew unlink php56
來關(guān)閉php5.6的進程但是報錯提示Error: No such keg: /usr/local/Cellar/php56
,反復試了很多次耽誤了時間邻邮,然后我查其他資料,執(zhí)行brew install php-version
安裝了php-version
來切換php版本克婶,php-version是一個幫助管理從brew安裝的php版本切換的工具筒严。安裝完執(zhí)行php-veision 7.0.22
切換版本,然后php -v
版本果然切換到php7.0.22了鸠补。
下面開始修改apache配置文件萝风。又遇見很耗時的一個坑。
按照上面的教程紫岩,打開apache配置文件sudo vi /etc/apache2/httpd.conf
,不加sudo
權(quán)限不夠沒辦法修改规惰,注釋(前面加#)掉LoadModule php5_module libexec/apache2/libphp5.so
和Include /private/etc/apache2/other/*.conf
兩句,然后加上LoadModule php7_module /usr/local/opt/php70/libexec/apache2/libphp7.so
這句泉蝌,注意歇万,libphp7.so的地址是對應自己電腦文件所在的地址,于是我去檢查下我的libphp7.so文件是不是上面命令中的地址勋陪。結(jié)果發(fā)現(xiàn)/usr/local/opt/php70/
下并沒有libphp7
目錄贪磺,搞了半天不知道怎么整,于是brew uninstall php7.0.22
卸載php7.0诅愚,卸載后/usr/local/opt/
下面沒有了php70
文件夾寒锚,然后重新安裝php7.0,并且又加了一個選項--httpd24
,因為看其他教程里有加违孝。brew install php70 --with-apxs2 --with-apache --with-gmp --with-imap --with-tidy --with-debug --with-httpd24
刹前,然后會提示如下
./configure --prefix=/usr/local/Cellar/php70/7.0.22_14 --localstatedir=/usr/local/var --sysconfdir=/usr/local/etc/php/7.0 --with-config-file-path=/usr/local/etc/php/7.0 --with-config-file-scan-dir=/us
Last 15 lines from /Users/yanhaoqi/Library/Logs/Homebrew/php70/01.configure:
checking for Kerberos support... /usr
checking whether to use system default cipher list instead of hardcoded value... no
checking for krb5-config... /usr/bin/krb5-config
checking for RAND_egd... no
checking for pkg-config... no
checking for OpenSSL version... >= 0.9.8
checking for CRYPTO_free in -lcrypto... yes
checking for SSL_CTX_set_ssl_version in -lssl... yes
checking for PCRE library to use... bundled
checking whether to enable PCRE JIT functionality... yes
checking whether to enable the SQLite3 extension... yes
checking bundled sqlite3 library... yes
checking for ZLIB support... yes
checking if the location of ZLIB install directory is defined... no
configure: error: Cannot find libz
其實前面最開始安裝php7的時候記得也有這個提示,當時也沒有在意雌桑。這時候執(zhí)行php -v
提示版本是php5.6
喇喉,執(zhí)行php-version
提示Sorry, but you do not seem to have any PHP versions installed.
,折騰半天后來查到資料,需要執(zhí)行xcode-select --install
,然后按照提示去安裝校坑,安裝完畢后再重新裝php7.0,brew install php70 --with-apxs2 --with-apache --with-gmp --with-imap --with-tidy --with-debug --with-httpd24
,這次沒有提示configure: error: Cannot find libz
,然后查看版本是7.0拣技,php-version
也提示7.0.22
,并且找到了/usr/local/opt/php70/libexec/apache2/libphp7.so
文件千诬。
ok,繼續(xù)apache配置文件。
注釋完上面所說的兩句話后膏斤,加上如下配置
LoadModule php7_module /usr/local/opt/php70/libexec/apache2/libphp7.so
<FilesMatch .php$>
SetHandler application/x-httpd-php
</FilesMatch>
<IfModule php7_module>
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>
</IfModule>
在#ServerName www.example.com:80
后面加上ServerName localhost:80
徐绑,否則下面重啟apache的時候回報錯提示AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using ::1. Set the 'ServerName' directive globally to suppress this message
這是個更大的坑。我卡在這里將近兩天掸绞,各種博客資料查詢各種嘗試泵三。曲折過程已經(jīng)忘記,現(xiàn)在只記錄下結(jié)果衔掸。
我在上面寫apache用mac自帶的烫幕,版本是Apache/2.4.25 (Unix)
,但是后面經(jīng)過我安裝php7的各種折騰后敞映,記不清在什么時候我通過brew安裝了Apache/2.4.27
我想執(zhí)行brew uninstall httpd24
卸載掉但是提示Refusing to uninstall /usr/local/Cellar/httpd24/2.4.27 because it is required by php70 7.0.22_14, which is currently installed.
较曼,php7引用了Apache/2.4.27。而且振愿,brew安裝的Apache/2.4.27捷犹,配置文件所在目錄/usr/local/etc/apache2/2.4/httpd.conf
,其編譯安裝的目錄/usr/local/Cellar/httpd24/2.4.27
冕末。oh my god!!!上面修改apache配置弄了這么長時間萍歉,配置的文件根本就不是正確的文件!
apache配置的正確姿勢
執(zhí)行命令使用管理員權(quán)限為通過brew安裝的apache配置為自動啟動档桃。
sudo cp -v /usr/local/Cellar/httpd24/2.4.27/homebrew.mxcl.httpd24.plist /Library/LaunchDaemons
sudo chown -v root:wheel /Library/LaunchDaemons/homebrew.mxcl.httpd24.plist
sudo chmod -v 644 /Library/LaunchDaemons/homebrew.mxcl.httpd24.plist
sudo launchctl load /Library/LaunchDaemons/homebrew.mxcl.httpd24.plist
我的apache編譯安裝路徑是/usr/local/Cellar/httpd24/2.4.27
枪孩,如果你的路徑不是這個,自行替換就好了藻肄。
此時瀏覽器訪問localhost
將會看到
可以通過ps -aef | grep httpd
命令查看apache服務是否啟動蔑舞,如果apache正在運行會看到一些http進程。
sudo vi /usr/local/etc/apache2/2.4/httpd.conf
修改php模塊配置及apache端口
將LoadModule php7_module /usr/local/Cellar/php70/7.0.22_14/libexec/apache2/libphp7.so
替換為LoadModule php7_module /usr/local/Cellar/php70/7.0.22_14/libexec/apache2/libphp7.so
找到代碼塊
<IfModule dir_module>
DirectoryIndex index.html
</IfModule>
替換為
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
修改ServerName為ServerName localhost:8080
Listen:8080
apache監(jiān)聽了8080端口嘹屯,如果修改的話直接改端口號即可攻询。
修改web服務的根目錄在自己用戶主目錄下方便開發(fā)
找到DocumentRoot "/usr/local/var/www/htdocs"
修改為DocumentRoot "/Users/yanhaoqi/sites"
修改下面的<Directory>
為<Directory "/Users/yanhaoqi/sites">
修改AllowOverride None
為AllowOverride All
取消注釋,使用mod_rewrite
模塊 LoadModule rewrite_module libexec/mod_rewrite.so
修改用戶和用戶組
修改User和Group如下
User yanhaoqi
Group staff
用戶主目錄下新建sites目錄
cd /Users/yanhaoqi
mkdir sites
sudo vi sites/index.html
sudo vi sites/info.php
在新建的index.html中編輯<h1>yanhaoqi web root</h1>
在新建的info.php中編輯
<?php
phpinfo();
?>
保存退出后重啟apachesudo apachectl restart
訪問localhost:8080
訪問localhost:8080/info.php
大功告成!幾乎熱淚盈眶V莸堋>堋!