文档章节

MNMP环境搭建-来自Ghost·★ 小站-人人小站

魏邪乎
 魏邪乎
发布于 2015/08/24 15:36
字数 2141
阅读 98
收藏 1

有关于mac系统下nginx+php+mysql环境的搭建,大概需要说明的如下:


1.安装方式有两种,一种是下载源码包编译安装,一种是采用Homebrew下载安装(此处我采用的是Homebrew方式)。


2.Homebrew安装php之前需要安装xcode命令行插件(Command Line Tools),否则安装php会报错。

安装Command Line Tools

xcode-select --install


3.用Homebrew安装前可以通过options命令查看下安装参数,nginx和mysql安装不需要特别的参数设置,直接brew install即可。

Homebrew安装nginx和mysql

        brew install mysql , brew install nginx。

PHP安装要加命令参数排除apache模块,加载php-fpm和mysql,同时因为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



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/

mysql和nginx自启动设置类似。


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配置数据库,并修改初始密码。


10.php拓展模块安装,以mcrypt为例,因为php5.4源码包自带mcrypt,下载解压编译安装后会默认安装到php的extensions目录下的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。


大致说明如上,具体安装可参考如下博客:

http://dhq.me/mac-install-nginx-mysql-php-fpm

http://blog.frd.mn/install-nginx-php-fpm-mysql-and-phpmyadmin-on-os-x-mavericks-using-homebrew/


以下额外说明php拓展模块的安装

http://www.tantai.org/19/mac-os-x-php-mcrypt


以下作一些概念介绍,方便理解:


[1]Homebrew

Homebrew是mac下开源的包管理软件,由Max Howell组织编写,这个管理工具在Ruby on Rails社区得到普及,并因为其拓展性得到好评(维基百科)。


Homebrew是mac下用来下载管理软件的工具,你可以通过homebrew下载开发工具,也可以通过下载源码包编译安装,只不过brew方式更加方便简洁。

通过Ruby脚本安装Homebrew

  1. ruby -e "$(curl -fsSL https://raw.github.com/gist/323731)"

Homebrew常用命令:

查询软件

    brew search soft

查看某软件命令参数

    brew options soft

安装软件

    brew install soft

删除软件

    brew remove soft


通过Homebrew安装Nginx、Mysql、PHP

默认会安装到/usr/local/Cellar目录下,相应配置文件在/usr/local/etc目录下,进程运行在/usr/local/var/run目录下。




[2]PHP HttpServer

php有四种运行模式:模块模式、CGI、fastcgi、CLI。

模块模式以mod_php5模块形式集成,常用在Apache服务器下。

CGI是比较老的一种方式了,现在使用的很少,渐渐被fastcgi取代。

fastcgi是当前使用比较多的运行模式,目前php内置的PHP-CGI就是fastcgi管理器。

CLI模式就是常用的php命令行,比如php -v 、php -m


apache2handler是apache 自带运行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 ISAPI或Apache Module)

2.FastCGI进程管理器自身初始化,启动多个CGI解释器进程(可见多个php-cgi)并等待来自Web Server的连接。

3.当客户端请求到达Web Server时,FastCGI进程管理器选择并连接到一个CGI解释器。Web server将CGI环境变量和标准输入发送到FastCGI子进程php-cgi。

4.FastCGI子进程完成处理后将标准输出和错误信息从同一连接返回Web Server。当FastCGI子进程关闭连接时,请求便告处理完成。


PHP-CGI

PHP- CGI是PHP自带的FastCGI管理器。可以对其直接启动。现在不管是lighttpd还是nginx都可以与php-cgi进行组合运行php,其 中lighttpd直接组合php-cgi运行php,还算比较稳定,但nginx跟php-cgi直接组合运行php,php-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中的一部份,很多人都用Lighttpd的Spawn-FCGI进行FastCGI模式下的管理工作



FastCGI 像是一个常驻(long-live)型的CGI,它可以一直执行着,激活后,不必每次都花费时间去fork(fork是fork-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


本文转载自:http://zhan.renren.com/h5/entry/3602888498057934465

共有 人打赏支持
魏邪乎
粉丝 6
博文 80
码字总数 21389
作品 0
保定
私信 提问
新年新气象,重装系统,欢迎大家访问我的全新博客小站

在简书写了有一段时间的博客了。我喜欢写又宽又长的文章。简书的内容宽度比较窄会让代码块产生滚动条。简书不支持目录,所以我的长文会变得很难观看。在这样的问题基础上: 我在新年到来之际...

天涯明月笙
01/03
0
0
关于"python自动化测试"

关于"python自动化测试" "python自动化测试"是收集python测试开发相关资料小站。 小站基于python开发自动化测试群113938272和开发测试群6089740。群主曾在华为从事c语言开发,在UT斯达康,腾...

长平狐
2013/12/25
128
0
wordpress换主题需要学习什么语言呀?

我自己开了一个小站,最近想给小站换主题和背景,想换掉框架,之前是用下载的模板,不是喜欢。网站搭建是用的是wordpress,是当时是买空间的时候的技术服务帮忙安装的。我不是学计算机的~但是...

小小容
2015/11/26
335
4
虚拟机 安装MSF漏洞攻击练习系统 – Metasploitable2

www.insaneboy.top 个人文艺小站 Metasploitable2 是Metasploit团队维护的一个集成了各种漏洞弱点的Linux主机(ubuntu)镜像,方便广大黑扩跟安全人员进行MSF漏洞测试跟学习,免去搭建各种测试环...

周海棠啦
2016/04/29
0
0
开源仿百度博客系统--JFinal_Blog

JFinal_Blog是基于JFinal1.5开源系统搭建的博客系统,以91zcm.com 网站作为模板和演示事例,目前已经加入了开源行列。 一、版本介绍: 1、版本V1.0: 本程序是基于JFinal 1.5做的一个小站,代...

江哥一直在
2014/01/09
12.3K
5

没有更多内容

加载失败,请刷新页面

加载更多

babel6升级到7,jest-babel报错:Requires Babel "^7.0.0-0", but was loaded with "6.26.3".

自从将前端环境更新到babel7,jest-babel之前是基于babel6的,执行时候就会报:Requires Babel "^7.0.0-0", but was loaded with "6.26.3". 很烦,因为连续帮好几台电脑修复这个问题,所以记...

曾建凯
今天
1
0
探索802.11ax

802.11ax承诺在真实条件下改善峰值性能和最差情况。 如何改善今天的Wi-Fi? 在决定如何改进当前版本以外的Wi-Fi时,802.11ac,IEEE和Wi-Fi联盟调查了Wi-Fi部署和行为,以确定更广泛使用的障碍...

linuxprobe16
今天
2
0
使用linux将64G的SDCARD格式化为FAT32

一、命令如下: sudo fdisk -lsudo mkfs.vfat /dev/sda -Isudo fdisk /dev/sda Welcome to fdisk (util-linux 2.29.2). Changes will remain in memory only, until you decide to wri......

mbzhong
今天
4
0
深入理解Plasma(四):Plasma Cash

这一系列文章将围绕以太坊的二层扩容框架,介绍其基本运行原理,具体操作细节,安全性讨论以及未来研究方向等。本篇文章主要介绍在 Plasma 框架下的项目 Plasma Cash。 深入理解Plasma(1):...

HiBlock
昨天
1
0
命令参数的三大风格:Posix、BSD、GNU

今天读到命令行中参数的风格有三大类,即Unix/Posix、BSD、GNU。分别有以下特征: Unix/Posix风格,即命令后的参数,可以分组,便必须以连字符开头,如ps -aux。 BSD风格,即命令后的参数,可...

大别阿郎
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部