Mac OSX brew安装LNMP开发环境

Brew

Brew 是 Mac 下面的包管理工具,通过 Github 托管适合 Mac 的编译配置以及 Patch,可以方便的安装开发工具。 Mac 自带ruby 所以安装起来很方便,同时它也会自动把git也给你装上。官方网站: http://brew.sh 。

安装完成之后,建议执行一下自检,brew doctor如果看到Your system is ready to brew. 那么你的brew已经可以开始使用了。

安装:

1

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

网址:(http://brew.sh/index_zh-cn.html)

自检:

1

brew doctor

常用命令: (所有软件以PHP5.5为例子)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

brew update #更新brew可安装包,建议每次执行一下

brew search php55 #搜索php5.5

brew tap josegonzalez/php#安装扩展<gihhub_user/repo> 

brew tap #查看安装的扩展列表

brew installphp55 #安装php5.5

brew remove  php55 #卸载php5.5

brew upgrade php55 #升级php5.5

brew options php55 #查看php5.5安装选项

brew info php55 #查看php5.5相关信息

brew home    php55 #访问php5.5官方网站

brew services list #查看系统通过

brew 安装的服务

brew services cleanup #清除已卸载无用的启动配置文件

brew services restart php55 #重启php-fpm

注意:brew services 相关命令最好别经常用了,提示会被移除

1

2

3

4

5

6

7

8

➜  ~  brew services restart php55 Warning: brew services is unsupported and will be removed soon.

You should use launchctl instead.

Please feel freevolunteer to support it ina tap.

 

Stopping `php55`... (might take a while)

==> Successfully stopped `php55` (label: homebrew.mxcl.php55)

==> Successfully started `php55` (label: homebrew.mxcl.php55)

Oh My Zsh

安装MySQL

1

brew installmysql

MySQL开机启动:

1

2

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

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

安装完成之后开启MySQL安全机制:

1

/usr/local/opt/mysql/bin/mysql_secure_installation

根据终端提示,输入root密码,然后依次确认一些安全选项。具体信息可以参考外国友人的这篇文章

#查看一下MySQL运行情况

1

2

3

4

5

6

7

psaux | grepmysql

 

calvin 1695 0.0 0.5 2719864 90908 ?? S 1:38上午 0:00.31 /usr/local/Cellar/mysql/5.6.19/bin/mysqld--basedir=/usr/local/Cellar/mysql/5.6.19 --datadir=/usr/local/var/mysql--plugin-dir=/usr/local/Cellar/mysql/5.6.19/lib/plugin--bind-address=127.0.0.1 --log-error=/usr/local/var/mysql/CalvinsMacBook-Pro.local.err --pid-file=/usr/local/var/mysql/CalvinsMacBook-Pro.local.pid --socket=/tmp/mysql.sock --port=3306 calvin 1323 0.0 0.0 2444628 1020 ?? S 1:38上午 0:00.04 /bin/sh/usr/local/opt/mysql/bin/mysqld_safe--bind-address=127.0.0.1 --datadir=/usr/local/var/mysql#测试连接MySQL mysql -uroot -p Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 23 Server version: 5.6.19-log Homebrew Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners. Type 'help;'or '\h'forhelp. Type '\c'to clearthe current input statement.

 

mysql>

安装phpmyadmin

1

brew installphpmyadmin

安装PHP

添加brew的PHP扩展库:

1

2

brew update brew tap homebrew/dupes

brew tap josegonzalez/homebrew-php

可以使用brew options php55命令来查看安装php5.5的选项,这里我用下面的选项安装:

1

brew installphp55 --with-fpm --with-gmp --with-imap --with-tidy --with-debug --with-mysql --with-libmysql

PHP编译过程中如果遇到configure: error: Cannot find OpenSSL’s 错误,执行

xcode-select –install重新安装一下Xcode Command Line Tools 在GitHub HomeBrew上有关于这个讨论:

For future reference of anybody looking for Command Line Tools with Xcode 5, open up a Terminal window and type xcode-select –install. A window will appear informing you command line tools are required. Click Install and you should be good to go

等待PHP编译完成,开始安装PHP常用扩展,扩展安装过程中brew会自动安装依赖包,例如php55-pdo-pgsql会自动装上postgresql,这里我安装以下PHP扩展:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

brew installphp55-apcu\

 php55-gearman\

 php55-geoip\

 php55-gmagick\

 php55-imagick\

 php55-intl\

 php55-mcrypt\

 php55-memcache\

 php55-memcached\

 php55-mongo\

 php55-opcache\

 php55-pdo-pgsql\

 php55-phalcon\

 php55-redis\

 php55-sphinx\

 php55-swoole\

 php55-uuid\

 php55-xdebug;

扩展里面提一下php55-phalcon 和 php55-swoole. 一个是C语言写的PHP框架,安装来个人摸索熟悉一下,还没有真正的使用过,大致看了一下文档,感觉非常吊炸天。目前公司的项目是基于Yii2的,也看看这个框架。 另外一个swoole是国产的PHP高性能网络通信框架,貌似不错,可能在项目中会考虑用到它。

由于Mac自带了php和php-fpm,因此需要添加系统环境变量PATH来替代自带PHP版本。

1

echo'export PATH="$(brew --prefix php55)/bin:$PATH"'>> ~/.bash_profile #for php echo 'export PATH="$(brew --prefix php55)/sbin:$PATH"' >> ~/.bash_profile #for php-fpm echo 'export PATH="/usr/local/bin:/usr/local/sbib:$PATH"' >> ~/.bash_profile #for other brew install soft source ~/.bash_profile

测试一下效果:

brew安装的php 他在

1

2

3

4

5

6

7

8

9

10

11

12

13

#/usr/local/opt/php55/bin/php php -v   

PHP 5.5.14 (cli) (built: Jul 16 2014 15:43:06) (DEBUG)

Copyright (c) 1997-2014 The PHP Group

Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies with Xdebug v2.2.5, Copyright (c) 2002-2014, by Derick Rethans #Mac自带的PHP /usr/bin/php -v  

PHP 5.4.24 (cli) (built: Jan 19 2014 21:32:15)

Copyright (c) 1997-2013 The PHP Group

Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies #brew安装的php-fpm 他在/usr/local/opt/php55/sbin/php-fpm php-fpm -v

PHP 5.5.14 (fpm-fcgi) (built: Jul 16 2014 15:43:12) (DEBUG)

Copyright (c) 1997-2014 The PHP Group

Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies with Xdebug v2.2.5, Copyright (c) 2002-2014, by Derick Rethans #Mac自带的php-fpm /usr/sbin/php-fpm -v

PHP 5.4.24 (fpm-fcgi) (built: Jan 19 2014 21:32:57)

Copyright (c) 1997-2013 The PHP Group

Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies

修改php-fpm配置文件,vim /usr/local/etc/php/5.5/php-fpm.conf,找到pid相关大概在25行,去掉注释pid = run/php-fpm.pid, 那么php-fpm的pid文件就会自动产生在/usr/local/var/run/php-fpm.pid,下面要安装的Nginx pid文件也放在这里。

#测试php-fpm配置

1

2

3

4

5

6

php-fpm -t

php-fpm -c /usr/local/etc/php/5.5/php.ini -y /usr/local/etc/php/5.5/php-fpm.conf -t #启动php-fpm php-fpm -D

php-fpm -c /usr/local/etc/php/5.5/php.ini -y /usr/local/etc/php/5.5/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` #也可以用上文提到的brew命令来重启php-fpm,不过他官方不推荐用这个命令了

brew services restart php55 #还可以用这个命令来启动php-fpm

launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.php55.plist

启动php-fpm之后,确保它正常运行监听9000端口:

1

2

3

4

5

lsof-Pni4 | grepLISTEN | grepphp

php-fpm 30907 calvin    9u  IPv4 0xf11f9e8e8033a2a7      0t0  TCP 127.0.0.1:9000 (LISTEN)

php-fpm 30917 calvin    0u  IPv4 0xf11f9e8e8033a2a7      0t0  TCP 127.0.0.1:9000 (LISTEN)

php-fpm 30918 calvin    0u  IPv4 0xf11f9e8e8033a2a7      0t0  TCP 127.0.0.1:9000 (LISTEN)

php-fpm 30919 calvin    0u  IPv4 0xf11f9e8e8033a2a7      0t0  TCP 127.0.0.1:9000 (LISTEN)

正常情况,会看到上面这些进程

PHP-FPM开机启动:

1

2

ln-sfv /usr/local/opt/php55/*.plist ~/Library/LaunchAgents

launchctl load ~/Library/LaunchAgents/homebrew.mxcl.php55.plist

安装php composer

1

brew installcomposer

#检查一下情况

1

2

composer --version

Composer version 1.0.0-alpha8 2014-01-06 18:39:59

redis memcached这些软件brew 已经自动依赖安装上,如果想开机自动启动,或者查看使用说明brew info redis即可。另外,composer的中文文档:猛戳这里

安装Nginx

1

brew installnginx --with-http_geoip_module

Nginx启动关闭命令:

1

2

3

4

5

#测试配置是否有语法错误 nginx -t

#打开 nginx sudo nginx

#重新加载配置|重启|停止|退出 nginx nginx -s reload|reopen|stop|quit

#也可以使用Mac的launchctl来启动|停止 launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist

launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist

Nginx开机启动

1

2

ln-sfv /usr/local/opt/nginx/*.plist ~/Library/LaunchAgents

launchctl load ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist

Nginx监听80端口需要root权限执行,因此:

1

2

sudochownroot:wheel /usr/local/Cellar/nginx/1.6.0_1/bin/nginx

sudochmodu+s /usr/local/Cellar/nginx/1.6.0_1/bin/nginx

配置nginx.conf

创建需要用到的目录:

1

2

3

4

5

6

7

8

9

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

sudomkdir-p /var/www

sudochown:staff /var/www

sudochmod775 /var/www

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

输入以下内容:

1

2

3

worker_processes 1; error_log /usr/local/var/logs/nginx/error.log debug; 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/*;

}

设置nginx php-fpm配置文件

1

2

3

vim /usr/local/etc/nginx/conf.d/php-fpm

#proxy the php scripts to 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虚拟主机准备工作

#创建 info.php index.html 404.html 403.html文件到 /var/www 下面

1

2

3

4

vi/var/www/info.php

vi/var/www/index.html

vi/var/www/403.html

vi/var/www/404.html

创建默认虚拟主机default

1

vim /usr/local/etc/nginx/sites-available/default

输入:

1

2

3

4

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默认虚拟主机default-ssl

1

vim /usr/local/etc/nginx/sites-available/default-ssl

输入:

1

2

3

4

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虚拟主机

1

2

3

4

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;

    }

}

设置SSL

1

2

3

4

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

创建虚拟主机软连接,开启虚拟主机

1

2

3

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

1

2

launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist

launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist

接下来你可以通过下面这些连接访问:

1

2

3

4

5

6

7

http://localhost/-> index.html

http://localhost/info-> info.php via phpinfo();

http://localhost/404-> 404.html

https://localhost/-> index.html(SSL)

https://localhost/info-> info.php via phpinfo();(SSL)

https://localhost/404-> 404.html(SSL)

https://localhost:306 -> phpmyadmin(SSL)

设置快捷服务控制命令

为了后面管理方便,将命令 alias 下,vim ~/.bash_aliases输入一下内容:

1

2

3

4

5

6

7

8

9

aliasnginx.start='launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist'aliasnginx.stop='launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist'aliasnginx.restart='nginx.stop && nginx.start'

aliasphp-fpm.start="launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.php55.plist"aliasphp-fpm.stop="launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.php55.plist"aliasphp-fpm.restart='php-fpm.stop && php-fpm.start'

aliasmysql.start="launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist"aliasmysql.stop="launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist"aliasmysql.restart='mysql.stop && mysql.start'

aliasredis.start="launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.redis.plist"aliasredis.stop="launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.redis.plist"aliasredis.restart='redis.stop && redis.start'

aliasmemcached.start="launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.memcached.plist"

aliasmemcached.stop="launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.memcached.plist"

aliasmemcached.restart='memcached.stop && memcached.start'

#让快捷命令生效 echo "[[ -f ~/.bash_aliases ]] && . ~/.bash_aliases" >> ~/.bash_profile source ~/.bash_profile #创建站点目录到主目录,方便快捷访问

ln-sfv /var/www~/htdocs

标签: mac lnmp
2016.4.19   /   热度:931   /   分类: lnmp

发表评论:

©地球仪的BLOG  |  Powered by Emlog