zl程序教程

您现在的位置是:首页 >  后端

当前栏目

mac下安装nginx和php

2023-06-13 09:15:07 时间
一、前话:
1.1、环境选择:
重新在mac上配置php,原本mac上就自带有apach、php以及pgsql,如果图简单的话,直接用就可以了,不过在安装前我仔细思考了一下几个问题:
选apache还是nginx:两个我了解的都比较少,相对而言我接触nginx比较多,服务器用的也是nginx,没办法谁叫nginx负载高呢。为了更好的接触nginx的环境,我决定还是统一下环境,方便今后使用,这是这次的主要关键;
安装php:Macos自带了php,好像是5.3.8,版本比较落后,不过这不碍事,因为以前我都是通过php-osxbyLiip来管理php,所以不担心版本问题。不过php-osxbyLiip好像没有fmp相关的配置,这样我我要和nginx一起用的话就相对比较麻烦了,那我只能选择其他方案了
安装mysql:这个就没有什么好疑问的了,目前我肯定不会去用pgsql,毕竟没接触过,需要有学习成本的,所以我在这篇纪录中把关于pgsql的部分都去掉了
1.2、那该如何安装:
既然我否定了系统自带的环境,那么就要通过别的方式去安装了,比如说手动编译。如果是手动编译的话,那么就会遇到下面几个问题:
编译费事,php依赖那么多程序,一个个安装,太累!
如果以后更新怎么办?灾难!!
不过好在mac下有自己的第三方管理程序:homebrew,而且相对而言我觉得他可能在某些方面更优越于linux下的apt-get、yum。如果通过homebrew来安装、管理运行环境的话,至少可以解决我几个问题:
安装问题,我不用繁琐的去安装依赖程序
升级问题,只需要brewupdate一次升级所有程序
版本问题,homebrew版本更新比较及时,而apt-get、yum来说,今年用的基本是几年前的稳定版本了
OK,下面的安装都是基于homebrew,如果不熟悉或者还没安装有homebrew的话,可以查看这篇关于:Mac开发者利器-Homebrew介绍及安装。
二、安装nginx
2.1、安装:
用brew一键安装nignx:
1
brewinstallnginx
如果需要安装其他nginx的版本,可以“breweditnginx”打开修改nginx的安装信息包formula,默认会用vi打开,在文件开头处修改nginx相应版本的下载地址就行。
2.2、配置
brew执行完后,nginx就安装好了。可以用以下指令对nginx进行操作:
复制代码代码如下:

#打开nginx
sudonginx
 

#重新加载|重启|停止|退出nginx
nginx-sreload|reopen|stop|quit
打开nginx后,默认的访问端口8080,如果要改为常用的80端口,则要修改“/usr/local/etc/nginx/nginx.conf”下监听(listen)端口值。
默认的文件访问目录(root)是“/usr/local/Cellar/nginx/1.4.2/html”(这里的1.4.2是安装的nginx的版本,文件夹名以安装的nginx版本为准)。
2.3、把nginx设置为开机启动运行:
复制代码代码如下:

mkdir-p~/Library/LaunchAgents/

cp/usr/local/Cellar/nginx/1.4.2/homebrew.mxcl.nginx.plist~/Library/LaunchAgents/
launchctlload-w~/Library/LaunchAgents/homebrew.mxcl.nginx.plist

不过试了一下,不是超级用户登陆,而是普通用户登陆,并且监听的端口在1024以下的(例如把默认的8080端口改为了80端口),nginx开机是启动不了。因此,要nginx开机启动的话,需要给予它管理员权限:
复制代码代码如下:
2
sudochownroot:wheel/usr/local/Cellar/nginx/1.4.2/bin/nginx
sudochmodu+s/usr/local/Cellar/nginx/1.4.2/bin/nginx

三、安装mysql
3.1、安装:
复制代码代码如下:
brewinstallmysql

homebrew安装的版本同样是当前最新的稳定版,安装的过程比较简单,不过初始化就相对麻烦很多了,这里我失败了很多次。
3.2、配置:
3.2.1、初始化
初始安装mysql的一些配置数据库(例如:information_schema、mysql)
复制代码代码如下:
sudomysql_install_db\
--verbose--user=`whoami`\
--basedir="$(brew--prefixmysql)"\
--datadir=/usr/local/var/mysql\
--tmpdir=/tmp\
--explicit_defaults_for_timestamp

这里我遇到了两个问题,过程都没纪录,这里简单提下解决方案:
系统建议我添加“?explicit_defaults_for_timestamp”;
安装过程中会遇到几个error,说是db的几个文件不存在;
网上搜索了下,大多是建议将/usr/local/var/mysql这个目录修改下权限;
我操作后发现可能不是这样的,造成这个问题在于我在之前操作遇到了错误中止了,生成了一个不完整var目录,所以每次安装失败我就删除以下文件,重新初始化就好了
复制代码代码如下:
sudorm/usr/local/opt/mysql/my.cnf
sudorm-R/usr/local/var/mysql/

待安装完毕后,会出现一大段mysql相关信息,运行下面的命令启动mysql
复制代码代码如下:
/usr/local/opt/mysql/bin/mysqld_safe&

执行完后,就可以在终端里运行“mysql”,直接进入mysql数据库里。对,不用输入密码,可以直接连接,初始默认是可以匿名访问的。
3.2.2、修改密码
超级用户“root”也是没设密码,要设密码的话可以执行下面指令
复制代码代码如下:
/usr/local/opt/mysql/bin/mysqladmin-urootpassword"new-password"

现在访问mysql还是不用密码就可以连接,如果要设置一些登陆密码的安全访问限制,则需执行下面的mysql安全安装指令
复制代码代码如下:
/usr/local/opt/mysql/bin/mysql_secure_installation

主要是设置修改root密码(设置过了可以不用设置,略过)、删除匿名访问、删除root网络访问、删除test数据库。指令执行完后,登陆mysql就需要密码验证了
复制代码代码如下:
mysql-uroot-p

3.3、开机启动mysql
复制代码代码如下:
mkdir-p~/Library/LaunchAgents/

cp/usr/local/Cellar/mysql/5.6.13/homebrew.mxcl.mysql.plist~/Library/LaunchAgents/
launchctlload-w~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

至此,mysql安装完毕。
四、安装php、php-fpm…
4.1、安装
Mac是预装了php,不过很多扩展都没安装,目测最多只能在终端里执行下php指令,所以我选择重新安装php。由于brew默认是没有php安装,所以要使用“brewtap”来安装brew的第三方程序包,这里使用josegonzalez的php安装包,具体操作如下:
复制代码代码如下:
brewtaphomebrew/dupes
brewtapjosegonzalez/homebrew-php

执行完后,就可以用brew安装php了。这里php有几个版本可以安装,具体可以执行“brewsearchphp”查看一下有什么php版本可以安装,一般会有“php52、php53、php54、php55”版本,我安装的是最新的php5.5版本。由于PHP5.5版本已经内嵌了FPM(FastCGIProcessManager),在安装选项里标明就行,本人php的安装配置指令如下:
复制代码代码如下:
sudobrewinstallphp55\
--with-debug\
--with-fpm\
--with-gmp\
--with-homebrew-openssl\
--with-imap--with-intl\
--with-libmysql\
--without-bz2\
--without-mysql\
--without-pcntl\
--without-pear

更多的安装选项可以通过“brewoptionsphp55″查看。
提示:?with-cgi不能和?with-fpm一起安装,互相冲突
指令执行完后,php跟php-fpm就安装好了。
4.2、配置
由于是重装php,之前系统预装的php还没卸载,因此在终端调用php时,还是以之前系统的php版本做解析,所以这里需要修改path,指定php的解析路径。在~/.bashrc(没有则创建)最后加入一行:
复制代码代码如下:
exportPATH="$(brew--prefixphp54)/bin:$PATH"
[html]
[code]
source./.profile

不存在这个文件的朋友请参照这片文章进行配置:Mac系统终端命令行不执行命令总出现commandnotfound解决方法
OK,php-fpm安装完成。
要修改配置php或者php-fpm的话,可以修改“/usr/local/etc/php/5.5/php.ini”、“/usr/local/etc/php/5.5/php-fpm.conf”。
详细配置方法可以参照相关资料:
php-fpm启动参数及重要配置详解
Linux平滑编译升级php至5.5.0
启动php-fpm的话就直接在终端里执行“php-fpm”,默认打开php-fpm会显示一个状态shell出来,也可以把php-fpm的配置文件里的“daemonize=no”改为“daemonize=yes”,就会以后台守护进程的方式启动,对于刚修改的配置文件,可以执行“php-fpm-t”来检测配置有没有问题。
4.3、开机启动
开机启动php-fpm(下面的5.5.3是当前安装php的具体版本号):
复制代码代码如下:
mkdir-p~/Library/LaunchAgents/

cp/usr/local/Cellar/php54/5.5.3/homebrew-php.josegonzalez.php55.plist~/Library/LaunchAgents/
launchctlload-w~/Library/LaunchAgents/homebrew-php.josegonzalez.php55.plist

为了方便,写了个启动、关闭、重启php-fpm的shell脚本:
复制代码代码如下:
#!/bin/sh

param=$1

start()
{
   fpms=`psaux|grep-i"php-fpm"|grep-vgrep|awk"{print$2}"`
   if[!-n"$fpms"];then
       php-fpm
       echo"PHP-FPMStart"
   else
       echo"PHP-FPMAlreadyStart"
   fi
}

stop()
{
   fpms=`psaux|grep-i"php-fpm"|grep-vgrep|awk"{print$2}"`
   echo$fpms|xargskill-9

   forpidin$fpms;do
       ifecho$pid|egrep-q"^[0-9]+$";then
           echo"PHP-FPMPid$pidKill"
       else
           echo"$pidISNotAPHP-FPMPid"
       fi
   done
}

case$paramin
   "start")
       start;;
   "stop")
       stop;;
   "restart")
       stop
       start;;
   *)
       echo"Usage:./phpfpm.shstart|stop|restart";;
esac

五、设置nginx的php-fpm配置
在server块中添加解析文件类型“indexindex.htmlindex.htmindex.php;”
复制代码代码如下:
server{
       listen      80;
       server_name localhost;
       indexindex.htmlindex.htmindex.php;
       ......
}

打开nginx默认注释掉的phplocation设置,修改如下(具体配置参数,例如路径,这里以我本地安装为准):
复制代码代码如下:
location~.*\.(php|php5)?${
       #fastcgi_pass unix:/tmp/php-cgi.sock;
       fastcgi_pass 127.0.0.1:9000;
       fastcgi_indexindex.php;
       fastcgi_param SCRIPT_FILENAME /Library/WebServer/public_html$fastcgi_script_name;
       include/usr/local/etc/nginx/fastcgi_params;
       #includefcgi.conf;
}

修改目录用户、用户组:
复制代码代码如下:
sudochownwww:www/Library/WebServer/public_html

OK,这样就可以在访问目录下(默认是/Library/WebServer/public_html)执行php文件了。嗯,赶快输出一下“phpinfo()”吧~
复制代码代码如下:
<?php
phpinfo();