Apple 在10月5日正式发布了macOS High Sierra,我听说最新的APFS 磁盘类型会大大提高 SSD 效率,很早以前就升级到 Beta 版了。经过1个多月的初体验,我总结了一些经验,在这里和大家分享。
首先是一些关于在最新 Macos 下搭建LNMP开发环境的流程建议,直接进入正题:
Preparing
安装 Homebrew、Ohmyzsh、开发常用包&软件
1.1 Homebrew
Homebrew又叫Brew,是MacOS上的软件包管理工具,能在Mac中方便的安装软件或者卸载软件,和linux系统中的yum非常相似,只需要一个命令,非常方便。官方网站:http://brew.sh
安装方法(打开 Terminal 终端,输入):
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
检验安装成功方法(打开 Terminal 终端,输入):
brew doctor
安装常用软件包(打开 Terminal 终端,输入):
brew install wget
brew install autoconf
brew install openssl
Brew 常用语句(打开 Terminal 终端,输入):
#我这里以操作 php70 为例
brew update #更新brew可安装包,建议每次执行一下
brew search php70 #搜索php7.0
brew tap josegonzalez/php #安装扩展<gihhub_user/repo>
brew tap #查看安装的扩展列表
brew install php70 #安装php7.0
brew remove php70 #卸载php7.0
brew upgrade php70 #升级php7.0
brew options php70 #查看php7.0安装选项
brew info php70 #查看php7.0相关信息
brew home php70 #访问php7.0官方网站
人在天朝的话,极有可能出现安装速度过于缓慢的情况,有时候会让你感觉安装处于假死的状态,不必担心,耐心等待即可,切不可心烦意乱的关闭终端窗口(网上有其他教程说可以切换 brew 的源到中科大 CDN,本人亲测:中科大 CDN 虽然快很多,但是clone 下来的文件和原本源存在一定差异,更新不及时。个人建议还是耐心等待,使用原本的源)
1.2 Oh my zsh
目前常用的 Linux 系统和 Mac OS 系统的默认 Shell 都是 bash,但是真正强大的 Shell 是深藏不露的 zsh,史称『终极 Shell』,这玩意儿就像「X天 Php 从入门到放弃」系列,但这次是真的神功速成。Github:https://github.com/robbyrussell/oh-my-zsh
安装方法(打开 Terminal 终端,输入):
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
人在天朝的话,极有可能出现安装速度过于缓慢的情况,有时候会让你感觉安装处于假死的状态,不必担心,耐心等待即可,切不可心烦意乱的关闭终端窗口(网上有其他教程说可以切换 brew 的源到中科大 CDN,本人亲测:中科大 CDN 虽然快很多,但是clone 下来的文件和原本源存在一定差异,更新不及时。个人建议还是耐心等待,使用原本的源)
1.3 Xcode
Xcode 是苹果出品的包含一系列工具及库的开发套件。
通过 AppStore 安装最新版本的 Xcode
我们一般不会用 Xcode 来开发后端项目。但这一步也是必须的,因为 Xcode 会附带安装一些如 Git 等必要的软件
1.3.1 Command Line Tools for Xcode
这一步会帮你安装许多常见的基于 Unix 的工具。Xcode 命令行工具作为 Xcode 的一部分,包含了 GCC 编译器
安装方法(打开 Terminal 终端,输入):
xcode-select --install
当 Xcode 和 Xcode Command Line Tools 安装完成后,你需要启动 Xcode,并点击同意接受许可协议,然后关闭 Xcode 就可以了。这一步骤也是必须的,否则 Xcode 包含的一系列开发工具都将不可用。
Working On
安装 Mysql、Php72、redis、Nginx、创建虚拟机、配置 SSL
2.1 Mysql
安装方法(打开 Terminal 终端,输入):
brew install mysql
MySQL的安装包相对较大,在这个步骤需要等待一段时间,下载失败后可多次尝试安装,Brew每次会自动寻找合适的下载源
设置 Mysql 开机启动方法(打开 Terminal 终端,输入):
ln -sfv /usr/local/opt/mysql/*.plist ~/Library/LaunchAgents
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
初始化、启动方法(打开 Terminal 终端,输入):
#正常初始化
/usr/local/opt/mysql/bin/mysql_secure_installation
#若出错请启动服务
brew services start mysql
安全配置方法(Terminal 终端会提示[EnglishVersion]):
> Enter current password for root (enter for none):
#直接 Enter,因为没有设置过
> Change the root password? [Y/n]
#是否更改 root 用户的密码
> Remove anonymous users? [Y/n]
#不需要,键入 Y
> Disallow root login remotely? [Y/n]
#禁止root远程登录,建议键入 Y
> Remove test database and access to it? [Y/n]
#删除测试数据表,建议键入 Y
> Reload privilege tables now? [Y/n]
#确保设置生效,键入 Y
检验安装成功方法(打开 Terminal 终端,输入):
#查看端口
ps aux | grep mysql
#测试 Mysql 连接
mysql -uroot -p你设置的密码
为了直观,这里我以密码:123456为例,测试Mysql连接时键入:
mysql -uroot -p123456
安装 Phpmyadmin 方法(打开 Terminal 终端,输入):
brew install phpmyadmin
2.2 Php
安装准备(打开 Terminal 终端,输入):
brew tap homebrew/dupes
brew tap homebrew/versions
brew tap homebrew/homebrew-php
安装 Php72(打开 Terminal 终端,输入):
brew install php72
配置 Php72 环境变量(打开 Terminal 终端,输入):
echo 'export PATH="$(brew --prefix php72)/bin:$PATH"' >> ~/.bash_profile
echo 'export PATH="$(brew --prefix php72)/sbin:$PATH"' >> ~/.bash_profile
echo 'export PATH="/usr/local/bin:/usr/local/sbib:$PATH"' >> ~/.bash_profile
source ~/.bash_profile
由于Mac自带了php和php-fpm,因此需要添加系统环境变量PATH来替代自带PHP版本。
验证 Php72 配置(打开 Terminal 终端,输入):
#brew安装的php,正常会显示 php7.2.0betaX
php -v
#Mac自带的Php,正常会显示 php7.1.7
/usr/bin/php -v
#brew安装的php-fpm,正常会显示 php7.2.0betaX
php-fpm -v
#Mac自带的Php-fpm,正常会显示 php7.1.7
/usr/bin/php-fpm -
修改php-fpm配置文件(打开 Terminal 终端,输入):
vim /usr/local/etc/php/7.2/php-fpm.conf
/**找到pid相关,去掉pid = run/php-fpm.pid前的“;”, 那么php-fpm的pid文件就会自动产生在 /usr/local/var/run/php-fpm.pid**/
php-fpm验证与启动(打开 Terminal 终端,输入):
#测试php-fpm配置
php-fpm -t
php-fpm -c /usr/local/etc/php/7.2/php.ini -y /usr/local/etc/php/7.2/php-fpm.conf -t
#启动php-fpm
php-fpm -D
php-fpm -c /usr/local/etc/php/7.2/php.ini -y /usr/local/etc/php/7.2/php-fpm.conf -D
#关闭php-fpm
kill -INT `cat /usr/local/var/run/php-fpm.pid`
#重启php-fpm
kill -USR2 `cat /usr/local/var/run/php-fpm.pid`
如果出现两个[notice],不用管,除了他们没有其他错误的花,php-fpm 是可以正常启动了。如果出现其他错误,请尝试百度搜索,或者来联系我
php-fpm设置开机启动(打开 Terminal 终端,输入):
ln -sfv /usr/local/opt/php72/*.plist ~/Library/LaunchAgents
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.php56.plist
安装 composer(打开 Terminal 终端,输入):
curl -sS https://getcomposer.org/installer | php mv composer.phar /usr/local/bin/composer
#改为国内源
composer config -g repo.packagist composer https://packagist.phpcomposer.com
2.3 Nginx
安装 Nginx 方法(打开 Terminal 终端,输入):
brew install nginx
Nginx的安装包相对较大,在这个步骤需要等待一段时间,下载失败后可多次尝试安装,Brew每次会自动寻找合适的下载源
启动 Nginx 方法(打开 Terminal 终端,输入):
#测试nginx配置是否有语法错误
nginx -t
#打开 nginx
sudo nginx
#重新加载配置|重启|停止|退出 nginx
nginx -s reload|reopen|stop|quit
#也可以使用Mac的launchctl来启动|停止 nginx
launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist
launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist
设置 Nginx 开机启动方法(打开 Terminal 终端,输入):
ln -sfv /usr/local/opt/nginx/*.plist ~/Library/LaunchAgents
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist
设置 Nginx 监听端口权限(打开 Terminal 终端,输入):
sudo chown root:wheel /usr/local/Cellar/nginx/1.12.1/bin/nginx
sudo chmod u+s /usr/local/Cellar/nginx/1.12.1/bin/nginx
配置Nginx.conf(打开 Terminal 终端,输入):
#配置需要用到的目录
mkdir -p /usr/local/var/logs/nginx
mkdir -p /usr/local/etc/nginx/sites-available
mkdir -p /usr/local/etc/nginx/sites-enabled
mkdir -p /usr/local/etc/nginx/conf.d
mkdir -p /usr/local/etc/nginx/ssl
sudo mkdir -p /var/www
sudo chown :staff /var/www
sudo chmod 775 /var/www
#使用 vim 编辑器编辑 nginx.conf
vim /usr/local/etc/nginx/nginx.conf
#nginx.conf 文件中此段内容部分,输入或修改为以下内容
pid /usr/local/var/run/nginx.pid;
events {
worker_connections 256;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /usr/local/var/logs/access.log main;
sendfile on;
keepalive_timeout 65;
port_in_redirect off;
include /usr/local/etc/nginx/sites-enabled/*;
}
vim 编辑器的退出并保存:按 ECS => 按 CAPS LOCK(大写键) => 按两下 Z
配置php-fpm 配置文件(打开 Terminal 终端,输入):
#使用 vim 编辑器编辑 php-fpm 配置
vim /usr/local/etc/nginx/conf.d/php-fpm
#写入以下内容
location ~ \.php$ {
try_files $uri = 404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_intercept_errors on;
include /usr/local/etc/nginx/fastcgi.conf;
}
nginx 虚拟机配置(打开 Terminal 终端,输入):
#创建 info.php index.html 404.html 403.html文件到 /var/www 下面
vi /var/www/info.php
//输入:<?php phpinfo() ?>
vi /var/www/index.html
//输入:<html><head><meta charset="UTF-8"><title>Default Page</title></head><body><h1 align="center">Default</h1></body></html>
vi /var/www/403.html
//输入:<html><head><meta charset="UTF-8"><title>403 Page</title></head><body><h1 align="center">Default</h1></body></html>
vi /var/www/404.html
//输入:<html><head><meta charset="UTF-8"><title>404 Page</title></head><body><h1 align="center">Default</h1></body></html>
配置虚拟主机配置文件(打开 Terminal 终端,输入):
#使用 vim 编辑器编辑虚拟主机配置
vim /usr/local/etc/nginx/sites-available/default
#输入以下内容
server {
listen 80;
server_name localhost;
root /var/www/;
access_log /usr/local/var/logs/nginx/default.access.log main;
location / {
index index.html index.htm index.php;
autoindex on;
include /usr/local/etc/nginx/conf.d/php-fpm;
}
location = /info {
allow 127.0.0.1;
deny all;
rewrite (.*) /.info.php;
}
error_page 404 /404.html;
error_page 403 /403.html;
}
配置SSL虚拟主机配置文件(打开 Terminal 终端,输入):
#使用 vim 编辑器编辑SSL虚拟主机配置
vim /usr/local/etc/nginx/sites-available/default-ssl
#输入以下内容
server {
listen 443;
server_name localhost;
root /var/www/;
access_log /usr/local/var/logs/nginx/default-ssl.access.log main;
ssl on;
ssl_certificate ssl/localhost.crt;
ssl_certificate_key ssl/localhost.key;
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
include /usr/local/etc/nginx/conf.d/php-fpm;
}
location = /info {
allow 127.0.0.1;
deny all;
rewrite (.*) /.info.php;
}
error_page 404 /404.html;
error_page 403 /403.html;
}
配置phpmyadmin虚拟主机配置文件(打开 Terminal 终端,输入):
#使用 vim 编辑器编辑phpmyadmin虚拟主机配置
vim /usr/local/etc/nginx/sites-available/phpmyadmin
#输入以下内容
server {
listen 306;
server_name localhost;
root /usr/local/share/phpmyadmin;
error_log /usr/local/var/logs/nginx/phpmyadmin.error.log;
access_log /usr/local/var/logs/nginx/phpmyadmin.access.log main;
ssl on;
ssl_certificate ssl/phpmyadmin.crt;
ssl_certificate_key ssl/phpmyadmin.key;
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
index index.html index.htm index.php;
include /usr/local/etc/nginx/conf.d/php-fpm;
}
}
这里 phpmyadmin 默认设置为306端口,且开启 ssl
配置 SSL(打开 Terminal 终端,输入):
mkdir -p /usr/local/etc/nginx/ssl
openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 -subj "/C=US/ST=State/L=Town/O=Office/CN=localhost" -keyout /usr/local/etc/nginx/ssl/localhost.key -out /usr/local/etc/nginx/ssl/localhost.crt
openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 -subj "/C=US/ST=State/L=Town/O=Office/CN=phpmyadmin" -keyout /usr/local/etc/nginx/ssl/phpmyadmin.key -out /usr/local/etc/nginx/ssl/phpmyadmin.crt
创建虚拟主机软连接并开启(打开 Terminal 终端,输入):
ln -sfv /usr/local/etc/nginx/sites-available/default /usr/local/etc/nginx/sites-enabled/default
ln -sfv /usr/local/etc/nginx/sites-available/default-ssl /usr/local/etc/nginx/sites-enabled/default-ssl
ln -sfv /usr/local/etc/nginx/sites-available/phpmyadmin /usr/local/etc/nginx/sites-enabled/phpmyadmin
重新装载 nginx(打开 Terminal 终端,输入):
sudo nginx -s reload
可能会要求输入密码
测试 nginx 开启情况(打开浏览器,地址栏输入):
http://localhost
http://localhost/info.php
http://localhost/404.html
https://localhost/index.html(SSL)
https://localhost/info.php(SSL)
https://localhost/404.html(SSL)
https://localhost:306(SSL)
2.4 Redis
安装方法(打开 Terminal 终端,输入):
brew install redis
人在天朝的话,极有可能出现安装速度过于缓慢的情况,有时候会让你感觉安装处于假死的状态,不必担心,耐心等待即可,切不可心烦意乱的关闭终端窗口(网上有其他教程说可以切换 brew 的源到中科大 CDN,本人亲测:中科大 CDN 虽然快很多,但是clone 下来的文件和原本源存在一定差异,更新不及时。个人建议还是耐心等待,使用原本的源)
开启 Redis方法(打开 Terminal 终端,输入):
redis-server
之后进入了管理模式,如果看到Ready to accept connections,说明安装运行成功,直接关闭终端再打开即可
安装 Php-Redis方法(打开 Terminal 终端,输入):
wget https://pecl.php.net/get/redis-3.1.3.tgz
tar -zxvf redis-3.1.3.tgz
cd redis-3.1.3
phpize
./configure
make
make install
修改 php.ini方法(打开 Terminal 终端,输入):
#使用 vim 编辑器编辑 php.ini
vi /usr/local/etc/php/7.2/php.ini
//在文件最后加入extension=redis.so
#重启 php-fpm
sudo killall php-fpm && sudo php-fpm -D
#查看是否安装成功
php -m |grep redis