常用的性能测试工具,Apache ab 这个用得比较多的,这篇笔记用来介绍另外一个轻量级性能测试工具——wrk。
Boo's Blog
Stay foolish, Stay hungry
常用的性能测试工具,Apache ab 这个用得比较多的,这篇笔记用来介绍另外一个轻量级性能测试工具——wrk。
Valet 是为 Mac 提供的极简主义开发环境,没有 Vagrant ,也无需
/etc/hosts
文件,甚至可以使用本地隧道公开共享你的站点。
Laravel Valet 会在你的 Mac 上将 Nginx 设置为随系统启动后台运行,然后使用 DnsMasq , Valet 将所有的请求代理到*.test
域名并指向本地安装的站点目录。
换句话说,一个速度极快的 Laravel 开发环境仅仅需要占用 7MB 内存。 Valet 并不是想要替代 Vagrant 或者 Homestead,只是提供另外一种选择,更加灵活、方便、以及占用更小的内存。
Valet 是 Mac 极简主义者的 Laravel 开发环境。
有时使用Homebrew 安装工具时,会出现类似下面的错误:
macOS 默认自带的是英文输入法,虽然也有简体中文,不过词库不丰富,不太好用。一般会选择安装一个第三方的输入法,这时就会有两个输入法共存了。
这篇笔记主要是用来整理自己一直在使用的一些较为好用的终端工具/扩展。
最近在Mac 上做开发,起初在搭建环境时 遇到了部分问题,加上Mac 预装的那个PHP 版本,实在是不好用,php-fpm
总是启不动,最后索性决定在本地自己装个多版本,可以随时自由切换。
是否需要清除旧版本?
因为需要在Mac 上安装其他版本,所以预装的那个版本的PHP 的存在就没啥意义了。
考虑到本机的其他软件可能会依赖它,为了给以后省些事,最后还是决定将预装的版本给移除掉。
事实证明移除了也没关系。
这里说的旧版本指的是Mac 自带的PHP版本。
1 | # /private/etc/ |
执行完上面这些命令就能将旧版本的PHP 彻底的从你的Mac 上移除了。
直到2018年3月底,所有PHP 相关的brew 都由 homebrew/php
tab 处理,但是已经弃用了,所以现在我们使用homebrew/core
包中的可用的内容。这应该是一个更好维护但是不太完整的包。
由于PHP5.6
和PHP7.0
在 Homebrew 上已被弃用,因为以不被支持,虽然不建议在生产环境中使用,但还是可以在开发环境中使用这些不受支持的版本,可以参考:PHP支持的版本。
请记住,Homebrew 正式支持PHP7.1 到 7.3 ,因此如果要安装 PHP5.6或PHP7.0,则需要执行如下命令:
1 | $ brew tap shivammathur/php |
接下来正式开始安装PHP 的各种版本,并使用简单的脚本来进行版本之间的切换。
1 | $ brew install shivammathur/php/php@5.6 |
第一个安装所花费的时间长一些,因为需要安装一堆brew 的依赖,随后其他版本的安装的将很快。
所安装各版本的PHP都在该目录下:
1 | $ ls /usr/local/etc/php |
安装完以上版本的PHP 之后,执行:
1 | $ php -v |
可以看到目前所使用的PHP 版本是7.3(最后安装完的那个),现在试图切换到第一个安装的PHP 版本:
1 | $ brew unlink php@7.3 && brew link --force --overwrite php@5.6 |
unlick
安装PHP 版本之间不再需要联系,因为默认情况下他们是没有符号链接。
再次查看当前版本:
1 | $ php -v |
切换的挺顺利的,但如果每次需要切换时都需要这样输入就变得很麻烦了,幸运的是,一些勤劳的人已经为我们完成了艰苦的工作,并编写了一个非常方便的脚本——PHP切换器脚本。
将sphp
脚本安装到 brew 的标准中/usr/local/bin
:
1 | $ curl -L https://gist.githubusercontent.com/rhukster/f4c04f1bf59e0b74e335ee5d186a98e2/raw > /usr/local/bin/sphp |
完成这些步骤后,就能够使用脚本命令切换PHP版本:
1 | $ sphp 7.2 |
使用时会需要提供管理员密码,相比长长的命令这已经省事很多了。
好了,到这里就顺利的完成了多版本的PHP 安装以及切换。
在不需要切换版本时,使用brew services
命令可以对该版本的PHP 进行管理:
启动/停止/重启 PHP服务:
1 | $ brew services start/stop/restart php |
当PHP 服务启动时,通过查看进程列表,可以发现多了几个名为php-fpm
的进程。
php-fpm
的进程所在目录:/usr/local/opt/php/sbin/php-fpm
这个进程很重要,在与 Nginx 交互时,如果没有启动它,通常会收到 502 Bad Gateway
的错误。
尽管不需要刻意的去管理这个进程,但如果这个进程意外停止运行了,还是要知道该如何启动它。
1 | $ cd /usr/local/opt/php/sbin/ |
用这种方式启动,当使用⌃ C
退出时,进程也会跟着退出。
1 | # /usr/local/opt/php/sbin/ |
如果用这种方式启动,就算退出了当前会话,进程会以守护进程的方式运行着。
最后再啰嗦两句,如果需要把当前5.6版本切换成7.2,那么需要分别做两件事:
1 | # 第一步 |
如果只做了第一步,那么你会发现 php -v
的版本输出的确是 7.2,但php_info()
所打印的结果却还是 5.6。
这是因为机器上安装了多个PHP 版本,当使用php -v
命令时,它将显示默认PHP CLI
的版本,而该版本可能不是网站所使用的版本。
所以找出用于特定网站的PHP 版本的最可靠方法是使用phpinfo()
函数。
php cli
可以正常访问,但是Web 服务却没有办法访问,这是因为安装了PHP,所以可以通过命令行直接访问,但是 php-fpm
却没有启动,所以Web 服务没法正常访问。
启动Web 服务:
1 | cd /usr/local/Cellar/php/8.1.1/sbin |
sphp 这个脚本所做的事情等于以下命令:
1 | brew unlink php@7.3 && brew link --force --overwrite php@5.6 |
只是改变了命令行的版本,Web 服务最终还是要以允许的php-fpm
为准。
最近使用Mac 时,被告知磁盘空间严重不足了,我心想最近又没有下载什么大文件,怎么会突然满盘了。
本来之前就知道有 tmux
这样一个窗口分隔工具,只不过一直使用着iTerm2
,本身就自带有标签页功能,所以就一直没去学习这个工具。
这段时间需要经常访问Linux
服务器,所以在服务器上安装了这个工具。
Mac:
1 | brew install tmux |
Linux:
1 | apt-get install tmux |
一般情况下 tmux
中所有的快捷键都需要和前缀快捷键 ⌃b
来组合使用(注:⌃ 为 Mac 的 control 键),以下是常用的窗格(pane
)快捷键列表。
第一次使用tmux
可能会被Session
、窗口
、窗格
这些陌生的概念,弄得摸不着头脑。
这里总结成一句话就是:
一个完整的会话(Session)是由数个窗口组成,而一个窗口又可以分成若各个窗格。
使用tmux
命令会默认新建一个tmux
会话:
1 | // 默认新建一个Session 名称为 0 的窗口。 |
常用Session
操作:
窗口的概念不同于窗格,窗口互不影响,窗格相互分隔。
常用窗口操作:
窗格是在窗口下的概念,若干个窗格组成一个窗口。
常用窗格操作:
上面那些命令都是配合⌃ + b
快捷键使用的,下面的这些命令都是在Shell
进程中直接执行的。
新建名称为 foo 的会话
1 | tmux new -s foo |
列出所有 tmux 会话
1 | tmux ls |
恢复上一次会话
1 | tmux a |
恢复名为 foo 的会话
1 | tmux a -t foo |
删除名为 foo 的会话
1 | tmux kill -session -t foo |
删除所有会话
1 | tmux kill -server |
tmux
和iTerm2
都有窗口管理方面的功能,只是前者相比后者的优势在于:
iTerm2
的窗格切换快捷键(⌘⌥→
)容易与其他软件全局快捷键冲突(例如 Spectacle
的窗口分割快捷键),tmux
由于存在前缀快捷键,所以不存在快捷键冲突问题;tmux
可以在终端软件重启后通过命令行恢复上次的 session
,而终端软件则不行;tmux
简洁优雅、订制性强,学会之后也能在 Linux
上使用,有助于逼格提升。1 / 2