搭建Mac全栈开发环境

从一台全新的MAC到完美的全栈开发环境需要几步?这篇文章应该算是我这1年半使用MAC开发的过程中,所有关于环境配置的问题大全了。

1 使用U盘全新安装OSX系统

① AppStore安装最新版OSX系统,将8G或以上容量U盘格式化为Mac OS 扩展 (日志式)格式,注意使用GUID分区表,打开终端,执行:

1
sudo /Applications/Install\ macOS\ Sierra.app/Contents/Resources/createinstallmedia --volume /Volumes/Capitan --applicationpath /Applications/Install\ macOS\ Sierra.app --nointeraction

注意,其中/Volumes/Capitan的Capitan替换为U盘的卷名
② 重启Mac,按住Option键,选择U盘重装系统

2 关闭SIP(System Integrity Protection)

SIP功能是Apple在OSX上推出的系统完整性保护功能,对于普通MAC用户来说是一项安全保护功能,如果不了解他的作用请不要随意关闭。部分特殊的软件如xtraFinder可能会修改系统目录。在这些工具未推出适应OSX 10.11的版本时,有必要临时关闭SIP以确保开发工具的使用。

部分关闭SIP的方法:
重启Mac,按住CMD+R,进入recovery界面,在顶部工具栏选择「终端」,执行:csrutil enable --without debug
如果仍有程序无法正常运行,可以完全关闭SIP:csrutil disable
程序安装完成后最好重新开启SIP:csrutil enable

3 关闭Gatekeeper

不少用户升级到macOS Sierra(10.12)之后,发现「系统偏好设置 - 安全与隐私 - 通用」中「允许任何来源应用运行」的选项消失了。如图:

关闭Gatekeeper

这是因为 macOS Sierra 加强了系统安全性,降低不良应用威胁电脑安全的几率,但是这也导致某些未经过开发者签名的应用无法在电脑上正常运行。
要想找回这个选项,可以在终端中执行sudo spctl --master-disable

4 XCode

为了避免XCodeGhost这样的安全隐患,XCode最好从AppStore或官方网站苹果开发者中心下载。
安装XCode之后,为了保证等开发工具的正常运行,最好装上Command Line Tools,两种方法:
① 终端执行xcode-select --install,按提示步骤安装
② 在上文中的苹果开发者中心下载安装包安装

5 Iterm2

参考这篇文章:iTerm 2 && Oh My Zsh【DIY教程——亲身体验过程】
你就可以打造一个高逼格+超级好用的终端环境,五星推荐!!!

需要注意的是,按照原文设置后并没有达到完美效果。我还做了以下设置:
Colors → Basic Colors → Foreground
b1c9cc

Colors → Basic Colors → Minimum contrast
30%

Text → Font → ChangeFont
Font 13pt Roboto Mono for Powerline

6 JDK

官方下载地址

编辑~/.zshrc,加入以下环境变量

1
2
3
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home
export PATH=${PATH}:$JAVA_HOME/bin
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:.

7 HomeBrew

终端执行

1
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

8 Ruby

终端执行

1
2
3
4
5
6
7
8
9
ruby -v
// OS X 自带的Ruby版本较低
brew install ruby
// 安装完毕重启终端
gem -v
// 替换gem源
gem sources --remove https://rubygems.org/
gem sources -a https://ruby.taobao.org/
gem sources -l

9 Pod

终端执行

1
2
sudo gem install cocoapods
pod setup

10 Node

终端执行

1
2
3
4
5
6
7
8
9
10
11
brew update
brew doctor
export PATH="/usr/local/bin:$PATH"
brew install node
// 淘宝镜像
npm install -g cnpm --registry=https://registry.npm.taobao.org
// 比NPM更强大的包管理器
cnpm install -g yarn
// 常用的开发工具
cnpm install -g create-react-app
cnpm install -g grunt-cli

参考:http://www.jianshu.com/p/20ea93641bda

11 VSCode

开启终端Code命令:在VSCode中按Cmd + Shift + P,输入install command,如图:

Code命令

12 Golang

① 终端执行brew go
② 编辑~/.zshrc,加入以下环境变量

1
2
3
export GOPATH=~/Applications/Go
export GOROOT=/usr/local/opt/go/libexec
export PATH=${PATH}:$GOROOT/bin:$GOPATH/bin

③ VSCode配置Go环境,首先安装Go扩展,然后终端执行:

1
2
3
4
5
6
7
8
9
go get -u -v github.com/nsf/gocode
go get -u -v github.com/rogpeppe/godef
go get -u -v github.com/golang/lint/golint
go get -u -v github.com/lukehoban/go-outline
go get -u -v sourcegraph.com/sqs/goreturns
go get -u -v golang.org/x/tools/cmd/gorename
go get -u -v github.com/tpng/gopkgs
go get -u -v github.com/newhook/go-symbols
go get -u -v golang.org/x/tools/cmd/guru

不出意外,你会得到一大片的红色o(╯□╰)o,因为golang.org被墙了。可以使用Golang中国的第三方包下载工具手动下载安装。

另外,如果你想在VSCode中调试Golang,请参考:
https://github.com/derekparker/delve/wiki/Building

13 proxychains-ng

做开发的,难免遇到一些不得不搭梯子的情况,上文中的VSCode配置Go环境就是一例。经过多年的实践,Shadowsocks客户端已经因其出色的稳定性和易用性成了我的唯一选择。
但问题来了,终端无法连接到Shadowsocks客户端的socks5代理。怎么办?proxychains-ng刚好解决这个问题。
终端执行

1
2
brew install proxychains-ng
vim /usr/local/etc/proxychains.conf

在 [ProxyList] 下面(也就是末尾)加入代理类型,代理地址和端口
socks5 127.0.0.1 1080

这样以后执行终端命令,就可以在前面加上proxychains4,实现终端搭梯子了\(^o^)/

proxychains-ng

需要注意的是,proxychains4 只能 hook 动态编译的程序达到修改系统调用 connect 的目的,而 go 是静态编译的,故 proxychains4 无法生效。这可以通过 polipo 转换 socks5 为 http proxy 来解决。
参考:http://www.golangtc.com/t/570477c9b09ecc66b900027b

14 DotNet Core

① 终端执行

1
2
3
4
5
brew update
brew install openssl
mkdir -p /usr/local/lib
ln -s /usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib /usr/local/lib/
ln -s /usr/local/opt/openssl/lib/libssl.1.0.0.dylib /usr/local/lib/

② 使用安装包安装
官方网站:https://www.microsoft.com/net/core#macos

③镜像替换
编辑~/.nuget/NuGet/NuGet.Config
注释
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3"/>
添加
<add key="nuget.cnblogs.com" value="https://nuget.cnblogs.com/v3/index.json" protocolVersion="3"/>

15 Android

首先安装AndroidStudio,完成后,如果安装了SS客户端,可以配合socks5代理使用,如图:

AndroidStudio代理

然后安装SDK等工具
① 下载SDK Tools、放入
/Users/elvinchan/Library/Android/sdk
② 编辑~/.zshrc,加入以下环境变量

1
2
export ANDROID_HOME=/Users/elvinchan/Library/Android/sdk
export PATH=${PATH}:$ANDROID_HOME/platform-tools

其他工具参考:http://www.androiddevtools.cn/

16 MySQL

官方下载地址:https://dev.mysql.com/downloads/mysql/

编辑~/.zshrc,加入以下环境变量

1
export PATH=${PATH}:/usr/local/mysql/bin

17 Appium

1
2
3
4
5
6
7
cnpm install -g appium
// Node 环境
cnpm install -g wd
// Python 环境(因为最新的OSX有SIP机制,安装的时候命令加上user)
sudo pip install --user Appium-Python-Client
brew install carthage
cnpm install -g appium-doctor

18 SSH配置

终端执行

1
2
3
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
ssh-add
pbcopy < ~/.ssh/id_rsa.pub

19 显示隐藏文件

1
defaults write com.apple.finder AppleShowAllFiles -bool true