概要
Homebrew官网:https://brew.sh/index_zh-cn
Homebrew一般简称brew
,命令行下也是使用的简称作为核心命令。作用跟Ubuntu下的apt-get
或CentOS下的yum
类似,是一个ruby写的包管理工具,本质上是基于git的,更新brew本质上是从github拉取代码。关于brew的更多的介绍和安装就不墨迹了。
基础
安装软件:
brew install {soft_tag} # 其中{soft_tag}为软件包名称
卸载软件:
brew uninstall {soft_tag} 或 brew remove {soft_tag} # 其中{soft_tag}为软件包名称
更新软件:
brew upgrade {soft_tag} # 其中{soft_tag}为软件包名称,这里比较特别,不是update # 当然update命令也是存在,update命令用于brew更新自己
其他的一些常用命令:
## 查看软件包信息 brew info {soft_tag} # 其中{soft_tag}为软件包名称 ## 查看已安装的软件包列表 brew list ## 搜索软件包 brew search {soft_tag} # 其中{soft_tag}为软件包名称 ## brew还有图形化的客户端,叫Cakebrew,本文核心是在命令行下,与Cakebrew无关
Cakebrew,建议熟悉命令行下的原理后使用,会更方便。
本文的php是基于php-fpm模式下的,也就是webServer为nginx,经典的nginx+php+mysql搭配。
# 检查安装过的php版本情况,list命令加一个完整名称的参数 brew list --full-name # 安装nginx brew install nginx #################### # 1、不带版本号将安装最新版,当前最新1.15.8 # 2、安装完配置文件所在目录:/usr/local/etc/nginx/ # 3、80端口有权限问题,需要给下执行权限,并在配置文件中修改执行用户 # 修改成当前登录用户接,譬如我的当前登录用户名为:jingjing # nginx配置文件中的user配置为:jingjing staff # 这个得依据实际情况,查看自己的用户名命令:whoami # 查看当前用户所属用户组:groups `whoami` # 查看指定用户所属用户组:groups USER_NAME # 其中USER_NAME换成你指定的用户的名称 # 4、给予nginx的root权限,注意mac下wheel组的含义 #################### # 给予nginx的root权限 sudo chown root:wheel /usr/local/opt/nginx/bin/nginx sudo chmod u+s /usr/local/opt/nginx/bin/nginx # 安装php 5.6、7.1、7.2 brew install php@5.6 brew install php@7.1 brew install php@7.2
brew多版本php管理
php多版本切换墨迹内容
brew原先有个叫php-version工具,可以一键切换,现在好像移除了,命令行下还是自己动手丰衣足食的好。
brew中php的从5系列到7系列都是支持的,只不过截止至写此文时原先brew原先支持的安装php扩展的方式已经移除,需要配置brew仓库源(brew中称之为tap),或者自己编译安装或pecl方式安装。
当前php各版本的软件包命名规则为php@版本号
,例如php7.2的就是php@7.2
,那么安装php7.2就是brew install php@7.2
,如果不带版本号,brew会自动安装最新版。brew安装包时都会自动更新下软件源信息,下图中Updating Homebrew有时候会等待比较长时间,因为是在从github中拉取代码,github国内速度较慢,所以慢,要么等要么自找资镜像替换,这个就是他话了。下图中提示很明确,因为写此文之前我已经安装过了php7.2,所以再次安装会有个error,还会告诉你有最新版本了。
日常开发中,接触的项目一般需要5.6、7.1、7.2,以及尝鲜安装了最新的7.3,所以就涉及到多版本切换和管理。brew安装的php是允许多版本的,只不过需要手动切换下版本,当然也可以自己做多版本共存,通过nginx的配置文件指定使用的版本,这就是他话了,本文就是最简单的运行切换。
php多版本切换步骤
## 1、查看当前命令行使用的php版本 php -v ## 2、查看当前运行[一般都是开机启动的]的php版本 brew services list ## 该命令是brew提供的对mac下plist启动器的一个封装 ## 用户级别的开机启动项 ls ~/Library/LaunchAgents/ ## 系统级别的开机启动项 ls /Library/LaunchAgents/ ## 查看发现示例mac当前运行的php7.2,就依次为例继续 ## 3、停止并卸载7.2的服务切换到7.1 brew services stop php@7.2 ## 两个含义: # 1、停止php7.2 # 2、从开机启动项中删除php7.2,也就是说执行此命令后php7.2开机后不会再自动启动 ## 2、去除php7.2的命令行link brew unlink php@7.2 ## 3、强制启用7.1的命令行link brew link --force php@7.1 # 加--force参数是强制 ## 4、关掉当前的命令行界面,重新打开一个命令行界面 ## 5、开启7.1的服务 brew services start php@7.1 ## 两个含义: # 1、开始执行php7.1 # 2、php7.1加入开机自动启动 #################### # 6、补充: # 命令行可能不会立即生效,可能存在~/.bash_profile中的优先环境变量设定 # ~/.bash_profile中若有设定请删除 # 然后关掉命令行新打开一个就是php7.1了,不确定的话检查一下:php -v ####################
理解原理很重要。
MySQL多版本管理
MySQL多版本管理墨迹内容
MySQL有点儿需要处理的,brew提供的配置文件默认不支持多版本,需要自己调整一个datadir
参数,而brew安装MySQL后默认是没有my.cnf
配置文件的,这也正常,MySQL配置文件本身就不是必须的,因为对这点的理解有误,鄙人最开始做MySQL多版本自主切换测试时差点把上亿的数据搞丢了,后来弄明白了,其实并没有丢,只不过在是已有5.6的datadir
指定的目录下的MySQL数据被新安装的MySQL5.7启动时给自动升级了,所以数据备份很重要,备份、备份、备份,重要的事儿说3遍。
划重点:
1、brew安装的MySQL默认datadir
路径为:/usr/local/var/mysql
2、MySQL的basedir
为:/usr/local/opt/mysql@VERSION
,其中VERSION为版本号,如果是5.6则是:/usr/local/opt/mysql@5.6
3、命令行下执行MySQL的bin
目录:也就是命令行下直接敲mysql执行的文件目录,有一个软连接,路径为/usr/local/bin
,也就是说当前用那个版本的mysql,/usr/local/bin
下的mysql就会指向具体的MySQL的basedir
下的bin目录,
4、MySQL实际真实的basedir
路径:有点儿绕,其实/usr/local/opt/mysql@VERSION
也依然是一个软链接,最真实指向的路径在/usr/local/Cellar/mysql@VERSION
目录下,而且/usr/local/Cellar/mysql@VERSION
还有一层目录,例如当前mysql5.7版本的实际文件路径为:/usr/local/Cellar/mysql@5.7/5.7.23/
MySQL多版本切换
# 1、安装MySQL 5.6并配置 brew install mysql@5.6 # 配置MySQL5.6 # 本次安装的版本号为5.6.42,这个版本号在下方会用到 # 不同小版本路径依据版本号是有差异的 vi /usr/local/Cellar/mysql@5.6/5.6.42/homebrew.mxcl.mysql@5.6.plist # 将其中的--datadir配置项的路径改一下,默认是:/usr/local/var/mysql # 然后新建一个你修改后的目录,这个修改就是为了改动mysql的数据存储路径 # 因为不同版本的数据存储路径都是一样,这样会导致数据的问题 # 注意:这样改动之后,如果后续brew升级下MySQL5.6之后,不要着急立即启动 # 而因立即依据相同方法去修改下对应新版本的homebrew.mxcl.mysql@5.6.plist文件中的--datadir配置项 # 现在可以启动MySQL5.6并按提示初始化5.6了 brew services start mysql@5.6 # 2、安装MySQL 5.7并配置 brew install mysql@5.7 ## 如果只有两个MySQL版本就无需改动配置了,这样以后升级5.7之后就不需要变动配置,毕竟开发换嘛 # 3、MySQL不同版本切换 ## 上述配置修改处理之后,跟php多版本切换类似,注意顺序,顺序很重要 # 3.1、查看当前MySQL版本 mysql -V # 3.2、停止当前版本 brew services stop mysql@5.7 # 3.3、去除当前版本的link brew unlink mysql@5.7 # 3.4、建立需要启动的版本的link brew link --force mysql@5.6 # 3.5、关掉当前的命令行界面,重新打开一个命令行界面 ## 使用brew去除或新建一个link之后,关掉当前命令行再打开一个 ## 这样新的link在新的命令行立即生效 ## 如果不关掉的话,就需要source一下环境变量,两者都可以使用 ## 原理都是一样,重新打开一个,打开过程系统会自动source环境变量 # 3.6、启动5.6 ## 启动之前可以确认下当前命令行下的mysql版本 mysql -V brew services start mysql@5.6
Enjoy Yourself!
哟嚯,本文评论功能关闭啦~