• 发生在升级OS X Yosemite后:修复各种开发环境


    本博文最初发布于我的个人博客《Jerry的乐园

    终于还是忍不住升级了,促使我升级的原动力居然是Alfred的Yosemite theme居然比初始theme好看很多!在升级前就预想到我的开发环境是一定会被破坏的,所以升级好系统以后还是赶快看下发生了什么吧!

    问题

    一进新系统就发现phpstorm跪了,提示要装jre6才能用。好吧,然后陆陆续续逐渐发现好多东西都跪了。只能一个一个慢慢修复啦。目前可见的发生错误的环境有:

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

     

    逐个击破

    1. PhpStorm

    升级了Yosemite以后,按一般的尿性,苹果肯定会升级所有运行环境的版本的,其中少不了Java,因此PhpStorm躺枪。肯定有同学要问啊,为什么JetBrains这种被誉为史上最屌霸天的IDE厂商所使用的jdk版本这么低!

    JetBrains如是说:

    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.

    好了,解决方法就是下个jre6嘛!结果我在oracle的网站上找了半天却只能找到提供给OS X的jre7和jre8。好吧,其实直接在苹果官网上就可以找到下载链接:http://support.apple.com/kb/DL1572

    2. Homebrew

    Homebrew的运行离不开Ruby,升级后运行不了的原因其实也就是内置于Yosemite的Ruby版本更新啦:1.8 => 2.0。想要运行brew就会得到如下错误信息:

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

    然后在网上找到解决办法如下:

    2.1 更新brew脚本

    用你喜欢的编辑器打开/usr/local/bin/brew,然后将brew检测系统的一段代码注释掉,具体如下所示:

    #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的恢复
    钟爱javascript的程序猿
  • 相关阅读:
    git的突出解决--git rebase之abort、continue、skip
    servlet中service() 和doGet() 、doPost() 学习笔记
    Spring IoC容器初始化过程学习
    浅探SpringMVC中HandlerExecutionChain之handler、interceptor
    常用路由命令
    路由配置命令
    cout 计算顺序问题
    第一次作业
    记录一个微信网页授权中不小心踩到的坑(Curl请求返回false)
    善用mysql中的FROM_UNIXTIME()函数和UNIX_TIMESTAMP()函数
  • 原文地址:https://www.cnblogs.com/jerryzou/p/4100741.html
Copyright © 2020-2023  润新知