MacOS 安装Nginx,PHP和MYSQL

文档中出现的所有需要网络下载的脚本, 均放置在 Git 仓库内: https://gitee.com/NICKNAME/MNMP.git , 方便大家不翻墙下载.

近来新入手了一台 MacBook Pro, 于是折腾一下环境, 由于无法再使用 LAMP (Linux Apache MySQL PHP) 一键, 于是使用 Nginx 和 PHP-FPM 替代.

下面介绍一下如何在 MacOS 系统上安装 Nginx, PHP-FPM, MySQL 和 phpMyAdmin.

安装 Xcode

首先进入 App Store 应用商店, 安装 XCode 最新版, 下载地址为: https://itunes.apple.com/en/app/xcode/id497799835

下载完成后, 执行 /Applications 目录下的 Xcode.app 打开软件, 同意相应的 license.

开启命令行工具 Terminal.app, 执行 xcode-select --install, 弹出框点选同意安装.

回到 Xcode.app 使用 + , 组合键, 进入 Preferences(属性) -> Locations(位置) -> 设置 Command Line Tool(命令行工具) -> 选择最高版本.

安装 Homebrew

安装 HomeBrew, 这是一个类似于 yum 或者 apt-get 一样的软件, 用于软件包的安装管理.

命令行执行: ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

检测是否安装成功: brew doctor, 如果提示 “Your system is ready to brew.” 则成功.

如果已经安装过了, 那么使用 brew update && brew upgrade 进行升级.

安装 PHP-FPM

使用命令行安装:

# PHP 软件源
brew tap homebrew/dupes
brew tap homebrew/php
# 安装 PHP-FPM
brew install --without-apache --with-fpm --with-mysql php56

设置 PHP CLI 命令行环境

设置 $PATH 环境:

默认 Bash: echo 'export PATH="/usr/local/sbin:$PATH"' >> ~/.bash_profile && . ~/.bash_profile

ZSH: echo 'export PATH="/usr/local/sbin:$PATH"' >> ~/.zshrc && . ~/.zshrc

如果您不知道自己使用的是哪一个的话, 执行 echo $SHELL 如果返回 /bin/zsh 说明是 ZSH 环境.

设置 PHP-FPM 自动启动

# 拷贝启动脚本配置文件
mkdir -p ~/Library/LaunchAgents
ln -sfv /usr/local/opt/php56/homebrew.mxcl.php56.plist ~/Library/LaunchAgents/
# 执行启动
launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.php56.plist
# 执行关闭
launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.php56.plist

查看是否启动成功: lsof -Pni4 | grep LISTEN | grep php

安装 MySQL

我的 MySQL 是使用的官方的安装方法, 这里只是翻译一下原文.

# 安装, 拷贝启动脚本配置文件
brew install mysql
ln -sfv /usr/local/opt/mysql/*.plist ~/Library/LaunchAgents
# 启动MySQL
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

配置 MySQL, 让 MySQL 更安全

执行 secure_mysql_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]
阻止 root 的远程登录, 直接回车

Remove test database and access to it? [Y/n]
移除 test 数据库, 直接回车

Reload privilege tables now? [Y/n]
点击回车确认以上更改

测试连接

mysql -uroot -p
输入刚刚设置的密码

安装 PHPMyAdmin

PHPMyAdmin 使对 MySQL 的管理更容易, 界面化操作.

安装依赖软件 brew install autoconf

Bash: echo 'PHP_AUTOCONF="'$(which autoconf)'"' >> ~/.bash_profile && . ~/.bash_profile

ZSH: echo 'PHP_AUTOCONF="'$(which autoconf)'"' >> ~/.zshrc && . ~/.zshrc

安装 PHPMyAdmin brew install phpmyadmin

安装 Nginx

brew install nginx

设置 Nginx 自动启动

如果想让 Nginx 监听 80 端口, 则必须使用 Root 权限, 只有 Root 权限能监听<1024 的端口.

sudo cp -v /usr/local/opt/nginx/*.plist /Library/LaunchDaemons/
sudo chown root:wheel /Library/LaunchDaemons/homebrew.mxcl.nginx.plist

启动 Nginx: sudo launchctl load /Library/LaunchDaemons/homebrew.mxcl.nginx.plist

关闭 Nginx: sudo launchctl unload /Library/LaunchDaemons/homebrew.mxcl.nginx.plist

测试 Web 环境, 检测 Nginx 是否安装成功

Nginx 默认配置文件监听 8080 端口, curl -IL http://127.0.0.1:8080 检测是否开启.

详细的其他配置

配置 Nginx

创建相关目录:

mkdir -p /usr/local/etc/nginx/logs
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

删除默认的 nginx.conf, 下载网络版本:

rm /usr/local/etc/nginx/nginx.conf
curl -L https://gist.github.com/frdmn/7853158/raw/nginx.conf -o /usr/local/etc/nginx/nginx.conf

配置 PHP-FPM

下载网络版本:

curl -L https://gist.github.com/frdmn/7853158/raw/php-fpm -o /usr/local/etc/nginx/conf.d/php-fpm

配置 Nginx 的虚拟目录 vhost

下载网络版本:

curl -L https://gist.github.com/frdmn/7853158/raw/sites-available_default -o /usr/local/etc/nginx/sites-available/default
curl -L https://gist.github.com/frdmn/7853158/raw/sites-available_default-ssl -o /usr/local/etc/nginx/sites-available/default-ssl
curl -L https://gist.github.com/frdmn/7853158/raw/sites-available_phpmyadmin -o /usr/local/etc/nginx/sites-available/phpmyadmin

下载默认的错误重定向页面:

git clone http://git.frd.mn/frdmn/nginx-virtual-host.git /var/www
rm -rf /var/www/.git

配置 SSL 支持:

mkdir -p /usr/local/etc/nginx/ssl
openssl req -new -newkey rsa:4096 -days 3650 -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 3650 -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

开启虚拟配置, 使之生效

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 服务器

sudo launchctl load /Library/LaunchDaemons/homebrew.mxcl.nginx.plist

使用 http/https 进行测试

让命令行更简单

下载 Alias

curl -L https://gist.github.com/frdmn/7853158/raw/bash_aliases -o /tmp/.bash_aliases
cat /tmp/.bash_aliases >> ~/.bash_aliases

Bash: echo "source ~/.bash_aliases" >> ~/.bash_profile && . ~/.bash_profile

ZSH: echo "source ~/.bash_aliases" >> ~/.zshrc && ~/.zshrc

之后, 使用以下命令行 Alias 来管理服务器

Nginx

# Nginx服务的管理
nginx.start
nginx.stop
nginx.restart

# 查看Nginx日志
nginx.logs.access
nginx.logs.default.access
nginx.logs.phpmyadmin.access
nginx.logs.default-ssl.access
nginx.logs.error
nginx.logs.phpmyadmin.error

# 查看Nginx的配置
sudo nginx -t

PHP-FPM

# PHP-FPM服务的管理
php-fpm.start
php-fpm.stop
php-fpm.restart

# 查看PHP-FPM的配置
php-fpm -t

MySQL

# MySQL服务的管理
mysql.start
mysql.stop
mysql.restart

文字来源

安装文档原文: https://blog.frd.mn/install-nginx-php-fpm-mysql-and-phpmyadmin-on-os-x-mavericks-using-homebrew/

本文是依照原文自行翻译, 疏漏之处可与下面同仁的文字进行校对, 欢迎指正.

中文同仁译文: http://blog.qiji.tech/archives/132

Donate - Support to make this site better.
捐助 - 支持我让我做得更好.