配置MAC电脑用于开发
- 安装homebrew,安装方法如下:
首先,在MAC电脑底部边栏找到“启动台”,单击,在展示的界面中找到“终端”,单击,在终端中粘贴如下脚本即可,当然你还可以将其存为脚本,并在终端上运行该脚本。
#HomeBrew自动安装脚本
#cunkai.wang@foxmail.com
#路径表.
HOMEBREW_PREFIX="/usr/local"
HOMEBREW_REPOSITORY="${HOMEBREW_PREFIX}/Homebrew"
HOMEBREW_CACHE="${HOME}/Library/Caches/Homebrew"
STAT="stat -f"
CHOWN="/usr/sbin/chown"
CHGRP="/usr/bin/chgrp"
GROUP="admin"
#获取前面两个.的数据
major_minor() {
echo "${1%%.*}.$(x="${1#*.}"; echo "${x%%.*}")"
}
#获取系统版本
macos_version="$(major_minor "$(/usr/bin/sw_vers -productVersion)")"
#获取系统时间
TIME=$(date "+%Y-%m-%d %H:%M:%S")
JudgeSuccess()
{
if [ $? -ne 0 ];then
echo '\033[1;31m此步骤失败 '$1'\033[0m'
if [[ "$2" == 'out' ]]; then
exit 0
fi
else
echo "\033[1;32m此步骤成功\033[0m"
fi
}
# 判断是否有系统权限
have_sudo_access() {
if [[ -z "${HAVE_SUDO_ACCESS-}" ]]; then
/usr/bin/sudo -l mkdir &>/dev/null
HAVE_SUDO_ACCESS="$?"
fi
if [[ "$HAVE_SUDO_ACCESS" -ne 0 ]]; then
echo "\033[1;31m开机密码输入错误,获取权限失败!\033[0m"
fi
return "$HAVE_SUDO_ACCESS"
}
abort() {
printf "%s\n" "$1"
exit 1
}
shell_join() {
local arg
printf "%s" "$1"
shift
for arg in "$@"; do
printf " "
printf "%s" "${arg// /\ }"
done
}
execute() {
if ! "$@"; then
abort "$(printf "\033[1;31m此命令运行失败(再次运行脚本或者手动运行此命令测试权限):sudo %s\033[0m" "$(shell_join "$@")")"
fi
}
# 管理员运行
execute_sudo()
{
# local -a args=("$@")
# if [[ -n "${SUDO_ASKPASS-}" ]]; then
# args=("-A" "${args[@]}")
# fi
if have_sudo_access; then
execute "/usr/bin/sudo" "$@"
else
execute "sudo" "$@"
fi
}
#添加文件夹权限
AddPermission()
{
execute_sudo "/bin/chmod" "-R" "a+rwx" "$1"
execute_sudo "$CHOWN" "$USER" "$1"
execute_sudo "$CHGRP" "$GROUP" "$1"
}
#创建文件夹
CreateFolder()
{
echo '-> 创建文件夹' $1
execute_sudo "/bin/mkdir" "-p" "$1"
JudgeSuccess
AddPermission $1
}
RmAndCopy()
{
if [[ -d $1 ]]; then
echo ' ---备份要删除的文件夹到系统桌面....'
if ! [[ -d /Users/$(whoami)/Desktop/Old_Homebrew/$TIME/$1 ]]; then
mkdir -p /Users/$(whoami)/Desktop/Old_Homebrew/$TIME/$1
fi
cp -rf $1 /Users/$(whoami)/Desktop/Old_Homebrew/$TIME/$1
echo " ---$1 备份完成"
fi
sudo rm -rf $1
}
RmCreate()
{
RmAndCopy $1
CreateFolder $1
}
#git提交
git_commit(){
git add .
git commit -m "your del"
}
#version_gt 判断$1是否大于$2
version_gt() {
[[ "${1%.*}" -gt "${2%.*}" ]] || [[ "${1%.*}" -eq "${2%.*}" && "${1#*.}" -gt "${2#*.}" ]]
}
#version_ge 判断$1是否大于等于$2
version_ge() {
[[ "${1%.*}" -gt "${2%.*}" ]] || [[ "${1%.*}" -eq "${2%.*}" && "${1#*.}" -ge "${2#*.}" ]]
}
#version_lt 判断$1是否小于$2
version_lt() {
[[ "${1%.*}" -lt "${2%.*}" ]] || [[ "${1%.*}" -eq "${2%.*}" && "${1#*.}" -lt "${2#*.}" ]]
}
#一些警告判断
warning_if(){
git_https_proxy=$(git config --global https.proxy)
git_http_proxy=$(git config --global http.proxy)
if [[ -z "$git_https_proxy" && -z "$git_http_proxy" ]]; then
echo "未发现Git代理(属于正常状态)"
else
echo "\033[1;33m
提示:发现你电脑设置了Git代理,如果Git报错,请运行下面两句话:
git config --global --unset https.proxy
git config --global --unset http.proxy\033[0m
"
fi
}
echo '
\033[1;32m开始执行Brew自动安装程序\033[0m
\033[1;36m[cunkai.wang@foxmail.com]\033[0m
['$TIME']['$macos_version']
\033[1;36mhttps://zhuanlan.zhihu.com/p/111014448\033[0m
'
#选择一个下载源
echo '\033[1;32m
请选择一个下载镜像,例如中科大,输入1回车。
源有时候不稳定,如果git克隆报错重新运行脚本选择源。cask非必须,有部分人需要。
1、中科大下载源 2、清华大学下载源 3、北京外国语大学下载源 4、腾讯下载源(不显示下载进度) 5、阿里巴巴下载源(缺少cask源)\033[0m'
read "MY_DOWN_NUM?请输入序号: "
case $MY_DOWN_NUM in
"2")
echo "
你选择了清华大学下载源"
USER_HOMEBREW_BOTTLE_DOMAIN=https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles
#HomeBrew基础框架
USER_BREW_GIT=https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git
#HomeBrew Core
USER_CORE_GIT=https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-core.git
#HomeBrew Cask
USER_CASK_GIT=https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-cask.git
USER_CASK_FONTS_GIT=https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-cask-fonts.git
USER_CASK_DRIVERS_GIT=https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-cask-drivers.git
;;
"3")
echo "
北京外国语大学下载源"
USER_HOMEBREW_BOTTLE_DOMAIN=https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles
#HomeBrew基础框架
USER_BREW_GIT=https://mirrors.bfsu.edu.cn/git/homebrew/brew.git
#HomeBrew Core
USER_CORE_GIT=https://mirrors.bfsu.edu.cn/git/homebrew/homebrew-core.git
#HomeBrew Cask
USER_CASK_GIT=https://mirrors.bfsu.edu.cn/git/homebrew/homebrew-cask.git
USER_CASK_FONTS_GIT=https://mirrors.bfsu.edu.cn/git/homebrew/homebrew-cask-fonts.git
USER_CASK_DRIVERS_GIT=https://mirrors.bfsu.edu.cn/git/homebrew/homebrew-cask-drivers.git
;;
"4")
echo "
你选择了腾讯下载源"
USER_HOMEBREW_BOTTLE_DOMAIN=https://mirrors.cloud.tencent.com/homebrew-bottles
#HomeBrew基础框架
USER_BREW_GIT=https://mirrors.cloud.tencent.com/homebrew/brew.git
#HomeBrew Core
USER_CORE_GIT=https://mirrors.cloud.tencent.com/homebrew/homebrew-core.git
#HomeBrew Cask
USER_CASK_GIT=https://mirrors.cloud.tencent.com/homebrew/homebrew-cask.git
;;
"5")
echo "
你选择了阿里巴巴下载源(阿里缺少cask源)"
USER_HOMEBREW_BOTTLE_DOMAIN=https://mirrors.aliyun.com/homebrew/homebrew-bottles
#HomeBrew基础框架
USER_BREW_GIT=https://mirrors.aliyun.com/homebrew/brew.git
#HomeBrew Core
USER_CORE_GIT=https://mirrors.aliyun.com/homebrew/homebrew-core.git
#HomeBrew Cask
USER_CASK_GIT=https://mirrors.aliyun.com/homebrew/homebrew-cask.git
;;
*)
echo "
你选择了中国科学技术大学下载源"
#HomeBrew 下载源 install
USER_HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles
#HomeBrew基础框架
USER_BREW_GIT=https://mirrors.ustc.edu.cn/brew.git
#HomeBrew Core
USER_CORE_GIT=https://mirrors.ustc.edu.cn/homebrew-core.git
#HomeBrew Cask
USER_CASK_GIT=https://mirrors.ustc.edu.cn/homebrew-cask.git
;;
esac
echo '\033[1;32m'
read "MY_Del_Old?!!!此脚本将要删除之前的brew(包括它下载的软件),请自行备份。
->是否现在开始执行脚本(N/Y)"
echo '\033[0m'
case $MY_Del_Old in
"y")
echo "--> 脚本开始执行"
;;
"Y")
echo "--> 脚本开始执行"
;;
*)
echo "你输入了 $MY_Del_Old ,自行备份老版brew和它下载的软件, 如果继续运行脚本应该输入Y或者y
"
open /usr/local/
exit 0
;;
esac
echo '==> 通过命令删除之前的brew、创建一个新的Homebrew文件夹
(设置开机密码:在左上角苹果图标->系统偏好设置->"用户与群组"->更改密码)
(如果提示This incident will be reported. 在"用户与群组"中查看是否管理员)
\033[1;36m请输入开机密码,输入过程不显示,输入完后回车\033[0m'
sudo echo '开始执行'
# 让环境暂时纯粹,重启终端后恢复
export PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
RmCreate ${HOMEBREW_REPOSITORY}
RmAndCopy /Users/$(whoami)/Library/Caches/Homebrew/
RmAndCopy /Users/$(whoami)/Library/Logs/Homebrew/
RmCreate ${HOMEBREW_PREFIX}/Caskroom
RmCreate ${HOMEBREW_PREFIX}/Cellar
RmCreate ${HOMEBREW_PREFIX}/var/homebrew
directories=(bin etc include lib sbin share var opt
share/zsh share/zsh/site-functions
var/homebrew var/homebrew/linked
Cellar Caskroom Homebrew Frameworks)
for dir in "${directories[@]}"; do
if ! [[ -d "${HOMEBREW_PREFIX}/${dir}" ]]; then
CreateFolder "${HOMEBREW_PREFIX}/${dir}"
fi
AddPermission ${HOMEBREW_PREFIX}/${dir}
done
git --version
if [ $? -ne 0 ];then
sudo rm -rf "/Library/Developer/CommandLineTools/"
echo '\033[1;36m安装Git\033[0m后再运行此脚本,\033[1;31m在系统弹窗中点击“安装”按钮
如果没有弹窗的老系统,需要自己下载安装:https://sourceforge.net/projects/git-osx-installer/ \033[0m'
xcode-select --install
exit 0
fi
echo '
\033[1;36m下载速度觉得慢可以ctrl+c或control+c重新运行脚本选择下载源\033[0m
==> 克隆Homebrew基本文件(32M+)
'
warning_if
sudo git clone $USER_BREW_GIT ${HOMEBREW_REPOSITORY}
JudgeSuccess 尝试再次运行自动脚本选择其他下载源或者切换网络 out
echo '==> 创建brew的替身'
find ${HOMEBREW_PREFIX}/bin -name brew -exec sudo rm -f {} \;
sudo ln -s ${HOMEBREW_PREFIX}/Homebrew/bin/brew ${HOMEBREW_PREFIX}/bin/brew
JudgeSuccess
echo '==> 克隆Homebrew Core(224M+)
\033[1;36m此处如果显示Password表示需要再次输入开机密码,输入完后回车\033[0m'
sudo mkdir -p ${HOMEBREW_PREFIX}/Homebrew/Library/Taps/homebrew/homebrew-core
sudo git clone $USER_CORE_GIT ${HOMEBREW_PREFIX}/Homebrew/Library/Taps/homebrew/homebrew-core/
JudgeSuccess 尝试再次运行自动脚本选择其他下载源或者切换网络 out
echo '==> 克隆Homebrew Cask(248M+) 类似AppStore
\033[1;36m此处如果显示Password表示需要再次输入开机密码,输入完后回车\033[0m'
if [[ "$MY_DOWN_NUM" -eq "5" ]];then
echo '\033[1;33m阿里源没有Cask 跳过\033[0m'
else
sudo mkdir -p ${HOMEBREW_PREFIX}/Homebrew/Library/Taps/homebrew/homebrew-cask
sudo git clone $USER_CASK_GIT ${HOMEBREW_PREFIX}/Homebrew/Library/Taps/homebrew/homebrew-cask/
if [ $? -ne 0 ];then
sudo rm -rf ${HOMEBREW_PREFIX}/Homebrew/Library/Taps/homebrew/homebrew-cask
echo '\033[1;31m尝试切换下载源或者切换网络,不过Cask组件非必须模块。可以忽略\033[0m'
else
echo "\033[1;32m此步骤成功\033[0m"
fi
fi
echo '==> 配置国内镜像源HOMEBREW BOTTLE'
if [[ -f ~/.zshrc ]]; then
AddPermission ~/.zshrc
fi
echo "
# HomeBrew
export HOMEBREW_BOTTLE_DOMAIN=${USER_HOMEBREW_BOTTLE_DOMAIN}
export PATH=\"/usr/local/bin:\$PATH\"
export PATH=\"/usr/local/sbin:\$PATH\"
# HomeBrew END
" >> ~/.zshrc
if [[ -f ~/.bash_profile ]]; then
AddPermission ~/.bash_profile
fi
echo "
# HomeBrew
export HOMEBREW_BOTTLE_DOMAIN=${USER_HOMEBREW_BOTTLE_DOMAIN}
export PATH=\"/usr/local/bin:\$PATH\"
export PATH=\"/usr/local/sbin:\$PATH\"
# HomeBrew END
" >> ~/.bash_profile
JudgeSuccess
source ~/.zshrc
source ~/.bash_profile
echo '
==> 安装完成,brew版本
'
#判断系统版本
if version_gt "$macos_version" "10.14"; then
echo "$macos_version"
else
echo '\033[1;31m检测到你不是最新系统,会有一些报错,请稍等Ruby下载安装;\033[0m
'
fi
AddPermission ${HOMEBREW_REPOSITORY}
#先暂时设置到清华大学源,中科大没有Ruby下载镜像
HOMEBREW_BOTTLE_DOMAIN=https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles
echo 'brew -v
'
brew -v
if [ $? -ne 0 ];then
echo '
\033[1;31m失败 查看下面文章第二部分的常见错误
https://zhuanlan.zhihu.com/p/111014448
如果没有解决,把运行脚本过程截图发到 cunkai.wang@foxmail.com --end
\033[0m'
exit 0
else
echo "\033[1;32mBrew前期配置成功\033[0m"
fi
echo '
==> brew update
'
HOMEBREW_BOTTLE_DOMAIN=${USER_HOMEBREW_BOTTLE_DOMAIN}
brew update
if [ $? -ne 0 ];then
echo '
\033[1;31m失败 去下面文章看一下第二部分的常见错误解决办法
https://zhuanlan.zhihu.com/p/111014448
如果没有解决,把运行脚本过程截图发到 cunkai.wang@foxmail.com \033[0m
'
else
echo "
\033[1;32m上一句如果提示Already up-to-date表示成功\033[0m
\033[1;32mBrew自动安装程序运行完成\033[0m
\033[1;32m国内地址已经配置完成\033[0m
初步介绍几个brew命令
本地软件库列表:brew ls
查找软件:brew search google(其中google替换为要查找的软件关键字)
查看brew版本:brew -v 更新brew版本:brew update
\033[1;32m
现在可以输入命令open ~/.zshrc -e 或者 open ~/.bash_profile -e 整理一下重复的语句(运行 echo \$SHELL 可以查看应该打开那一个文件修改)
https://zhuanlan.zhihu.com/p/111014448 欢迎来给点个赞\033[0m
"
fi
使用这种方式安装好的hemebrew默认切换为国内源
- homebrew 常用命令
brew list # 查看使用brew安装的软件
brew search 【软件名】# 使用brew 搜索软件
brew install 【软件名】 # 使用brew 下载软件
brew uninstall 【软件名】 # 使用brew 卸载软件
参考链接: https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh
- 上面脚本的另一种执行方式
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
- 安装pyenv和virtualenv
在日常开发中,我们通常需要多种python开发环境,这时候,这两种与虚拟环境相关的工具就必不可少。通常,我使用pyenv来安装和管理不同的python版本,使用virtualenv来根据不同的python版本创建虚拟环境。
安装pyenv的方式:
brew search pyenv
brew install pyenv
配置pyenv,在终端中输入:
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
pyenv常用命令:
pyenv versions # 查看当前使用pyenv安装的python版本
pyenv version # 查看当前使用python版本
pyenv install 2.7.14 # 安装版本号为2.7.14的python
pyenv uninstall 3. 6.5 # 卸载版本号为3.6.5的python
安装virtualenv的方式:
pip install virtualenv -i https://pypi.douban.com/simple/
默认virtualenv安装好后是配置好的,不需要再进行多余的配置,如果没有,就卸载virtualenv重新再装一次。
pip uninstall virtualenv # 卸载virtualenv
pip install virtualenv -i https://pypi.douban.com/simple # 安装virtualenv
使用virtualenv配合pyenv来管理不同版本python的虚拟环境
1. 创建虚拟环境
"""
通常,我会在~/.venv目录下面创建所有项目的虚拟环境,便于统一管理。
"""
virtualenv --python=~/.pyenv/versions/3.6.5/bin/python3 venv
# 其中~/.pyenv/versions/3.6.5是使用pyenv安装的python的版本号
# bin目录下的python3是python解释器
# venv 是虚拟环境名
# 翻译过来就是:根据pyenv的某个版本的python解释器创建了一个名为 venv的虚拟环境
2. 激活虚拟环境
source ~/.venv/venv/bin/activate # 使用source执行activate脚本对虚拟环境进行激活
3. 在激活虚拟环境的情况下安装项目依赖的python包
pip install xxx
pip install -r requirements.txt
4. 退出虚拟环境
deactivate # 可在任意目录下执行
当我想要操控其他的虚拟环境时,我首先退出当前的虚拟环境,然后激活另一虚拟环境。
补充链接: python安装包的几种方式
- 安装项目依赖常用软件
- nginx
brew search nginx
brew install nginx
nginx -s reload # 启动nginx
brew services start nginx # 通过brew启动nginx
ps aux|grep nginx # 查看nginx进程,确保它被启动
- 配置文件位置:/usr/local/etc/nginx/nginx.conf
- mongo
"""
2020 年版的homebrew已经不再支持mongoDB, 不信可以用brew装一下,
不过支持mongodb-community
brew install mongobrew tap mongodb/brew
brew install mongodb-community
brew services start mongodb-community
brew services stop mongodb-community
brew services restart mongodb-commnity
"""
- 配置文件位置:/usr/local/etc/mongod.conf
- redis
brew install redis
echo 'export PATH="/usr/local/opt/redis@3.2/bin:$PATH"' >> ~/.zshrc
brew services start redis-server
redis-cli # 使用客户端软件连接redis-server,可对其中的一些数据进行操作
- 配置文件位置:/usr/local/etc/redis.conf
- node
node 官网安装:https://nodejs.org/zh-cn/download/releases/ Mac下载xx.pkg文件解压即可安装 - docker
下载对应平台的软件包https://www.docker.com/products/docker-desktop
- 进行项目开发