Mac OS install mnmp
1、利用U盘安装Sierra系统
- 首先,准备一个
8GB
或更大容量的 U盘,并备份好里面的所有资料。 - App Store上下载好 macOS Sierra 正式版的安装系统或其它途径下载
- 打开 “应用程序 » 其它 » 磁盘工具”,将U盘 抹掉,格式化成 MacOS扩展(日志式)格式、GUID 分区图,并将U盘命名为
Sierra。
-
打开 “应用程序 » 其它 » 终端”,将下面的一段命令复制并粘贴进去
ps: /Volumes/Sierra 这个Sierra是U盘名称
sudo /Applications/Install\ macOS\ Sierra.app/Contents/Resources/createinstallmedia --volume /Volumes/Sierra --applicationpath /Applications/Install\ macOS\ Sierra.app --nointeraction
- 回车并执行该命令,这时会提示让你输入管理员密码,然后开始制作了。耐心等待直到屏幕最后出Done字样表示写入U盘成功。
- 插上制作好的安装U盘,如果系统能识别出来即可,然后关机。
- 按下电源键开机,当听到”噹”的一声时,按住
Option
键不放,直到出现启动菜单选项 - 这时选择安装U盘并回车,就可以开始安装了。
2、HomeBrew
-
Homebrew是什么?
Homebrew简称brew,是Mac OSX上的软件包管理工具,能在Mac中方便的安装软件或者卸载软件,可以说Homebrew就是mac下的apt-get、yum神器
- Homebrew安装
Homebrew的安装非常简单,打开终端复制、粘贴以下命令,回车,搞定
ps: 执行这个命令有时会返回400,过几分钟重试下一般就好了
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
- Homebrew使用
- 搜索软件:brew search 软件名,如brew search wget
- 安装软件:brew install 软件名,如brew install wget
- 卸载软件:brew uninstall 软件名,如brew uninstall wget
3、mysql
-
搜索mysql
-
查看mysql版本信息
☁ ~ brew info mysql mysql: stable 5.7.18 (bottled) Open source relational database management system # 下面信息省略
-
安装mysql
brew install mysql
, 安装时的消息有这么一句话We’ve installed your MySQL database without a root password. To secure it run:mysql_secure_installation
,那就来设置下root的密码第一步:打开mysql服务 mysql.server start 第二步:执行mysql_secure_installation mysql_secure_installation # 执行后按照提示信息进行设置
-
mysql一些命令
mysql.server start
# 启动mysql.server stop
# 停止mysql.server restart
# 重启mysql.server reload
# 加载配置文件mysql.server status
# 查看mysql状态
4、php
-
先添加brew的PHP扩展库
brew update # 更新下brew源 # brew 有个默认的仓库,brew tap 你可以看成是第三方的仓库 brew tap homebrew/dupes brew tap homebrew/php brew tap josegonzalez/homebrew-php
-
安装php
brew search php
,出来一堆版本的php,安装php7.0版本,可以先brew options php70
看看你安装的时候要哪些选项,我选择了下面这些,因为后面会用nginx作为反向代理。brew install php70 --with-debug --with-gmp --with-homebrew-curl --with-homebrew-libressl --with-homebrew-libxml2 --with-homebrew-libxslt --with-imap --with-libmysql --with-mysql
-
添加系统环境变量
由于Mac自带了php和php-fpm,因此需要添加系统环境变量PATH来替代自带PHP版本,我们用的是zsh,所以放进.zshrc中,如果你用的shell是bash,那么可以把下面的信息写入到
~/.bash_profile
文件中,如果这个文件没有,你自己建一个就行。echo 'export PATH="$(brew --prefix php70)/bin:$PATH"' >> ~/.zshrc #for php echo 'export PATH="$(brew --prefix php70)/sbin:$PATH"' >> ~/.zshrc #for php-fpm echo 'export PATH="/usr/local/bin:/usr/local/sbib:$PATH"' >> ~/.zshrc #for other brew install soft source ~/.zshrc
-
测试
-
php-fpm的配置文件
php-fpm
的配置文件,路径在/usr/local/etc/php/7.0/php-fpm.conf
, 我们主要看下pid和log文件会放在哪里。对着上面的图片,去掉17行和24行前面的分号, 然后保存。使用
php-fpm -t
测试下配置是否正确如下:[04-May-2017 17:00:26] NOTICE: configuration file /usr/local/etc/php/7.0/php-fpm.conf test is successful
-
php-fpm的一些管理 # 测试php-fpm配置 php-fpm -t
# 启动php-fpm php-fpm -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 start | stop | restart php70 # 命令来管理php-fpm php70-fpm start | stop | restart
-
启动php-fpm之后,确保正常运行监听9000端口
☁ ~ lsof -Pni4 | grep LISTEN | grep php php-fpm 69092 sunnyday 8u IPv4 0x83aad710fe731e69 0t0 TCP 127.0.0.1:9000 (LISTEN) php-fpm 69093 sunnyday 0u IPv4 0x83aad710fe731e69 0t0 TCP 127.0.0.1:9000 (LISTEN) php-fpm 69094 sunnyday 0u IPv4 0x83aad710fe731e69 0t0 TCP 127.0.0.1:9000 (LISTEN)
-
设置别名
上面的
php-fpm
关闭和重启的命令有点长, 在个人主目录下先建立一个.aliases文件,然后放入下面的内容:alias fpm.start='php-fpm -D' alias fpm.stop='kill -INT `cat /usr/local/var/run/php-fpm.pid`' alias fpm.restart='kill -USR2 `cat /usr/local/var/run/php-fpm.pid`' alias fpm.status='lsof -Pni4 | grep LISTEN | grep php-fpm'
然后
echo 'source ~/.aliases' >> ~/.zshrc source ~/.zshrc
下次启动php-fpm就简洁多了,不需要一大串了。
5、nginx
-
搜索nginx
brew search nginx
-
安装ngixn
brew install nginx
-
nginx命令
测试配置是否有语法错误 nginx -t 启动 nginx sudo nginx 重新加载配置|重启|停止|退出 nginx -s reload | reopen | stop | quit
-
跑下nginx
sudo nginx > 然后打开chrome浏览器输入:localhost:8080 如下显示nginx就没问题
-
配置nginx
配置nginx,让它监听php-fpm的进程,这样当用户打开浏览器访问的时候,身为反向代理的nignx就能把东西让php去执行。 接下来,要配置nginx.conf文件,创建一个php-fpm文件(监听php-fpm), 还要约定下将nginx.pid文件,log日志,以及以后我们要配置的站点.conf的路径,我们的路径约定还是按照brew默认的目录来设置, 如下:
# nginx.conf,已经被创建好了,我们一会要更改下 /usr/local/etc/nginx/nginx.conf # php-fpm,这个我们就放在和nginx.conf一样的路径下吧,这个要我们自己创建 /usr/local/etc/nginx/php-fpm # 日志文件放在/usr/local/var/log/nginx中,默认已经有了access.log和error.log文件了 /usr/local/var/log/nginx/ # nginx.pid文件,放在/usr/local/var/run/下面,和php-fpm.pid放一堆 /usr/local/var/run/ # 以后要配置的站点.conf, 我们就放在/usr/local/etc/nginx/servers/下面,这个servers文件夹本身就存在的 /usr/local/etc/nginx/servers/ # 站点的根目录,也就用brew给我们设置的吧 /usr/local/var/www/
下面我们先来修改
nginx.conf
, 用vim打开,把下面的信息覆盖nginx.conf,vim /usr/local/etc/nginx/nginx.conf
worker_processes 1; error_log /usr/local/var/log/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/log/nginx/access.log main; sendfile on; keepalive_timeout 65; port_in_redirect off; include /usr/local/etc/nginx/servers/*; }
接下来,将下面的信息放入到php-fpm文件中,
vim /usr/local/etc/nginx/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; }
下面就能配置站点了,先到
/usr/local/var/www
目录下建立站点根目录,就叫做default吧,然后在里面建立个phpinfo.php,内容就放phpinfo()mkdir /usr/local/var/www/default vim /usr/local/var/www/default/phpinfo.php # 输入 <?php phpinfo();
创建站点.conf文件
vim /usr/local/etc/nginx/servers/default.conf
内容如下:
server { listen 80; server_name localhost; root /usr/local/var/www/default; access_log /usr/local/var/log/nginx/default.access.log main; location / { index index.html index.htm index.php; autoindex on; include /usr/local/etc/nginx/php-fpm; } error_page 404 /404.html; error_page 403 /403.html; }
测试下配置文件
☁ ~ sudo nginx -t nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful
然后开启php-fpm和nginx服务
fpm.start sudo nginx # 已经开启的用sudo nginx -s reload 重启下
打开浏览器输入:http://localhost/phpinfo.php 如下
6、安装扩展
ps: 使用Homebrew安装扩展可以减少大量的安装和配置的工作
1、redis
1. brew search redis # 搜索对应的php版本redis
2. brew install php70-redis # 然后安装对应的php版本
3. brew uninstall php70-redis # 卸载redis
4. brew install redis # 客户端
5. brew info redis # 安装信息也可以查看位置
6. Redis默认配置文件不允许以Deamon方式运行,因此需要先修改配置文件
vim /usr/local/etc/redis.conf # 将daemonize修改为yes,使得redis以后台进程的方式来运行
redis-server /usr/local/etc/redis.conf # 然后载入配置文件即可实现后台进程启动
ps: 使用Homebrew安装扩展安装如下的扩展导致错误,所以源码编译安装
2、swoole
1. wget https://github.com/swoole/swoole-src/archive/v1.9.15.tar.gz # 下载
2. tar -zxvf v1.9.15.tar.gz # 解压
3. cd swoole-src-1.9.15 # 进入目录
4. /usr/local/bin/phpize # 生成编译文件
5. ./configure --with-php-config=/usr/local/bin/php-config # 编译php扩展
6. sudo make && make install # 编译和安装
7. sudo vim /usr/local/etc/php/7.0/php.ini # 最后添加 extension=swoole.so
8. 重启php, php -i | grep "swoole" # 看见swoole信息就代表安装成功
3、yaf
1. wget http://pecl.php.net/get/yaf-3.0.5.tgz # 下载
2. tar -zxvf yaf-3.0.5.tgz # 解压
3. cd yaf-3.0.5 # 进入目录
4. /usr/local/bin/phpize # 生成编译文件
5. ./configure --with-php-config=/usr/local/bin/php-config # 编译php扩展
6. sudo make && make install # 编译和安装
7. sudo vim /usr/local/etc/php/7.0/php.ini # 最后添加 extension=yaf.so
8. 重启php, php -i | grep "yaf" # 看见yaf信息就代表安装成功
7、安装出现的问题记录
-
使用Curl出现的502错误,如下代码
<?php $curl = curl_init(); // URL地址 curl_setopt($curl, CURLOPT_URL, 'https://www.alipay.com'); // 设置header curl_setopt($curl, CURLOPT_HEADER, true); // 设置cURL 参数,true,有时候希望返回的内容作为变量储存,而不是直接输出。 curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); // 运行cURL,请求网页数据 $data = curl_exec($curl); // 关闭cURL请求 curl_close($curl); // 打印数据 var_dump($data);
-
问题的原因:brew安装curl时默认没有带上
--with-openssl
# 先删除curl brew uninstall curl # 重新安装curl,带上--with-openssl brew install curl --with-openssl
重启php-fpm,
fpm.restart
,在测试以上的curl代码就没问题了。