MacOS High Sierra下搭建MNMP开发环境

2022-11-17 14:10:27 浏览数 (2)

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 终端,输入):

代码语言:javascript复制
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

检验安装成功方法(打开 Terminal 终端,输入):

代码语言:javascript复制
brew doctor

安装常用软件包(打开 Terminal 终端,输入):

代码语言:javascript复制
brew install wget 
brew install autoconf 
brew install openssl

Brew 常用语句(打开 Terminal 终端,输入):

代码语言:javascript复制
#我这里以操作 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 终端,输入):

代码语言:javascript复制
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

人在天朝的话,极有可能出现安装速度过于缓慢的情况,有时候会让你感觉安装处于假死的状态,不必担心,耐心等待即可,切不可心烦意乱的关闭终端窗口(网上有其他教程说可以切换 brew 的源到中科大 CDN,本人亲测:中科大 CDN 虽然快很多,但是clone 下来的文件和原本源存在一定差异,更新不及时。个人建议还是耐心等待,使用原本的源)

1.3 Xcode

Xcode 是苹果出品的包含一系列工具及库的开发套件。

代码语言:javascript复制
通过 AppStore 安装最新版本的 Xcode

我们一般不会用 Xcode 来开发后端项目。但这一步也是必须的,因为 Xcode 会附带安装一些如 Git 等必要的软件

1.3.1 Command Line Tools for Xcode

这一步会帮你安装许多常见的基于 Unix 的工具。Xcode 命令行工具作为 Xcode 的一部分,包含了 GCC 编译器 安装方法(打开 Terminal 终端,输入):

代码语言:javascript复制
xcode-select --install

当 Xcode 和 Xcode Command Line Tools 安装完成后,你需要启动 Xcode,并点击同意接受许可协议,然后关闭 Xcode 就可以了。这一步骤也是必须的,否则 Xcode 包含的一系列开发工具都将不可用。

Working On 安装 Mysql、Php72、redis、Nginx、创建虚拟机、配置 SSL

2.1 Mysql

安装方法(打开 Terminal 终端,输入):

代码语言:javascript复制
brew install mysql

MySQL的安装包相对较大,在这个步骤需要等待一段时间,下载失败后可多次尝试安装,Brew每次会自动寻找合适的下载源 设置 Mysql 开机启动方法(打开 Terminal 终端,输入):

代码语言:javascript复制
ln -sfv /usr/local/opt/mysql/*.plist ~/Library/LaunchAgents
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

初始化、启动方法(打开 Terminal 终端,输入):

代码语言:javascript复制
#正常初始化
/usr/local/opt/mysql/bin/mysql_secure_installation
#若出错请启动服务
brew services start mysql

安全配置方法(Terminal 终端会提示[EnglishVersion]):

代码语言:javascript复制
> 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 终端,输入):

代码语言:javascript复制
#查看端口
ps aux | grep mysql
#测试 Mysql 连接
mysql -uroot -p你设置的密码

为了直观,这里我以密码:123456为例,测试Mysql连接时键入: mysql -uroot -p123456 安装 Phpmyadmin 方法(打开 Terminal 终端,输入):

代码语言:javascript复制
brew install phpmyadmin

2.2 Php

安装准备(打开 Terminal 终端,输入):

代码语言:javascript复制
brew tap homebrew/dupes
brew tap homebrew/versions
brew tap homebrew/homebrew-php

安装 Php72(打开 Terminal 终端,输入):

代码语言:javascript复制
brew install php72

配置 Php72 环境变量(打开 Terminal 终端,输入):

代码语言:javascript复制
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 终端,输入):

代码语言:javascript复制
#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 终端,输入):

代码语言:javascript复制
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 终端,输入):

代码语言:javascript复制
#测试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 终端,输入):

代码语言:javascript复制
ln -sfv /usr/local/opt/php72/*.plist ~/Library/LaunchAgents
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.php56.plist

安装 composer(打开 Terminal 终端,输入):

代码语言:javascript复制
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 终端,输入):

代码语言:javascript复制
brew install nginx

Nginx的安装包相对较大,在这个步骤需要等待一段时间,下载失败后可多次尝试安装,Brew每次会自动寻找合适的下载源 启动 Nginx 方法(打开 Terminal 终端,输入):

代码语言:javascript复制
#测试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 终端,输入):

代码语言:javascript复制
ln -sfv /usr/local/opt/nginx/*.plist ~/Library/LaunchAgents
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist

设置 Nginx 监听端口权限(打开 Terminal 终端,输入):

代码语言:javascript复制
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 终端,输入):

代码语言:javascript复制
#配置需要用到的目录
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
代码语言:javascript复制
#使用 vim 编辑器编辑 nginx.conf
vim /usr/local/etc/nginx/nginx.conf
代码语言:javascript复制
#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 终端,输入):

代码语言:javascript复制
#使用 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 终端,输入):

代码语言:javascript复制
#创建 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 终端,输入):

代码语言:javascript复制
#使用 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 终端,输入):

代码语言:javascript复制
#使用 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 终端,输入):

代码语言:javascript复制
#使用 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 终端,输入):

代码语言:javascript复制
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 终端,输入):

代码语言:javascript复制
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 终端,输入):

代码语言:javascript复制
sudo nginx -s reload

可能会要求输入密码 测试 nginx 开启情况(打开浏览器,地址栏输入):

代码语言:javascript复制
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 终端,输入):

代码语言:javascript复制
brew install redis

人在天朝的话,极有可能出现安装速度过于缓慢的情况,有时候会让你感觉安装处于假死的状态,不必担心,耐心等待即可,切不可心烦意乱的关闭终端窗口(网上有其他教程说可以切换 brew 的源到中科大 CDN,本人亲测:中科大 CDN 虽然快很多,但是clone 下来的文件和原本源存在一定差异,更新不及时。个人建议还是耐心等待,使用原本的源) 开启 Redis方法(打开 Terminal 终端,输入):

代码语言:javascript复制
redis-server

之后进入了管理模式,如果看到Ready to accept connections,说明安装运行成功,直接关闭终端再打开即可 安装 Php-Redis方法(打开 Terminal 终端,输入):

代码语言:javascript复制
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 终端,输入):

代码语言:javascript复制
#使用 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

0 人点赞