發生在升級OS X Yosemite後:修復各類開發環境

本博文最初發佈於個人我的博客《Jerry的樂園php

終於仍是忍不住升級了,促使我升級的原動力竟然是Alfred的Yosemite theme竟然比初始theme好看不少!在升級前就預想到個人開發環境是必定會被破壞的,因此升級好系統之後仍是趕快看下發生了什麼吧!java

問題

一進新系統就發現phpstorm跪了,提示要裝jre6才能用。好吧,而後陸陸續續逐漸發現好多東西都跪了。只能一個一個慢慢修復啦。目前可見的發生錯誤的環境有:node

  1. PhpStorm
  2. Homebrew
  3. node.js
  4. Apache
  5. MySQL

逐個擊破

1. PhpStorm

升級了Yosemite之後,按通常的尿性,蘋果確定會升級全部運行環境的版本的,其中少不了Java,所以PhpStorm躺槍。確定有同窗要問啊,爲何JetBrains這種被譽爲史上最屌霸天的IDE廠商所使用的jdk版本這麼低!mysql

JetBrains如是說:laravel

Current JDK 1.7 and 1.8 versions have several critical issues. We can’t default to the new JDK version until these issues are resolved.git

好了,解決方法就是下個jre6嘛!結果我在oracle的網站上找了半天卻只能找到提供給OS X的jre7和jre8。好吧,其實直接在蘋果官網上就能夠找到下載連接:http://support.apple.com/kb/DL1572github

2. Homebrew

Homebrew的運行離不開Ruby,升級後運行不了的緣由其實也就是內置於Yosemite的Ruby版本更新啦:1.8 => 2.0。想要運行brew就會獲得以下錯誤信息:sql

/usr/local/Library/brew.rb: /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby: bad interpreter: No such file or directory

而後在網上找到解決辦法以下:apache

2.1 更新brew腳本

用你喜歡的編輯器打開/usr/local/bin/brew,而後將brew檢測系統的一段代碼註釋掉,具體以下所示:npm

#BREW_SYSTEM=$(uname -s | tr "[:upper:]" "[:lower:]")
#if [ "$BREW_SYSTEM" = "darwin" ]
#then
#    exec "$BREW_LIBRARY_DIRECTORY/brew.rb" "$@"
#else
    exec ruby -W0 "$BREW_LIBRARY_DIRECTORY/brew.rb" "$@"
#fi

2.2 建立軟連接

Homebrew會經過Ruby 1.8的路徑去找Ruby的運行環境,惋惜在Yosemite裏它再也找不到了。因此在Homebrew作出必定的改變之前,咱們須要騙騙它,創建一個假的Ruby 1.8的地址,其實指向系統的Ruby 2.0運行環境。

sudo mkdir -p /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin
sudo ln -s /usr/bin/ruby /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby

3. node.js

好吧,其實寫這篇博客的時候只發現前面兩個問題。但是當我用grunt來自動生成個人博客時,卻收到了env: node: No such file or directory這樣的錯誤信息。看來node也在此次升級中慘烈犧牲了啊。

/usr/local/bin/下已經找到nodenpm卻發現是沒法打開的,依舊會提示No such file or directory。目前仍是不太清楚是什麼緣由形成的,最後解決的辦法也比較暴力:直接到node官網上下了個最新的pkg直接從新安裝一下就行了。

4. Apache

要本地調試代碼的時候發現Apache也不能倖免地跪了。執行apachectl -v發現Apache已經更新到2.4.9版本了。必定又是由於版本更新出了什麼差錯。

4.1 修改httpd.conf

首先打開/private/etc/apache2/httpd.conf發現彷佛恢復默認的設置了。從新將如下兩行代碼解注:

Include /private/etc/apache2/extra/httpd-vhosts.conf
...
LoadModule php5_module libexec/apache2/libphp5.so

4.2 修改httpd-vhosts.conf

打開private/etc/apache2/extra/httpd-vhosts.conf發現以前設好的虛擬主機彷佛沒有被修改掉嘛!但由於升級到Apache 2.4以上設置須要必定的調整,否則就會獲得403 Forbidden You don't have permission to access / on this server錯誤啦。

將本來的

<VirtualHost *:80>
    ServerAdmin zry656565@gmail.com
    DocumentRoot "/Users/Jerry/Dev/apache/php_tester"
    ServerName php_tester
    ErrorLog "/Users/Jerry/Dev/apache/php_tester/log/sites-error_log"
    CustomLog "/Users/Jerry/Dev/apache/php_tester/log/sites-access_log" common
    <Directory />
        Options Indexes FollowSymLinks Includes ExecCGI
        AllowOverride None
        Order deny,allow
        Allow from all
    </Directory>
</VirtualHost>

改爲

<VirtualHost *:80>
    ServerAdmin zry656565@gmail.com
    DocumentRoot "/Users/Jerry/Dev/apache/php_tester"
    ServerName php_tester
    ErrorLog "/Users/Jerry/Dev/apache/php_tester/log/sites-error_log"
    CustomLog "/Users/Jerry/Dev/apache/php_tester/log/sites-access_log" common
    <Directory />
        Options Indexes FollowSymLinks Includes ExecCGI
        AllowOverride None
        Require all granted
    </Directory>
</VirtualHost>

其實就是將Order deny,allow, Allow from all改爲Require all granted

5. MySQL

MySQL目前尚未正式支持OS X Yosemite,因此在升級系統後會發現,MySQL的服務竟然沒有在後臺啓動。要解決這個問題只有手動啓動MySQL的服務,建議在~/.bash_profile中加入以下腳本,而後用source ~/.bash_profile啓用腳本。

export MYSQL_HOME=/usr/local/mysql/bin
alias start_mysql='sudo $MYSQL_HOME/mysqld_safe &'
alias stop_mysql='sudo $MYSQL_HOME/mysqladmin shutdown'

接下來,你只須要使用start_mysqlstop_mysql指令就能夠開關mysql服務啦!

結語

其實原本還會發上第六條的:git。由於我發現我想把這篇博文發到github的博客上去卻失敗了!找了半天緣由卻摸不着頭腦。後來突發奇想在gitcafe上建立了個項目竟然push成功了,說明不是本地的git的問題,而是github的問題。過了一天才成功發上來還真是蛋疼!

以上這些解決方案在我本地都可以解決問題,若是你還有什麼疑問,能夠在博文下留言,說不定能幫到你。

參考資料:

  1. Homebrew, Ruby, and Rails on OS X 10.10
  2. Fix the PhpStorm Java Error with Yosemite
  3. Error message 「Forbidden You don't have permission to access / on this server」
  4. start mySQL server from command line on Mac OS Lion

更新

  • 2014.11.16 添加apache、mysql的恢復
相關文章
相關標籤/搜索