题外话:前几天,终于以原价一半的价格,将我那台15版mbp在bbs上卖了出去。之所以用了“终于”这个词儿,是我一直迟迟没有下定决心卖掉它,可眼瞅着再不卖掉,又要掉价,况且我的新电脑,也终于下来了。

话说这个mbp,我还真没用多少,原因是刚买完没多久,公司电脑就下来了,加上当年各种软件都缺少mac版,用起来各种不顺手,后来也就搁置了。不过,最近发现,时隔几年,现在各种软件已经出了mac版,加之原生的linux系统,用起来还是挺爽的。

拿到新mbp,第一件事就是搭环境,话说最新版的macOS10.14系统已经内置好了apache、php7.16、git,真不愧是为广大开发们准备的本本啊。
不过为了更顺手,我没有启用自带的apache,而是安装了nginx,并且为了尝鲜,安装了最新版的php7.3+mysql8.0,事实证明,在尝鲜的同时,也要fix这些最新版带来的bug or 兼容。
在使用git时,遇到了点小坑,在咨询身边一圈儿及度娘无果的情况下,只好亲自操刀,将其fix掉。

1.先说php+nginx+mysql环境搭建,发现再也没有比这篇文章写的更全面的了,我就不再累述,直接放url:
Mac OS X 系统自带的 php-fpm 配置和 nginx、mysql 的安装
http://lzw.me/a/mac-osx-php-fpm-nginx-mysql.html
Mac brew安装redis
https://www.cnblogs.com/cloudshadow/p/mac_brew_install_redis.html
其间爬坑:
MAC下终端走代理的几种方法(比如公司内网环境下需要配置)
https://www.jianshu.com/p/30ffeff2ce53
访问本地php文件一直报404 file not found错误(已解决)
https://blog.csdn.net/u013957017/article/details/79819877
Mac自带PHP启动php-fpm问题解决
https://blog.csdn.net/zrainload/article/details/78962062?tdsourcetag=s_pcqq_aiomsg
mac用brew安装mysql,设置初始密码
https://www.jianshu.com/p/3996f6a2fa45?tdsourcetag=s_pcqq_aiomsg
mysql 8.0以上 新版本账号密码策略修改和密码修改
https://www.cnblogs.com/hellozg/p/9333052.html?tdsourcetag=s_pcqq_aiomsg
nginx环境配置--**拒绝了我们的连接请求
https://blog.csdn.net/Kano_W/article/details/79532004?tdsourcetag=s_pcqq_aiomsg

2.关于php7.3+mysql8.0兼容
php7.3 bug:Errors Installing Composer on macOS (JIT compilation Failed)
https://stackoverflow.com/questions/53690624/errors-installing-composer-on-macos-jit-compilation-failed?tdsourcetag=s_pcqq_aiomsg
mysql8.0之larave5.5l兼容:Laravel NO_AUTO_CREATE_USER 错误
https://blog.csdn.net/Dreamweaver9_0/article/details/81458307
遇到 MySQL 8.0.11 的一些坑
https://laravel-china.org/articles/10736/some-craters-in-mysql-8011
另外,mysql8.0强制表必须有主键,所以对于没有主键的表,要先建立主键。

3.关于启动php+nginx+mysql+redis
第一种,可以像第一篇文章中说的那样,将这些功能加入到开机启动命令里。
我选择了第二种,也就是将这些命令写成一个shell脚本,这样不必每次开机都启动这些,在需要启动时,执行一下sh就好了。
通过shell脚本启动Nginx、Mysql、PHP服务
http://www.findme.wang/blog/detail/id/237.html
shell 自动重启nginx php shell脚本
https://blog.csdn.net/u010098331/article/details/50855983?utm_source=blogxgwz3

4.关于git
说起git,还真是一波三折,前边说过,mac已经自带了git,简单配置下,就可以pull下来代码,可是在commit的时候,一直提示未配置name和email,配置时,又提示没有.gitconfig权限,在分别问了度娘、身边小伙伴、IT gg依然无果后,惆怅了半天,忽然灵机一动:这不是个软链接嘛,我把软链接删除试试,苍天啊,果然删除后可以了!后来又一想,这不一直提示文件夹不存在嘛,我在home(~)目录下建立一个叫dotfiles的文件夹试试,果然,这一招也管用!原来,mac下虽然已经加好了各种.配置文件的dotfiles目录软链接,却没有这个文件夹,所以一直无法配置.文件!

➜ php_proj git:(dev_20181107_exam) ✗ git config --global user.name "zhangsan"
error: 不能锁定配置文件 /Users/zhangsan/.gitconfig: No such file or directory
➜ ls -la ~
lrwxr-xr-x 1 zhangsan staff 19 12 21 22:35 .gitconfig -> dotfiles/.gitconfig

5.其它工具:phpstorm、TextWrangler、navicat、sourceTree、laravel、dotfiles、php-version
mac下PHPStorm2018.2破解教程
https://blog.csdn.net/wm9028/article/details/82700221
另外,mac下没有notepad++,推荐另外一款文本编辑器:TextWrangler
Mac 下 MySQL 5.7 连接 navicat 中文乱码问题终极解决方案
https://blog.csdn.net/chenyubo1996/article/details/52040487
SourceTree - A free Git & Mercurial client for Windows or Mac
https://www.sourcetreeapp.com/
Laravel 的开发环境 Valet
https://laravel-china.org/docs/laravel/5.5/valet/1286
Mac下安装Laravel
https://www.jianshu.com/p/5b0718f1fe93
dotfiles新手教程
https://www.jianshu.com/p/7UJapk
dotfiles入门
https://www.jianshu.com/p/b88435465d23
mac下使用php-version快速切换php版本
https://blog.csdn.net/tiansidehao/article/details/78982164

6. 后记:
a. 考虑将此安装过程打包成可一键安装的shell脚本 or docker环境
b. brew安装的php7.3中,已自带了GD库的freetype扩展,可以用来生成水印

7. 感谢小伙伴推荐,发现已经有现成的php docker环境啦——Laradock
[ Laravel 5.5 文档 ] 快速入门 —— 使用 Laradock 搭建基于 Docker 的 PHP 开发环境
https://laravelacademy.org/post/7691.html
Laradock配置安装踩坑
https://blog.csdn.net/f2130793/article/details/82179716

mac开发环境爬坑记(搭建php+nginx+mysql+redis+laravel+git+phpstorm)的更多相关文章

  1. MAC开发环境安装

    MAC开发环境安装 安装sancha cmd: 安装: https://www.sencha.com/products/extjs/cmd-download/ cmd运行 $ open .bash_p ...

  2. JAVA学习(一):Java介绍及其平台、开发环境的配置与搭建

    Java介绍及其平台.开发环境的配置与搭建 1.Java的介绍 Java是一种面向对象的编程语言,具有跨平台.可移植.分布式.简单.可扩展等诸多特性.Java能够进行桌面应用.Web应用.分布式系统及 ...

  3. Python For Mac 开发环境安装 以及问题记录

    Python For Mac 开发环境安装记录 把自己安装的过程记录一下,亲测可用 1.Python3环境安装(转载http://www.cnblogs.com/meng1314-shuai/p/90 ...

  4. 阿里云服务器部署php的laravel项目,在阿里云买ECS 搭建 Linux+Nginx+Mysql+PHP环境的

    在阿里云买ECS的时候选择自己习惯的镜像系统,我一般都是使用Linux Ubuntu,所以,以下的配置都是在Ubuntu 14.04稳定支持版的环境中搭建Linux+Nginx+Mysql+PHP环境 ...

  5. [Linux] Ubuntu Server 12.04 LTS 平台上搭建WordPress(Nginx+MySql+PHP) Part II

    接着上一节继续搭建我们的LNMP平台,接下来我们安装PHP相关的服务 sudo apt-get install php5-cli php5-cgi php5-fpm php5-mcrypt php5- ...

  6. [Linux] Ubuntu Server 12.04 LTS 平台上搭建WordPress(Nginx+MySQL+PHP) Part IV

    接下来我们去下载 WorePress 用最新的 3.7.1 下载地址是:http://cn.wordpress.org/wordpress-3.7.1-zh_CN.zip 我们先建立一个文件夹 /va ...

  7. react-native —— 在Mac上配置React Native Android开发环境排坑总结

    配置React Native Android开发环境总结 1.卸载Android Studio,在终端(terminal)执行以下命令: rm -Rf /Applications/Android\ S ...

  8. 1.OpenGL mac开发环境搭建记录

    1.安装GLEW 和GLFW,转摘至:https://www.cnblogs.com/pretty-guy/p/11357793.html 2.开始测试,整个工程报错,关键信息如下: code sig ...

  9. 分享下mac安装xamarin跨平台开发环境的坑

    之前在vs2015上安装好了xamarin环境,考虑到调试IOS仍然需要mac机,昨天决定直接在mac上安装xamarin. 安装完所有的效果如上图,此时已经可以创建安卓和IOS环境. 我安装过程中, ...

随机推荐

  1. xml文件的增删改读

    最近学习了利用XmlDocument对象对xml进行增删改读操作,就写了一个小的例子记录下来,加深印象,以后忘了也可以找出来看看. xml文件: <?xml version="1.0& ...

  2. 从第三方Launcher授权启动指定APP的设计与实现

    Case 背景: Case要求从第三方Launcher中首次启动指定的应用程序时.弹出对话框提示用户进行授权启动,若用户未授权,则在下次再次启动该应用时依旧弹出对话框提示用户进行授权.直到用户相应用进 ...

  3. spring boot中 使用http请求

    因为项目需求,需要两个系统之间进行通信,经过一番调研,决定使用http请求. 服务端没有什么好说的,本来就是使用web 页面进行访问的,所以spring boot启动后,controller层的接口就 ...

  4. Java序列化的几种方式

    本文着重解说一下Java序列化的相关内容. 假设对Java序列化感兴趣的同学能够研究一下. 一.Java序列化的作用    有的时候我们想要把一个Java对象变成字节流的形式传出去,有的时候我们想要从 ...

  5. DataUml Design 介绍9 - DataUML 1.3版本功能(查询分析器功能等)

    DataUML 1.3 (下载)主要更新内容如下: 1.增加查询分析器功能: 2.增加打开历史文件记录功能: 3.修改查询对象功能: 4.增加显示对象长度功能: 5.增加配置显示表字段功能: 6.增加 ...

  6. Map根据value排序

    网上找到的资源, package com.test.ch1; import java.util.ArrayList; import java.util.Collections; import java ...

  7. ptmalloc、tcmalloc和jemalloc

    内存优化总结:ptmalloc.tcmalloc和jemalloc 转载 2017年09月05日 18:57:12 3674 转载于:http://www.cnhalo.net/2016/06/13/ ...

  8. if not aa 表示如果aa等于空就是true 相当于if not aa 相当于 if aa== 空

    aa='tt' print(not aa) #表示 bb是空的 not 表示空 bb='' print(not bb)

  9. 记录下push推送优化改进点

    一)自主研发的push服务的特点及优势: 1) 消息回执确认(ack); 2) 有效期推送(设置消息的有效期); 3) 精准推送(设置设备组别推送); 4) 下发任务分解(拆分任务,多进程); 5) ...

  10. sessionstorage:本地临时存储

    HTML5 web存储有两个重要对象: localStorage - 没有时间限制的数据存储 sessionStorage - 针对一个 session 的数据存储(关闭窗口,存储的数据清空) 一般涉 ...