M1 Mac 配置&初始化 Nginx+PHP+MySQL环境

环境

  1. Homebrew🍺
  2. Xcode命令行工具
  3. PHP 8.0
  4. Nginx
  5. MySQL

1.安装Xcode命令行工具

执行命令 Xcode-select --install

2.安装Homebrew


访问 Homebrew 官网,点击访问官网
按照指引,安装Homebrew

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Homebrew常用指令

  • 安装package

brew install 包名

  • 卸载package

brew uninstall 包名

  • 检查package的信息

brew info 包名

  • Homebrew升级

sudo brew update

  • Homebrew搜索package

brew search 包名

  • 检视已安装的package

brew list

3.使用Homebrew安装Nginx

  • 安装Nginx

sudo brew install nginx

  • 启动Nginx

nginx
安装&启动完成后,从浏览器中输入localhost:8080即可访问到Nginx服务器的欢迎页面

  • 关闭Nginx

nginx -s sotp

  • 重启Nginx

nginx -s reload

  • 查看Nginx版本

nginx -v

4.安装PHP 8.0

我作为一个从5.5时代就开始做php开发的开发者,也是第一次使用8.0的稳定版。直接一步到位的原因是:更好的语法&JIT的支持,希望能够在8.0时代获得更好的性能。因此本教程,将会采用8.0版本的PHP进行安装。

  • 使用Homebrew安装PHP

brew install php
如果需要特定版本的php则包名改为`php@指定的版本号`即可

  • 启动&重启

php-fpm

  • 强制关闭php-fpm

sudo pkill -INT -o php-fpm

5.配置PHP

  • 进入php配置文件夹

通过brew info找到php配置文件的位置
brew info php

  • 编辑php.ini文件

vim php.ini

  • 守护PHP进程

默认安装的PHP仅仅会在前台运行,如果此时我们关闭命令窗口的话,php-fpm将会自动关闭,无法继续处理我们的php请求。
开启 `守护模式` 即可解决这一问题

1. 配置php-fpm.conf
vim php-fpm.conf
2. 查找 daemonize
直接键入/daemonize
3. 修改值为yes并且保存
daemonize = yes
虽然注释处,写了默认值应该为yes,但是不知道是什么原因,导致了默认值是no

  • 安装php拓展

通过Homebrew安装的php,自带了pecl。这是一个php拓展的包管理器,后续的拓展安装,仅仅需要通过该管理器安装即可。一般开发用不到,主要是用于实现加密或者网络的时候,可能需要通过该tab来安装

pecl version 查看版本信息

pecl help 可以查看命令帮助

pecl search xdebug 搜索可以安装的扩展信息

pecl install xdebug 安装扩展

pecl install http://pecl.php.net/get/redis-4.2.0.tgz 安装指定版本扩展

6.配置Nginx

  • 通过brew info找到Nginx的配置目录
  • 打开nginx.conf

vim nginx.conf

1. 修改启动端口为80

  • 找到listen关键词
server{ 
    listen 8080; // Nginx需要监听的接口 
    server_name localhost; 
    ...
}
  • 修改为80端口
server{ 
    listen 80; // Nginx需要监听的接口 
    server_name localhost; 
    ...
}

2. 修改默认入口文件
在index这一行中,加入index.php,将其也作为入口文件。

location / { 
    root html; 
    index index.html index.htm index.php;
}

3. 启用php流量转发
找到location ~.php$关键词,将注释删掉(删掉代码前面的’#’),启用php流量转发

location ~ .php$ { 
    root html; 
    fastcgi_pass 127.0.0.1:9000; 
    fastcgi_index index.php; 
    fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; 
    include fastcgi_params;
}

4. 配置php流量转发规则
修改location ~.php$中的fastcgi_param配置项

将其从SCRIPT_FILENAME /scripts$fastcgi_script_name

修改为SCRIPT_FILENAME $document_root$fastcgi_script_name

Nginx常用命令

  • 查看报错文件的路径

nginx -V

nginx version: nginx/1.19.10
built by clang 12.0.0 (clang-1200.0.32.29)
built with OpenSSL 1.1.1k 25 Mar 2021
TLS SNI support enabled
configure arguments: 
...
--error-log-path=/opt/homebrew/var/log/nginx/error.log 
...

找到error-log-path关键字,后面的值即为错误报告的地址。
使用tail -f 文件名查看即可。

  • 检查配置文件正确性

nginx -t

  • 检查Nginx进程运行状态

ps -aux | grep nginx

7.验证PHP环境

  • 启动Nginx服务器
  • 启动php-fpm服务
  • 通过brew info nginx查询网页根目录
  • 在网页根目录下创建index.php

index.php代码:

<?php phpinfo(); ?>
  • 通过浏览器访问http://localhost/index.php

若出现PHP Version + 版本号 以及 php相关的信息则安装完成

php安装成功

8.安装MySQL

我当前的系统版本是BigSur,如果你是Catalina也是兼容的,下载最新版就好了。

  • 点击”No thanks, just start my download.”开始下载即可
  • 下载完成,解压双击运行pkg即可,按照步骤执行即可

管理MySQL

  • 通过访问系统偏好设置的MySQL即可管理MySQL服务
  • 通过GUI管理服务的启停

通过命令行管理MySQL

  • 查看MySQL版本

mysql -v

  • 登录MySQL服务器

mysql -u 用户名 -p
出现`Enter password`后输入你的密码回车,即可登录MySQL服务器。

  • 登出MySQL服务器

exit

通过phpMyAdmin管理MYsql

  • 访问官网下载phpMyAdmin即可,点击访问
  • 下载完成后,将phpmyadmin文件夹拖入网站根目录
  • 通过浏览器访问http://localhost/phpmyadmin即可

常见问题

  • 执行mysql显示command not found: mysql

这是由于没有将mysql指令加入到命令行窗口中的原因

解决方法:

  1. cd ~ 切换到用户目录
  2. 输入vim .bash_profile 打开命令行配置文件
  3. 输入export PATH=$PATH:/usr/local/mysql/bin
  4. 保存文件
  5. 运行source ~/.bash_profile加载配置文件
  6. 此时就可以顺利使用MySQL了

结尾

这篇教程主要目的是为了帮助我记录下Mac系统中配置环境的流程而写。方便我日后如果需要重装或者更换电脑的时候可以快速将环境搭建完成。希望这篇教程也能帮助到你,谢谢。

日常碎碎念 2021.5.26

上周总结

  1. 阿里素质测评
  2. 体质测试
  3. 工作室会议
  4. 海底捞聚餐

1. 阿里素质测评。之前被阿里捞起来面试莫名其妙的,面试官也在问我为什么没有素质测评,因此HR面之后就被安排去把素质测评补上了。现在还在等HR的回复,真的是等的黄花菜都要凉了,好在有一个鹅厂保底,不然等待⌛️真的是一个煎熬的过程呐。

2.体质测试。下学期就要晋升为大四的学生了,时间过的真的是飞快,转眼间就要从大学的课堂中步入社会了,感觉大学很充实,时间也过的很快。唯一让我不爽的就是每年的体质测试了。每次立定跳远和引体向上都是不合格,真的是好伤心💔。好在通过努力,最后还是拿到了60分合格的成绩,但这段经历真的是太痛苦了。

3.工作室会议。跟大家讨论了工作室的看板娘的设计(虽然我们是技术向工作室,但看板娘也很重要啊!),被通知了剩下这段时间的日程安排,跟技术组的朋友们做了交流。虽然工作室远远没有达到我所预期的样子,但好歹是慢慢跑起来了,相信2-3年后,我们会起来的。

4.海底捞聚餐。这个纯属自己糊逼,跟舍友夸下海口说拿到鹅厂offer就请大伙吃海底捞。自己作孽啊,吃饭钱包👛在滴血🩸,QAQ。(不过海底捞的服务真的好好啊!)

本周计划

  1. 软件设计师考试
  2. 参加组织的换届大会
  3. 继续学习基础知识
  4. 继续准备雅思

实施情况

软考就要在本周六(5.29)进行考试,正在紧张的进行准备。目前感觉选择题应该是有把握拿到合格✅的,但下午的案例题,说实话还没个底。继续加油准备吧!今天是周三了,利用今天,明天,后天,不到3天的时间,用心准备一下,我相信还是能够通过的。

一年一度的换届大会又来了,虽然会占用晚上的时间,但感觉作为组织的一份子,还是不要缺席的比较好,去合影留个纪念,毕竟是作为在校的一段记忆,还是要珍重的。

继续学习前端的基础知识并且了解相关项目的实践。比如React Native,lowcode可视化编程的落地实施等方面的信息和知识。

继续准备雅思,原计划是6月中,6月底进行二战雅思的。但可惜计划赶不上变化,5月底软考,6月中六级,6月中下期末考,6月底要去租房子。整个6月的行程被安排的满满当当的,因此还是计划9月或者10月二战雅思(期盼这一次能一步到位到6.5分😂)。

结尾

希望在接下来的考试中能够取得一个出色的成绩吧!加油!

为什么图片转Base64会多出30%的数据量

背景

由于最近在准备🐧厂的面试,被问及是否知道为什么url-loader将图片转换成Base64后,会有增加33%的数据量。因此,我开始从晚上搜集这方面的资料,但遗憾的是,大多的博文的关注点基本都是在实际应用(Webpack,前端优化…)或者是Base64如何进行编码,没有很清晰的阐述为什么会多出33%的数据量的过程和原因。因此,我希望可以通过这篇博文补充这方面的讯息。

为什么会多出30%的数据

当我们把3个Byte的数据转换成为Base64的字符时,根据Base64的规则,3个Byte的字符会转换成24个二进制位。Base64一位只有6个位二进制位,因此会产生4个Byte的字符。

但是现代计算机系统当中,一个字符要有8个二进制位来存储因此,4个字符对应的6个二进制位都要补充2个0,来转换成8个二进制位的字符存储到计算机当中。因此3个Byte(24位二进制位)的数据要用4个Byte(32位二进制位)来存储。并且32位中只有24位是用来存储数据的,剩下8位都是无用的补充位。

因此我们可以很简单的计算出输出:输入 = 4:3 (33% 数据冗余). 与此同时,我们同样可以总结出,输入n Bytes,输出就有(下图)那么长。

{\textstyle 4\left\lceil {\frac {n}{3}}\right\rceil }

总结

核心思路,原来三个Byte的数据,转换成Base64后,要用四个Byte来存储。多了1/3(33%)的数据要存储,所以数据量会增多。

把照片打包进bundle.js中,看来还是要因地制宜的。url-loader默认数值应该是8192bit(1024 byte),增大33%后就是增加了300byte。因此,url-loader主要还是用于打包只有几个像素的小文件比较适合。不会对整体的加载速度有过多的影响。

引用

https://en.wikipedia.org/wiki/Base64

http://www.ruanyifeng.com/blog/2008/06/base64.html

主题的一些小思考

最近重新燃起写Blog的斗志,就开始上来收拾了一下。其实感觉还是用回原生Wordpress提供的主题就已经足够好了。之前总是喜欢花里胡哨的主题,却忘记了写作的本心。现在换回这个原始的样式,希望能够把重心搬回内容创作上面。

近期做的一些小改动

  • ✅ 适配了深色模式
  • ✅ 卸载插件,加快加载速度
  • ⛔️ 准备迁移博客至支持HTTP 2.0的服务提供商

尾言

总的来说,就是懒得折腾了,没有当初折腾的那颗心了。感觉一切从简,才是最爽的,现阶段我的观点变成了,与其花时间装修,还不如好好摸摸🐟算了。(当然也有可能是最近几天的天气️☁️太热导致的完全不想动)

日常碎碎念 2021.5.15

距离上一次上来写文章已经过去了接近3个月了。上一次还是过年期间呢!时间过的真的好快啊。在这段时间,其实还是发生了不少变化的。最显著的变化还是:

  1. 从MateBook换到到了M1 Macbook Air
  2. 雅思第一把拿到6分的成绩
  3. 顺利拿到鹅厂和蚂蚁的实习offer

接下来就一点点的慢慢讲讲吧,虽然不一定有人看。

1.从MateBook换到到了M1 Macbook Air

去年Apple发布了基于ARM架构的M1芯片,那时我其实还不是特别心动,感觉新的Mac电脑距离我还是有挺远距离的,MateBook足以满足我日常工作学习的需求。当不幸的是,2月份MateBook宕掉了,日常的数据存放在了移动硬盘上还好。部分生产环境的代码还是放在了内置的硬盘当中,不幸遗失。虽然最后通过重刷系统得以恢复正常,但为了安全,我决定还是更换电脑。当时我的需求主要是便携,另外当时我的移动设备有iPhone和iPad了,由此更加增加了我购入MacBook的欲望。

我选择的配置是16+256的Air。之所以选择这个配置,主要是考虑到当时matebook无法升级内存导致天天内存溢出的窘境。而256则是因为512的价格太贵了,增加的1500元成本已经允许我购买一个三星T7 1T的移动硬盘了(之后也证明确实是明智的选择)。

由于过年放假的因素,我的Macbook实际到达时间是3月初,用到现在大概已经有2个月了。无风扇设计的Air是真的非常的棒,无论是静音设计还是便携性,都是行业领先的水准。而低功耗和新架构,也满足我的前端开发的性能需求。说实话,Air在运行大型前端项目的时候,还是会稍稍发热的,但远远不会像我的上一台笔记本以上,热的跟平底锅一样。各个方面都令我非常的满意,如果你也是一位前端开发者,并且也正好需要更换笔记本。那么基于M系列的Macbook绝对是非常值得考虑的,并且由于第三季度就会换代,在5月13日的今天,我会建议你等M2的发布。相比在那个时间点下,软件层面的适配会更加完善,而硬件层面的性能示范也一定会做的更好。

2.雅思第一把拿到6分

没想到自己有一天也要去考雅思,准备出国读研究生。2021年真的是非常不可思议,4月份的第一战,也狠狠的把我拍到在了地面上,口语稀烂,阅读听力稀烂,最终也只考到了6分,实在是没脸见人了😂。不过由于是第一次其实也是情有可原的啦,6月中再战吧,希望到时候我能追到6.5分。

3.三本菜🐔拿到大厂offer

其实我自己根本没想到自己能够在5月份收获两家梦寐以求的大厂offer的。腾讯和阿里都陆陆续续拿到了暑期实习的offer。真的是超级开心啊。四月底等待的时候都快抑郁了。拿到offer后真的是好兴奋,感觉自己过去三年熬的这么多个项目,终于没有白费。也感谢鹅厂和阿里不会有学历歧视,让我走到最后一面拿到offer。反倒是网易有道、京东、字节直接就进人才库了,真的是狗。

未来的展望

开心了快一周了,需要静下心来学习了,5月底的软考需要认真准备了,继续加油,准备软考和6月的六级。7-9月认真实习,10月雅思冲6.5分就是我对未来的大致计划了。努力努力,希望总会来的,冲冲冲!