文档章节

Nginx+PHP安装(Debian6)

China_OS
 China_OS
发布于 2012/08/17 13:55
字数 1823
阅读 2221
收藏 5

 

     Nginx 目前来说已经很流行了,所以打算把现有的Apache先替换一部分,在批量部署和管理方面都要考虑到。因为nginx的所有模块都是静态编译的不像apache那样可以动态添加模块,所以在一开始就要考虑清楚需求,结合现在很火的LAMP模式,其中P最常见的是PHP,目前较好的FastCGI的管理器有spaw-fcgi和php-fpm,而php老版本都是需要源码安装通过打补丁的方式把php-fpm打进去,spaw-fcgi是lighttpd默认的FastCGI管理器,因为牵扯到源码安装,当前的软件包版本在大规模部署起来不是很方便,但是还是有解决办法的。

    Nginx安装方法:

    1 apt网络安装

       修改源列表

vi /etc/apt/sources.list
#加入以下源
deb http://nginx.org/packages/debian/ squeeze nginx
deb-src http://nginx.org/packages/debian/ squeeze nginx

        更新源列表并通过apt安装nginx

apt-key add nginx_signing.key
apt-get update
apt-get install nginx

    2 源码编译安装

       先安装编译环境, 由于nginx在以后的使用中会需要用到perl正则、压缩算法、SSL等特性,所以我们需要提前安装相关库文件。

apt-get install build-essential 
apt-get install libpcre3 libpcre3-dev zlib1g zlib1g-dev openssl libssl-dev libssl0.9.8

        下载最新的稳定版nginx

wget http://nginx.org/download/nginx-1.2.3.tar.gz

        解压查看编译选项

tar zxvf nginx-1.2.3.tar.gz
cd nginx-1.2.3
#--help可以看到可以配置的参数
./configure --help

       查看编译可选的配置参数(以下只是一些常用的配置项):

     

--prefix=PATH                      nginx的默认安装路径,没有指定的话。默认为/usr/local/nginx

--sbin-path=PATH                nginx可执行命令文件的路径,没有指定的话,默认<prefix>/sbin/nginx

--conf-path=PATH               nginx配置文件路径,没有指定的话,默认为<prefix>/conf/nginx.conf

--error-log-path=PATH        在nginx.conf中没有使用error_log指定错误日志路径时,默认<prefix>/logs/error.log

--http-log-path=PATH         定义被访问文件的日志存放路径,如果在nginx.conf中没有使用access_log指定,默认为<prefix>/logs/access.log 

--pid-path=PATH                    当在nginx.conf中没有使用pid指定pid文件路径时,默认为<prefix>/logs/nginx.pid

--lock-path=PATH                   锁文件存放路由,如果在nginx.conf中没有指定,则默认为<prefix>/logs/nginx.lock

--user=USER                        如果在Nginx.conf中没有使用user定义进程运行的属主,则默认为nobody

--group=GROUP                       如果在Nginx.conf中没有使用user定义进程运行的属组,则默认为nobody 

--builddir=DIR                     set build directory

--with-rtsig_module                使用rtsig模式

--with-select_module               使用select模式,如果当前平台没有其他有效模式,则默认编译

--without-select_module            禁止select模式

--with-poll_module                 使用poll模式,如果当前平台没有其他有效模式,则默认编译

--without-poll_module              禁止poll模式

--with-file-aio                    enable file AIO support

--with-ipv6                        开启IPV6支持

--with-debug                       开启debug

以下这些模块默认没有开启,可以使用--with命令开启以下模块

  --with-http_ssl_module             开启ssl模块

  --with-http_realip_module          可以在后端记录客户端IP

  --with-http_addition_module        enable ngx_http_addition_module

  --with-http_flv_module             开启flv模块

  --with-http_mp4_module             开启mp4模块

  --with-http_gzip_static_module     开启gzip模块

  --with-http_secure_link_module     enable ngx_http_secure_link_module

  --with-http_stub_status_module     开启状态查看模块

 

  以下模块默认是开启的,可以使用--without选项关闭相关模块

  --without-http_charset_module      disable ngx_http_charset_module

  --without-http_gzip_module         禁用gzip压缩模块

  --without-http_ssi_module          禁用ssl模块

  --without-http_userid_module       disable ngx_http_userid_module

  --without-http_access_module       禁用access模块

  --without-http_auth_basic_module   禁用auth_basic认证模块

  --without-http_autoindex_module    禁用列目录模块

  --without-http_geo_module          禁用geo模块

  --without-http_map_module          禁用map模块

  --without-http_referer_module      disable ngx_http_referer_module

  --without-http_rewrite_module      禁用重定向模块

  --without-http_proxy_module        禁用代理模块

  --without-http_fastcgi_module      禁用fastcgi模块

  --without-http_uwsgi_module        disable ngx_http_uwsgi_module

  --without-http_scgi_module         disable ngx_http_scgi_module

  --without-http_memcached_module    disable ngx_http_memcached_module

  --without-http_limit_conn_module   disable ngx_http_limit_conn_module

  --without-http_limit_req_module    disable ngx_http_limit_req_module

  --without-http_empty_gif_module    disable ngx_http_empty_gif_module

  --without-http_browser_module      disable ngx_http_browser_module

  --without-http_upstream_ip_hash_module    禁用upstream模块

 --with-http_perl_module            开启perl模块
  --with-perl_modules_path=PATH      设置perl模块路径
  --with-perl=PATH                   为perl库设置路径
  --http-client-body-temp-path=PATH  set path to store http client request body temporary files
  --http-proxy-temp-path=PATH        set path to store http proxy temporary files
  --http-fastcgi-temp-path=PATH      set path to store http fastcgi temporary files
  --http-uwsgi-temp-path=PATH        set path to store http uwsgi temporary files
  --http-scgi-temp-path=PATH         set path to store http scgi temporary files
  --without-http                     禁用http服务
  --without-http-cache               禁用http cache
  --with-mail                       开启mail服务
  --with-mail_ssl_module             在mail服务中开启ssl
  --without-mail_pop3_module         disable ngx_mail_pop3_module
  --without-mail_imap_module         disable ngx_mail_imap_module
  --without-mail_smtp_module         disable ngx_mail_smtp_module
  --with-google_perftools_module     开启google_perftools模块
  --with-cpp_test_module             开启cpp_test模块
  --add-module=PATH                  enable an external module
  --without-pcre                     禁止使用perl正则库
  --with-pcre                        强制使用perl正则库

     编译安装
./configure  --prefix=/etc/nginx/  --user=nginx --group=nginx --with-http_ssl_module --with-http_realip_module --with-http_addition_module 
--with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gzip_static_module 
--with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-file-aio --with-ipv6
    结果如下图:

     编译并安装
make && make install
     FastCGI回顾
     FastCGI是一个可伸缩地、高速地在HTTP server和动态脚本语言间通信的接口。多数流行的HTTP server都支持FastCGI,包括Apache、Nginx和lighttpd等,同时,FastCGI也被许多脚本语言所支持,其中就有PHP。FastCGI是从CGI发展改进而来的。传统CGI接口方式的主要缺点是性能很差,因为每次HTTP服务器遇到动态程序时都需要重新启动脚本解析器来执行解析,然后结果被返回给HTTP服务器。这在处理高并发访问时,几乎是不可用的。另外传统的CGI接口方式安全性也很差,现在已经很少被使用了。FastCGI接口方式采用C/S结构,可以将HTTP服务器和脚本解析服务器分开,同时在脚本解析服务器上启动一个或者多个脚本解析守护进程。当HTTP服务器每次遇到动态程序时,可以将其直接交付给FastCGI进程来执行,然后将得到的结果返回给浏览器。这种方式可以让HTTP服务器专一地处理静态请求或者将动态脚本服务器的结果返回给客户端,这在很大程度上提高了整个应用系统的性能。
    Nginx不支持对外部程序的直接解析,所有的外部程序(包括PHP)必须通过FastCGI接口来调用。FastCGI接口在Linux下是socket,(这个socket可以是文件socket,也可以是ip socket)。为了调用CGI程序,还需要一个FastCGI的wrapper(wrapper可以理解为用于启动另一个程序的程序),这个wrapper绑定在某个固定socket上,如端口或者文件socket。当Nginx将CGI请求发送给这个socket的时候,通过FastCGI接口,wrapper接纳到请求,然后派生出一个新的线程,这个线程调用解释器或者外部程序处理脚本并读取返回数据;接着,wrapper再将返回的数据通过FastCGI接口,沿着固定的socket传递给Nginx;最后,Nginx将返回的数据发送给客户端,这就是Nginx+FastCGI的整个运作过程。
      

    PHP5.3版本源码已经默认支持php-fpm了,但是debian6认为它还没经过广泛的测试,所以在debian6的软件仓库中,虽然php版本为5.3.3,但是却没包含php-fpm,如果不想手工编译安装php的话可以换一个源。
     
     修改源列表
vi /etc/apt/sources.list
deb http://packages.dotdeb.org stable all
deb-src http://packages.dotdeb.org stable all
    更新源列表,安装php5-fpm
apt-get update wget http://www.dotdeb.org/dotdeb.gpg
cat dotdeb.gpg |  apt-key add -
apt-get install php5-fpm
    安装其他常用php5组件
apt-get install php5 php5-cgi php5-cli php5-mysql php5-memcache
    启动php-fpm
/etc/init.d/php5-fpm start

    这样的话最基本的nginx+php环境就搭建完毕了。    

 


© 著作权归作者所有

China_OS
粉丝 428
博文 463
码字总数 520158
作品 0
静安
技术主管
私信 提问
Kali Linux 上安装Nessus的方法

Nessus是系统漏洞扫描与分析软件,但Nessus在Kali Linux上的安装可不简单,没有提供一个图形化的安装借口,下面就给大家介绍下如何在Kali Linux上安装Nessus。 利用Iceweasel 打开http://ww...

lisiyun22
2017/05/31
0
0
debian6安装Nvidia显卡驱动

debian6安装Nvidia显卡驱动 Table of Contents 1 debian6安装Nvidia显卡驱动 root@alex:~# aptitude updateroot@alex:~# aptitude upgraderoot@alex:~# aptitude install build-essential l......

genreason
2012/12/16
474
0
linux升级笔记,ATI闭源显卡驱动,解决发热问题

好几周没写文章了,这几周折腾Linux , 从Debian6 Squeeze stable源升级到testing 源后导致系统不稳定, 重装 Debian7 wheezy, wheezy 中已经有163的源了,安装速度很快。 装完问题更多: 声...

韩工
2012/06/11
407
0
debian6 xen4.0安装 guest全虚拟化

在基于debian6的宿主机上安装一台debian6 xen全虚拟化的虚拟机,宿主机根分区划分30G,剩余空间做成lvm卷用来安装虚拟机。 安装xen的hypervisor,会自动安装相关依赖包 apt-get install xen-...

China_OS
2012/09/17
952
0
debian6 Redis+phpredis安装

最近在使用redis,刚开始学习,一点一点慢慢积累,根据需求打算最终替换我的mysql库中的一个表,关于redis的介绍google之,下面先开始安装吧,使用系统为debian6。 下载最新的稳定版redis w...

China_OS
2012/08/19
1K
2

没有更多内容

加载失败,请刷新页面

加载更多

使用递归打印乘法表

一般我们在学for循环的时候都会去打印九九乘法表,但是如果是用递归的方式打印的话,应该怎么做呢? 下面讲解一下用递归打印九九乘法表的思路: 其实我们在用for循环打印乘法表的时候,用的是...

INEVITABLE
16分钟前
5
0
sql 练习

创建需要的4张表 首先创建student、course、score、teacher这四张表。 student表 创建student表 CREATE TABLE IF NOT EXISTS student(sno TINYINT UNSIGNED NOT NULL,sname VARCHAR(20......

Garphy
17分钟前
6
0
vSphere的两种虚拟交换机

VMware vSphere 6.7中支持两种虚拟交换机: 1、标准交换机,VSS - Virtual Standard Switch 2、分布式交换机,VDS - Virtual Distributed Switch VSS与ESXi主机一一对应,即一个VSS只能部署在...

大别阿郎
19分钟前
4
0
webGL和three.js的关系

本文转载于:专业的前端网站➤webGL和three.js的关系 如今浏览器的功能越来越强大,而且这些功能可能通过JavaScript直接调用。你可以用HTML5标签轻松地添加音频和视频,而且可以在HTML5画布上...

前端老手
46分钟前
7
0
Spring如何实现AOP,请不要再说cglib了!

1. 从注解入手找到对应核心类 最近工作中我都是基于注解实现AOP功能,常用的开启AOP的注解是@EnableAspectJAutoProxy,我们就从它入手。 上面的动图的流程的步骤就是: @EnableAspectJAutoPr...

温安适
49分钟前
39
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部