文档章节

Mac OSX系统下,使用homebrew搭建PHP开发环境

观光者
 观光者
发布于 2015/07/23 18:59
字数 2336
阅读 257
收藏 1

本开发环境,全部基于HomeBrew安装。

主要软件版本:PHP5.5.25,Nginx 1.8.0,MySQL5.6.25

    近段时间工作环境切换到Mac,所以以OS X Yosemite(10.10.3)为例,记录一下在MAC系统下,全新安装PHP开发环境的过程。

    确保系统已经安装好Xcode。如果有最新版本,最好是先手动升级到最新版的Xcode.

    在命令行执行以下命令,重新安装 Xcode Command Line Tools。可以减少后续安装的一些不必要的麻烦

xcode-select —install

    再执行以下命令,使之生效

xcodebuild -license

第一步:安装常用的软件

    brew

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

    执行命令

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

    然后执行以下命令来安装所需要的依赖

brew install FORMULA

    自检:查看是否有更新。建议每次操作之前先执行下这个命令

brew doctor

  如果有需要更新,则

brew update && brew upgrade

  首先添加几个brew官方的几个软件源

brew tap homebrew/dupes
brew tap homebrew/versions
brew tap homebrew/php
brew tap homebrew/science

    Oh My Zsh 和 iTerm2

    ohmyzsh 和 iTerm2两个命令行工具,在Mac os x下是一定要装的. 两组配合起来使用,搭配一些插件。简直神器。

curl -L http://install.ohmyz.sh | sh
brew cask install iterm2

    虽然Mac自带了zsh,也可以自己安装最新版的zsh

brew install zsh

    查看系统支持的shell列表,也可以更改系统默认的shell

cat /etc/shells  //查看列表
zsh --version    //查看版本
chsh -s /bin/zsh //更改系统默认的shell

    homebrew-cask

     对比与mac系统的app store,对于开发者来说,cask里面的软件源更全面,更新速度也快,操作起来也更舒服 -_-

brew tap phinze/homebrew-cask  //添加软件源
brew install brew-cask

    cask常用命令:

brew cask search        #列出所有可以被安装的软件
brew cask search php    #查找所有和php相关的应用
brew cask list          #列出所有通过cask安装的软件
brew cask info phpstorm #查看信息
brew cask uninstall qq  #卸载

    安装常用的开发包&软件

    安装开发包

brew install wget watch tmux cmake openssl imagemagick graphicsmagick gearman geoip readline autoconf multitail source-highlight autojump zsh-completions sshfs

    升级下系统自带的vim

brew install ctags macvim --env-std --override-system-vim

    安装常用的软件:

brew cask install alfred appcleaner firefox google-chrome phpstorm sublime-text sequel-pro sketch mplayerx thunder qq

    MySQL PHP Nginx Redis Memcache Mongodb

        上面做了这么多得准备工作,其实就是为接下来的安装做铺垫。现在,Come on !

     安装Mysql

brew install mysql

    设置mysql开机启动:

ln -sfv /usr/local/opt/mysql/*.plist ~/Library/LaunchAgents
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

    通过mysqladmin设置一个密码

mysqladmin -uroot password "mypassword"

    如果在操作的时候出现了空密码无法登入的情况,通过mysqld_safe来设置

sudo mysqld_safe --skip-grant-tables
mysql -u root
mysql> UPDATE mysql.user SET Password=PASSWORD('mypassword') WHERE User='root';
mysql> FLUSH PRIVILEGES;

    开启mysql的安全机制:

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

    根据提示,输入密码之后,依次确认一些安全选项。具体的参数可以参考国外友人的文章

$ ps aux | grep mysql  //查看mysql的运行情况
$ mysql -uroot -p

    安装 phpmyadamin

brew install phpmyadmin

    安装PHP,由于mac系统自带了php。因此如果直接先安装php,然后再安装php的扩展的话,有可能会遇到两者的phpize的版本不一致的情况,导致拓展不能正常初始化。So, 反其道而行之。首先安装PHP的拓展,这样,brew会自动的安装上拓展所依赖的php程序。但这样不能配置PHP的编译的参数(可以先正常走一遍)

    解决phpize 版本不一致的通常的做法,是先

sudo ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include /usr/include

    或者:

cd php-5.5.14/ext/mcrypt
phpize –-clean  //清除phpize编译的configu的缓存

    先查看php5都有哪些安装选项  (先按正常流程走一遍)

brew options php55

    这里,我用到了下面的这些配置参数:

brew install php55 \                
--without-snmp \
--without-apache \
--with-debug \
--with-fpm \
--with-intl \
--with-homebrew-curl \
--with-homebrew-libxslt \
--with-homebrew-openssl \
--with-imap \
--with-mysql \
--with-mysqli \
--with-tidy \
--with-gmp \
--with-imap \
--with-libmysql;

    选择性的安装一些所需要的拓展 (有些是个人兴趣安装的)

brew install php55-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-xdebug\
 php55-uuid;

    如果按正常顺序执行完毕之后,出现phpize版本不一致的情况,则全部卸载PHP包括插件,再按照上面说的反其道安装一遍,就会解决。

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

echo 'export PATH="$(brew --prefix php55)/bin:$PATH"' >> ~/.bash_profile      #for php
echo 'export PATH="$(brew --prefix php55)/bin:$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 在/usr/local/opt/php55/bin/php
php -v
#Mac自带的PHP
/usr/bin/php -v 
#brew安装的php-fpm 他在/usr/local/opt/php55/sbin/php-fpm
php-fpm -v
#Mac自带的php-fpm
/usr/sbin/php-fpm -v

    修改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配置
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-fpmkill -INT `cat /usr/local/var/run/php-fpm.pid`
#重启php-fpmkill -USR2 `cat /usr/local/var/run/php-fpm.pid`
#还可以用这个命令来启动php-fpm
launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.php56.plist

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

lsof -Pni4 | grep LISTEN | grep php

    PHP-FPM开机启动:

ln -sfv /usr/local/opt/php55/*.plist ~/Library/LaunchAgents
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.php55.plist

     安装nginx 

brew install nginx --with-http_geoip_module

    nginx 的关闭启动:

#测试配置是否有语法错误
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的开机启动:

ln -sfv /usr/local/opt/nginx/*.plist ~/Library/LaunchAgents
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist

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

sudo chown root:wheel /usr/local/Cellar/nginx/1.8.0/bin/nginx
sudo chmod u+s /usr/local/Cellar/nginx/1.8.0/bin/nginx

    配置nginx.config,  Nginx一般都会运行多个域名,这里参考了ubuntu的结构

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 chmod775 /var/www

    编辑Nginx全局配置

vim /usr/local/etc/nginx/nginx.conf
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" $host $request_time $upstream_response_time $scheme '
    '$cookie_evalogin';
  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/*;
}

    这样一来首先可以把一些可复用配置独立出来放在  /usr/local/etc/nginx/conf.d 下,比如fastcgi的设置就可以独立出来

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虚拟主机准备工作

vi /var/www/info.php
vi /var/www/index.html
vi /var/www/403.html
vi /var/www/404.html

     然后  /usr/local/etc/nginx/sites-enabled 目录下可以一个文件对应一个域名的配置              

vim /usr/local/etc/nginx/sites-enabled/default
server {
  listen	   80;
  server_name  localhost;
  root		 /var/www/;
  location / {
    index  index.html index.htm index.php;
    include	 /usr/local/etc/nginx/conf.d/php-fpm;
  }
  location = /info {
        allow127.0.0.1;
        deny    all;
        rewrite (.*) /.info.php;
   }

   error_page404     /404.html;
   error_page403     /403.html;
}

    此时启动了php-fpm并且启动了Nginx后,就可以通过  http://localhost 来运行php程序了

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

    sslon;
    ssl_certificate      ssl/localhost.crt;
    ssl_certificate_key  ssl/localhost.key;

    ssl_session_timeout5m;

    ssl_protocols  SSLv2 SSLv3 TLSv1;
    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_cipherson;

    location / {
        include   /usr/local/etc/nginx/conf.d/php-fpm;
    }

    location = /info {
        allow 127.0.0.1;
        deny    all;
        rewrite (.*) /.info.php;
    }

    error_page404     /404.html;
    error_page403     /403.html;
}

    创建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;

    sslon;
    ssl_certificate      ssl/phpmyadmin.crt;
    ssl_certificate_key  ssl/phpmyadmin.key;

    ssl_session_timeout5m;

    ssl_protocols  SSLv2 SSLv3 TLSv1;
    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_cipherson;

    location / {
        index  index.html index.htm index.php;
        include   /usr/local/etc/nginx/conf.d/php-fpm;
    }
}

    设置SSL

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

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

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

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

    设置别名,最后可以对所有服务的启动停止设置别名方便操作

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

    歇一歇

© 著作权归作者所有

共有 人打赏支持
观光者
粉丝 4
博文 5
码字总数 4278
作品 0
郑州
程序员
私信 提问
MacOS Install Docker

使用 Homebrew 安装 macOS 我们可以使用 Homebrew 来安装 Docker。 Homebrew 的 Cask 已经支持 Docker for Mac,因此可以很方便的使用 Homebrew Cask 来进行安装: $ brew cask install dock...

Linux就该这么学
2018/10/22
0
0
Mac 安装Homebrew 以及brew update

0、前提"安装CocoaPods 因为最近两天我更换了ssd固态硬盘和重装了 macOS Sierra 10.12系统,需要重新安装cocoaPods Xcode8 macOS Sierra 10.12 安装CocoaPods 我在安装过程pod setup遇到问题...

朝雨晚风
2016/12/20
0
0
Homebrew 1.4.0 发布,MacOS 上的包管理器

Homebrew 1.4.0 发布了。Homebrew 是 MacOS 上的套件管理器,Homebrew 会将套件安装到独立目录,并将文件软链接至 ,所有文件均会被安装到预定义目录下,无需担心 Homebrew 的安装位置。Hom...

达尔文
2017/12/12
1K
5
Homebrew 2.0.0 发布,MacOS 上的包管理器

Homebrew 是 MacOS 上的套件管理器,Homebrew 会将套件安装到独立目录,并将文件软链接至 ,所有文件均会被安装到预定义目录下,无需担心 Homebrew 的安装位置。Homebrew 的程式都是简单的 ...

程六金
02/04
0
0
Homebrew 1.0.8 发布,MacOS 上的包管理器

Homebrew 1.0.8 发布了,Homebrew 是 MacOS 上的套件管理器,Homebrew 会将套件安装到独立目录,并将文件软链接至 ,所有文件均会被安装到预定义目录下,无需担心 Homebrew 的安装位置。Hom...

王练
2016/10/27
1K
6

没有更多内容

加载失败,请刷新页面

加载更多

day11

architect刘源源
今天
6
0
论学好Linux系统的超级重要性

不知道各位在日常的工作生活中有没有接触过“rm -rf /*”这个命令,因为这个命令搞出来的事情可还不少呢!前段时间就在一个群里看到了有个小伙子,老板让他去维护一下服务器,这小伙也不太懂...

Linux就该这么学
昨天
6
0
git 使用

1,首先在github配置好信息和仓库,然后在本地进行操作 git init git config user.name 'zhangwuer' git config user.email '56789053@qq.com' 2,与远程分支建立连接 git checkout -b test......

天王盖地虎626
昨天
3
0
git checkout 命令详解

在日常的git操作中,git checkout——检出,是我们的常用命令。最为常用的两种情形是创建分支和切换分支。 在下面的命令中,使用了一些简写,在这里说明一下: git st # git statusgit ci ...

shzwork
昨天
10
0
【Nginx】Nginx多级代理,获取客户端真实请求IP以及每级代理IP

Nginx多级代理,获取客户端真实请求IP以及每级代理IP 如图所示,每一级nginx里的location配置里需要加上对应的配置,最后一级nginx是直接到应用,测试时为了方便,直接用echo模块去测试,打印...

薛定谔的旺
昨天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部