Mac下搭建LAMP开发环境很容易,有xampp和mamp现成的集成环境。但是集成环境对于经常需要自定义一些配置的开发者来说会非常麻烦,而且Mac本身自带apache 和 php,在brew的帮助下非常容易手动搭建,可控性很高。

 

Mac 自带 Apache 和 PHP

$ which httpd
/usr/sbin/httpd

$ which php
/usr/local/bin/php

 

Brew

brew对于mac,就像apt-get对于ubuntu,安装软件的好帮手,不能方便更多…

brew 官方网站: https://brew.sh

brew 安装方式如下:

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

brew 常用选项

brew install xxx
brew uninstall xxx
brew list 
brew update xxx

 

Apache

Apache 使用mac自带的基本就够了,

我的MacBook Pro OS X 版本号是 10.12.3

$ apachectl -v
Server version: Apache/2.4.23 (Unix)
Server built:   Aug  8 2016 18:10:45

$ httpd -v
Server version: Apache/2.4.23 (Unix)
Server built:   Aug  8 2016 18:10:45

可以使用以下命令控制Apache

sudo apachectl start
sudo apachectl restart
sudo apachectl stop

httpd 配置文件路径: /etc/apache2/httpd.conf

httpd 根目录路径: /Library/WebServer/Documents/index.html.en

Apache httpd 默认端口是 80 (Nginx 默认端口是 8080)

打开网页: http://localhost

mac-os-x-install-php-01

唯一要改的是主目录,mac默认站点目录:

/Library/WebServer/Documents/

vim /etc/apache2/httpd.conf

mac-os-x-install-php-022

修改/etc/apache2/httpd.conf 内容

DocumentRoot "/Library/WebServer/Documents"

修改为

DocumentRoot "/Users/homer/Documents/workspace"

这样workspace目录就是网站根目录了

 

Nginx

Nginx 安装参考米扑博客: Mac OS X 安装 Nginx

brew install nginx

启动关闭Nginx的命令如下(如果想要监听80端口,必须以管理员身份运行)

#打开 nginx
sudo nginx
#重新加载配置|重启|停止|退出 nginx
nginx -s reload|reopen|stop|quit
#测试配置是否有语法错误
nginx -t

Nginx 安装完以后,可以在终端输出的信息里看到一些配置路径:

/usr/local/etc/nginx/nginx.conf (nginx配置文件路径)
/usr/local/var/www/                (nginx服务器默认路径)
/usr/local/Cellar/nginx/1.12.0/  (nginx安装路径)

 

配置 Nginx

cd /usr/local/etc/nginx/
mkdir conf.d

修改Nginx配置文件

vim nginx.conf

主要修改位置是最后的include

include /usr/local/etc/nginx/conf.d/*.conf;

完整配置如下:

worker_processes  1;  

error_log       /usr/local/var/log/nginx/error.log warn;

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/log/nginx/access.log main;
    port_in_redirect off;
    sendfile        on; 
    keepalive_timeout  65; 

    include /usr/local/etc/nginx/conf.d/*.conf;
}

 

修改自定义文件

vim ./conf.d/default.conf

增加一个监听端口

server {
    listen       80;
    server_name  localhost;

    root /Users/username/Sites/; # 该项要修改为你准备存放相关网页的路径

    location / { 
        index index.php;
        autoindex on; 
    }   

    #proxy the php scripts to php-fpm  
    location ~ \.php$ {
        include /usr/local/etc/nginx/fastcgi.conf;
        fastcgi_intercept_errors on; 
        fastcgi_pass   127.0.0.1:9000; 
    }   

}

这个时候还不能访问php站点,因为还没有开启php-fpm。

虽然Mac OS X 10.12.3 自带了php-fpm

$ which php-fpm
/usr/sbin/php-fpm

$ php-fpm -v
PHP 5.6.28 (fpm-fcgi) (built: Dec  6 2016 12:39:13)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies

PHP中自带php-fpm,所以使用PHP中的php-fpm可以保证版本的一致。

这里的命令在安装完下一步的php后再执行

sudo nginx
sudo php-fpm -D

 

PHP

PHP在Mac下默认安装了,但是不好控制版本,利用brew可以再mac下安装最新版本,甚至是多个版本,我装了php5.5

brew update
brew tap homebrew/dupes
brew tap josegonzalez/homebrew-php
# brew install php55 --with-fpm      # Nginx
brew install php55          # Apache

然后修改php的cli路径和apache使用的php模块。在.bashrc或.zshrc里头加以下内容

#export PATH="$(brew --prefix josegonzalez/php/php55)/bin:$PATH" 
export PATH="/usr/local/bin:/usr/local/sbin:$PATH"

就用刚刚安装的php代替了系统默认cli的php版本。

 

1. 修改 php-fpm 文件

1. 执行命令:

sudo cp /private/etc/php-fpm.conf.default /private/etc/php-fpm.conf

2. 找到目录下的 php-fpm 文件

/private/etc/php-fpm.conf

3. 找到32行的 error_log ,改为绝对路径:

error_log = /usr/local/var/log/php-fpm.log

否则 php-fpm 时会报错:

ERROR: failed to open error_log (/usr/var/log/php-fpm.log): No such file or directory (2)

 

2. 修改 Nginx 配置

1. 打开 nginx.config 文件

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

2. 找到 server 的 location 配置,给 index 加一个 index.php

location / {
    root   html;
    index  index.html index.htm index.php;
}

3. 并打开 server 下被注释的 location ~.php$(即删除代码前面的 ‘#’),如下:

location ~ \.php$ {
    root           html;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    include        fastcgi_params;
}

4. 并修改 fastcgi_param 参数

fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;

改为

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

 

3. 创建 phpinfo.php

在 /usr/local/var/www 目录下,创建 phpinfo.php,输入

<?php phpinfo(); ?>

 

4. 启动相关服务

sudo nginx
sudo php-fpm

访问:http://localhost:8080/phpinfo.php

mac-os-x-install-php-04

看到 php 配置信息,就说明 ok 

 

5. Nginx 启动命令

修改 nginx.conf 后,重载配置文件,是修改生效: 

sudo nginx -s reload

启动 nginx 服务器: 

sudo nginx

停止 nginx 服务器: 

sudo nginx -s stop

停止 php-fpm可以直接在 Activity Monitor 中停止,也可以使用脚本来停。

 

6. Nginx 和 PHP 问题

1. 访问 index.php 报 403 Forbidden.查看(2..2)步骤中,

是否在 index 后添加 phpinfo.php

2. 访问 phpinfo.php 报 File not found. 查看(2.4)中,

fastcgi_param 参数是否修改

 

然后在/etc/apache2/httpd.conf下增加

LoadModule php5_module /usr/local/Cellar/php55/5.5.8/libexec/apache2/libphp5.so

这样就对apache使用的php版本也进行了修改。

后面会用到mongo和mysql,所以可以直接利用下面命令安装php模块,其他模块也类似

brew install php56-redis
brew install php56-mysql
brew install php56-mongo

brew install homebrew/php/php56-mysqlnd_ms
brew install homebrew/php/php56-mongo

 

MySQL

mac不自带mysql,这里需要重新安装,方法依然很简单

brew install mysql
unset TMPDIR
mysql_install_db --verbose --user=`whoami` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp
sudo chown -R your_user /usr/local/var/mysql/

第一句是安装,后面的是确保正常使用。然后是启动命令

mysql.server start

最好给mysql设个密码,方法如下

mysqladmin -u root password 'xxx'

如果想修改mysql的配置,在/usr/local/etc下建立一个my.cnf,例如增加log

[mysqld]
general-log
general_log_file = /usr/local/var/log/mysqld.log

 

MongoDB

MongoDB可以说是最简单的一个,直接执行

brew install mongodb

启动方法

mongod --fork

 

PHPMyAdmin

phpmyadmin几乎是管理mysql最容易的web应用了吧,每次我都顺道装上。

1. phpMyAdmin 官网:https://www.phpmyadmin.net/downloads/

   最新版本: phpMyAdmin-4.7.0-all-languages.zip (2017-03-29  13.5 MB)

   compatible with PHP 5.5 to 7.1 and MySQL 5.5 and newer.

2. 解压到 /usr/local/Cellar/nginx/1.12.0/html/phpmyadmin 

cd ~/Downloads/
unzip phpMyAdmin-4.7.0-all-languages.zip
mv phpMyAdmin-4.7.0-all-languages /usr/local/var/www/phpmyadmin

3. 在phpmyadmin目录下创建一个可写的config目录

4. 打开配置网页: http://localhost:8080/phpmyadmin/setup/

mac-os-x-install-php-06

安装一个服务,最后保存(这里只需要输入帐号密码就够了)

5. 将config下生成的config.inc.php移到phpmyadmin根目录下

cp ~/Downloads/config.inc.php /usr/local/var/www/phpmyadmin/

6. 删除config

这样就装好了,虽然可能有点小复杂,但是来一次就习惯了。

这里很可能会遇到2002错误,就是找不到mysql.sock的问题,

#2002 - No such file or directory &mdash; 服务器没有响应(或本地服务器的套接字没有正确设置)。

用下面方法解决

sudo mkdir /var/mysql
sudo ln -s /tmp/mysql.sock /var/mysql/mysql.sock

打开网页:http://localhost:8080/phpmyadmin/

再次输入MySQL的用户名和密码,可以查看连接的数据库信息:

mac-os-x-install-php-07

 

RockMongo

RockMongo是MongoDB很好用的一个web应用,安装也很容易

1. RockMongo 官网: http://rockmongo.soft112.com/download.html

   RockMongo 最新版本: rockmongo-v1.1.2.zip (2010-08-22    96.3 kB)

2. 解压到 /usr/local/Cellar/nginx/1.12.0/html/rockmongo 

cd ~/Downloads/
unzip rockmongo-v1.1.2.zip
mv rockmongo /usr/local/Cellar/nginx/1.12.0/html/

说明: /usr/local/Cellar/nginx/1.12.0/html/ 软连接目录为 /usr/local/var/www/

$ ll /usr/local/Cellar/nginx/1.12.0/html
lrwxr-xr-x  1 homer  staff  16  4 29 15:06 /usr/local/Cellar/nginx/1.12.0/html -> ../../../var/www
$ ll /usr/local/var/www/
total 24
-rw-r--r--   1 homer  admin  537  4 12 22:46 50x.html
-rw-r--r--   1 homer  admin  638  4 30 12:47 index.html
-rwxr-xr-x   1 homer  admin   25  4 30 12:48 phpinfo.php
drwxr-xr-x@ 14 homer  staff  476  5  7  2012 rockmongo

3. 运行 nginx + php-fpm,打开网页:

http://localhost:8080/rockmongo/

mac-os-x-install-php-05

 

MongoDb 可视化工具

MongoDb 可视化管理工具有很多,详见:

Admin UIs: http://docs.mongodb.org/ecosystem/tools/administration-interfaces/

经人推荐试用了一下Robomongo,这个是跨平台的,Windows、Mac、Linux下都可以使用。

RoboMongo官网: https://robomongo.org/download

最后更新版本:robomongo-1.0.0-darwin-x86_64-89f24ea.dmg 

mac-os-x-installing-mongodb-02

mac-os-x-installing-mongodb-01

 

完成

这样就在mac下配置好一个php开发环境了,enjoy it

 

 

 

参考推荐

Nginx和PHP-FPM的启动、重启、停止脚本

LNMP(CentOS+Nginx+Mysql+PHP)服务器环境配置

Linux 配置 nginx、mysql、php-fpm、redis 开机启动

Mac OS X 安装 MongoDB

Mac OS X 安装 Nginx