mac系统下nginx+php+mysql环境的搭建

有关于mac系统下nginx+php+mysql环境的搭建,大概需要说明的如下:
 
1.安装方式有两种,一种是下载源码包编译安装,一种是采用Homebrew下载安装(此处我采用的是Homebrew方式)。
 
2.Homebrew安装php之前需要安装xcode命令行插件(Command Line Tools),否则安装php会报错。
安装Command Line Tools
xcode-select --install
 
3.Homebrew安装前可以通过options命令查看下安装参数,nginxmysql安装不需要特别的参数设置,直接brew install即可。
Homebrew安装nginxmysql
        brew install mysql , brew install nginx
PHP安装要加命令参数排除apache模块,加载php-fpmmysql,同时因为brew默认没有php-fpm需要事先添加添加。
Homebrew添加php-fpm
brew tap homebrew/dupes
brew tap homebrew/php
Homebrew安装PHP
        brew install --without-apache --with-fpm --with-mysql php54
    注意因为mac系统在带了php,此处需要切换安装版的php需要修改~/.bashrc文件,在最后加入:
export PATH="$(brew --prefix php54)/bin:$PATH"
 
 
4.Homebrew安装默认情况下项目在/usr/local/Cellar目录下,相应配置文件在/usr/local/etc目录下,进程运行在/usr/local/var/run目录下。
 
5.安装成功后,通常会设置开机启动,这里mac系统的开机启动是写在~/Library/LaunchAgents目录下的,具体语句及说明如下:
复制php项目目录下的启动文件到mac自启动目录下,这里启动文件名为homebrew.mxcl.php54.plist
    cp /usr/local/Cellar/php54/php5.4.33/homebrew.mxcl.php54.plist  ~/Librarb/LaunchAgents/
mysqlnginx自启动设置类似。
如果想要启动php执行命令
    launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.php54.plist
 
 
6.nginx安装成功后需要对nginx进行配置,主要内容大概包括:nginx线程设置、错误日志设置和http设置
worker_processes  1;
error_log  /usr/local/etc/nginx/log/error.log warn;
pid        /usr/local/var/run/nginx.pid;
events {
    worker_connections  1024;
}
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/etc/nginx/log/access.log  main;
    sendfile        on;
    #tcp_nopush     on;
    #keepalive_timeout  0;
    keepalive_timeout  65;
    gzip  on;
    include /usr/local/etc/nginx/vhosts/*.conf;
}
 
7.对站点信息进行配置,个人存放在/usr/local/etc/nginx/vhosts/目录下,文件主要设置了监听端口、域名、默认首页和重写规则
server {
        listen       80;
        server_name  localhost;
        index index.html index.htm index.php;
        root /users/admin/Sites/PHPWeb/helloLaravel/public;
        location ~ .*\.(php|php5)?$
        {
                #fastcgi_pass  unix:/tmp/php-cgi.sock;
                fastcgi_pass  127.0.0.1:9000;
                fastcgi_index index.php;
                include fastcgi.conf;
        }
        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
                expires 30d;
        }
        location ~ .*\.(js|css)?$
        {
                expires 1h;
        }
        access_log /usr/local/etc/nginx/log/access.log;
}
 
8.PHP安装成功后,目前不需要什么特定的配置,默认安装会自带PHP-FPM,需要启动PHP-FPM,同样PHP-FPM也不需要特别的配置。
 
9.mysql安装成功后需要初始化mysql配置数据库,并修改初始密码。
 默认mysql数据库存储在/usr/local/var/mysql目录下,可以通过  show variables where Variable_name ='datadir';命令查看具体路径是什么
10.php拓展模块安装,以mcrypt为例,因为php5.4源码包自带mcrypt,下载解压编译安装后会默认安装到phpextensions目录下的no-debug-non-zts目录下
这里以我的安装目录为例
/usr/local/Cellar/php54/5.4.33/lib/php/extensions/no-debug-non-zts-20100525
之后在php.ini文件下的extensions处添加如下配置:
extension=/usr/local/Cellar/php54/5.4.33/lib/php/extensions/no-debug-non-zts-20100525/mcrypt.so
这里我的php.ini文件在/usr/local/etc/php/5.4目录下,添加后可以通过php -m查看是否加载mcrypt模块,要想nginx成功应用还有后重启php-fpm
 
大致说明如上,具体安装可参考如下博客:
 
以下额外说明php拓展模块的安装
 
 
以下作一些概念介绍,方便理解:
 
[1]Homebrew
Homebrewmac下开源的包管理软件,由Max Howell组织编写,这个管理工具在Ruby on Rails社区得到普及,并因为其拓展性得到好评(维基百科)。
 
Homebrewmac下用来下载管理软件的工具,你可以通过homebrew下载开发工具,也可以通过下载源码包编译安装,只不过brew方式更加方便简洁。
通过Ruby脚本安装Homebrew
1 ruby -"$(curl -fsSL https://raw.github.com/gist/323731)"
Homebrew常用命令:
查询软件
    brew search soft
查看某软件命令参数
    brew options soft
安装软件
    brew install soft
删除软件
    brew remove soft
 
通过Homebrew安装NginxMysqlPHP
默认会安装到/usr/local/Cellar目录下,相应配置文件在/usr/local/etc目录下,进程运行在/usr/local/var/run目录下。
 
 
 
[2]PHP HttpServer
php有四种运行模式:模块模式、CGIfastcgiCLI
模块模式以mod_php5模块形式集成,常用在Apache服务器下。
CGI是比较老的一种方式了,现在使用的很少,渐渐被fastcgi取代。
fastcgi是当前使用比较多的运行模式,目前php内置的PHP-CGI就是fastcgi管理器。
CLI模式就是常用的php命令行,比如php -v 、php -m
 
apache2handlerapache 自带运行php的方式
        Apache的工作模式是Apache服务器在系统启动后,预先生成多个进程副本驻留在内存中,一旦有请求出现,就立即使用这些空余的子进程进行处理,这样就不存在生成子进程造成的延迟了。这些服务器副本在处理完一次HTTP请求之后并不立即退出,而是停留在计算机中等待下次请求。对于客户浏览器的请求反应更快,性能较高。
        这就导致了当Apache服务器进行压力测试后其负载仍旧居高不下。
 
CGI
CGI全称是“公共网关接口”(Common Gateway Interface),是HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具。
        CGI是比较老的模式了,这几年都很少用了。cgi方式遇到连接请求先要创建cgi的子进程,然后处理请求,处理完后结束这个子进程。这就是fork-and-execute模式。所以用cgi方式的服务器有多少连接请求就会有多少cgi子进程。子进程反复加载是cgi性能低下的主要原因。
 
FastCGI
FastCGI FastCGI像是一个常驻(long-live)型的CGI,它可以一直执行着,只要激活后,不会每次都要花费时间去fork一次
FastCGI执行流程如下:
1.Web Server启动时载入FastCGI进程管理器(IIS ISAPIApache Module)
2.FastCGI进程管理器自身初始化,启动多个CGI解释器进程(可见多个php-cgi)并等待来自Web Server的连接。
3.当客户端请求到达Web Server时,FastCGI进程管理器选择并连接到一个CGI解释器。Web serverCGI环境变量和标准输入发送到FastCGI子进程php-cgi
4.FastCGI子进程完成处理后将标准输出和错误信息从同一连接返回Web Server。当FastCGI子进程关闭连接时,请求便告处理完成。
 
PHP-CGI
PHP-CGIPHP自带的FastCGI管理器。可以对其直接启动。现在不管是lighttpd还是nginx都可以与php-cgi进行组合运行php,其中lighttpd直接组合php-cgi运行php,还算比较稳定,但nginxphp-cgi直接组合运行phpphp-cgi进程经常崩溃,而且占用的内存也比较高。
PHP-CGI的缺点有
1.php-cgi变更php.ini配置后需重启php-cgi才能让新的php-ini生效,不可以平滑重启
2.直接杀死php-cgi进程,php就不能运行了。
 
PHP-FPM
PHP-FPM是一个PHP FastCGI管理器,PHP-FPM其实是PHP源代码的一个补丁,旨在将FastCGI进程管理整合进PHP包中。
PHP5.3.3已经集成php-fpm了,不再是第三方的包了。PHP-FPM提供了更好的PHP进程管理方式,可以有效控制内存和进程、可以平滑重载PHP配置
 
Spawn-FCGI
Spawn-FCGI是一个通用的FastCGI管理服务器,它是lighttpd中的一部份,很多人都用LighttpdSpawn-FCGI进行FastCGI模式下的管理工作
 
 
FastCGI像是一个常驻(long-live)型的CGI,它可以一直执行着,激活后,不必每次都花费时间去forkforkfork-and-execute 模式)。它还支持分布式的运算,即 FastCGI 程序可以在网站服务器以外的主机上执行并且接受来自其它网站服务器来的请求。
 
FastCGI是语言无关的、可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程保持在内存中并因此获得较高的性能。众所周知,CGI解释器的反复加载是CGI性能低下的主要原因,如果CGI解释器保持在内存中并接受FastCGI进程管理器调度,则可以提供良好的性能、伸缩性、Fail- Over特性等等。
 
目前常见的php HttpServer Stack有三种:
1.Apache+mod_php5
2.lighttp+spawn-fcgi
3.nginx+PHP-FPM



注:文章转自王忆天
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值