本文转载自 https://dianmoge.com/article/2389 ,我这里整理后再加上自己的一些见解…

准备安装

为了减少上线错误,我们保持安装版本与服务器版本一致:Nginx 1.17,PHP 7.2,MySQL 5.7

Mac电脑版本:MacOS 10.14

xcode-select --install

sudo mkdir -p /data/www && sudo chmod -R 777 /data/www

安装 HomeBrew

使用 Mac 的程序员必不可少的一步便是安装 Homebrew ,他就像是 centOS 的yum 命令和 ubuntu 的 apt-get 命令一样,通过 brew 命令,我们可以快速的安装一些软件包。

使用命令行安装 Homebrew 的命令如下:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

使用 brew doctor 检查是否存在冲突,然后使用 brew update && brew upgrade 对 brew 进行升级,关于 HomeBrew 更多的使用可以看看: https://bin.zmide.com/?p=277

安装 Nginx

Nginx 在 Mac OS 中可以直接使用 brew 命令进行安装:

brew install nginx

如果需要使用 80 端口的话,需要将 nginx 加入 root 组当中同时设置开机启动:

sudo cp -v /usr/local/opt/nginx/*.plist /Library/LaunchDaemons/

sudo chown root:wheel /Library/LaunchDaemons/homebrew.mxcl.nginx.plist

启动 nginx 服务:

sudo nginx

测试 nginx 是否安装成功,因为默认配置文件监听的是 8080 端口,所以先对 8080 端口发起请求:

curl -IL http://127.0.0.1:8080

结果应该类似于下:

HTTP/1.1 200 OK
Server: nginx/1.9.1
Date: Fri, 29 May 2015 14:50:47 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Fri, 29 May 2015 14:40:47 GMT
Connection: keep-alive
ETag: "5444dea7-264"
Accept-Ranges: bytes

安装 PHP

PHP 在 Mac OS 中可以直接使用 brew 命令进行安装:

brew install php@7.2

安装完成后,还需要将 php 加入环境变量 $PATH 当中:

# 如果使用bash的话
vim ~/.bash_profile
export PATH="/usr/local/sbin:$PATH"
source ~/.bash_profile

# 如果使用ZSH的话
vim ~/.zshrc
export PATH="/usr/local/sbin:$PATH"
source ~/.zshrc

然后可以设置 php-fpm 的开机自启动:

mkdir -p ~/Library/LaunchAgents

ln -sfv /usr/local/opt/php@7.2/homebrew.mxcl.php@7.2.plist ~/Library/LaunchAgents/

launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.php@7.2.plist

使用以下命令监测 php-fpm 是否启动成功:

lsof -Pni4 | grep LISTEN | grep php

如果启动成功应当有以下类似输出 ( 用户不同可能有较小的差异 ) :

bindeMac:~ bin$ sudo lsof -Pni4 | grep LISTEN | grep php-fpm
php-fpm    589           bin    9u  IPv4 0x6e563ff015250729      0t0  TCP 127.0.0.1:9000 (LISTEN)
php-fpm    590           bin    7u  IPv4 0x6e563ff015250729      0t0  TCP 127.0.0.1:9000 (LISTEN)
php-fpm    591           bin    7u  IPv4 0x6e563ff015250729      0t0  TCP 127.0.0.1:9000 (LISTEN)

安装 MySQL

通过 brew 命令进行 MySQL 安装:

brew install mysql@5.7

同样,可以设置 MySQL 的开机自启动:

ln -sfv /usr/local/opt/mysql@5.7/*.plist ~/Library/LaunchAgents

launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql@5.7.plist

然后进行 MySQL 的安全安装,使用以下命令,可以更改 root 密码、删除匿名用户、关闭远程连接等:

mysql_secure_installation

然后会输出以下内容:

> Enter current password for root (enter for none):  //默认没有密码,直接回车即可
> Change the root password? [Y/n]      //是否更改root密码,选择是,然后输入并确认密码
> Remove anonymous users? [Y/n]       //是否删除匿名用户,选择是
> Disallow root login remotely? [Y/n]     //是否禁止远程登录,选择是
> Remove test database and access to it? [Y/n]   //是否删除test数据库,选择是
> Reload privilege tables now? [Y/n]     //是否重载表格数据,选择是

测试数据库是否安装成功:

mysql -u root -p

然后输入刚才设置的 root 密码,将会输出以下内容:

Mac OS 下搭建 LNMP 开发环境的步骤详解-天真的小窝

配置 Nginx

修改 nginx 配置文件

vim /usr/local/etc/nginx/nginx.conf

将内容替换为:

worker_processes  1;

error_log   logs/error.log  debug;


events {
    worker_connections  1024;
}


http {

    include       mime.types;
    default_type  application/octet-stream;

    server_names_hash_bucket_size 128;
    client_header_buffer_size 32k;
    large_client_header_buffers 4 32k;
    client_max_body_size 50m;
 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/etc/nginx/logs/access.log main;

    fastcgi_connect_timeout 3000;
    fastcgi_send_timeout 3000;
    fastcgi_read_timeout 3000;
    fastcgi_buffer_size 64k;
    fastcgi_buffers 4 64k;
    fastcgi_busy_buffers_size 128k;
    fastcgi_temp_file_write_size 256k;

    sendfile        on;

    keepalive_timeout  65;

    index index.html index.php;

    include sites-enabled/*;
}

然后创建 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_param SCRIPT_FILENAME
     $document_root$fastcgi_script_name;
     include  fastcgi_params;
}

添加一个主机 ( 这个步骤根据自己的实际情况来 ) :

vim /usr/local/ect/nginx/sites-enabled/haxibiao

输入以下内容:

server {
    listen       80;

    server_name l.haxibiao.com;

    root /data/www/haxibiao.com/public;

    location / {
          try_files $uri $uri/ /index.php$is_args$args;
    }
    include /usr/local/etc/nginx/conf.d/php-fpm;
}

重启 nginx ,至此,配置完成,在 www 下写一个测试文件,进行测试即可:

sudo nginx -t

sudo nginx -s reload

安装 Composer 与 NPM

brew install composer 

brew install node

配置 Git

最小化配置 Git ,根据自己的信息来:

git config --global user.name {你的名字}
git config --global user.email {公司邮箱地址}

公私钥生成:

ssh-keygen

配置 config :

vi ~/.ssh/config

输入以下内容:

Host git.haxibiao.com
HostName git.haxibiao.com
User git
IdentityFile ~/.ssh/id_rsa_git

Mac OS 下搭建 LNMP 开发环境的步骤详解-天真的小窝

在 gitlab 账户中添加 SSH 秘钥信息:

部署项目

拉取项目:

cd /data/www && git clone git@git.haxibiao.com:web/haxibiao.com.git

文件夹赋予权限:

sudo chmod -R 644 /data/www/haxibiao.com/storage && sudo chmod -R 777 /data/www/haxibiao.com/public

安装项目前后端依赖包

composer install

npm install

npm run dev

cp .env.local .env

最后根据自己的实际情况配置项目信息

常见问题

访问项目 404 错误,是否配置 /etc/hosts 文件