戚薇戚薇戚薇

让他夜夜
热液乳业人员

利用Homebrew管理php-fpm模式下的多版本PHP和MySQL

更新时间:2020-05-21 11:46:05点击:

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

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/nginxsudo chmod u+s /usr/local/opt/nginx/bin/nginx # 安置php 5.6、7.1、7.2 brew install php@5.6brew install php@7.1brew 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,还会报告你有非常新版本了。

brew安置php

通常开辟中,触碰的项目普通需求5.6、7.1、7.2,以及尝鲜安置了非常新的7.3,因此就波及到多版本切换和经管。brew安置的php是容许多版本的,只但是需求手动切换下版本,固然也能够本人做多版本共存,经历nginx的建设文件指定应用的版本,这即是他话了,本文即是非常简略的运转切换。

稽查目前php版本和运转的php版本

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/

brew下MySQL的软持续情况

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、去除目前版本的linkbrew unlink mysql@5.7 # 3.4、确立需求启动的版本的linkbrew 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!