Ubuntu中Nginx服务器安装配置教程

Nginx是一个非常轻量级的HTTP服务器,也是一个高性能的HTTP和反向代理服务器,同时还是一个IMAP/POP3/SMTP 代理服务器。

1.对PHP支持

目前各种web 服务器对PHP的支持一共有三种:

(1)通过web 服务器内置的模块来实现,例如Apache的mod_php5,类似的Apache内置的mod_perl可以对perl支持。

(2)通过CGI来实现,这个就好比之前perl的CGI,该种方式的缺点是性能差,因为每次服务器遇到这些脚本都需要重新启动脚本解析器来执行脚本然后将结果返回给服务器;另一方面就是不太安全;该方面几乎很少使用了。

(3)最新出现一种叫做FastCGI。所谓FastCGI就是对CGI的改进。它一般采用C/S结构,一般脚本处理器会启动一个或者多个daemon进程,每次web 服务器遇到脚本的时候,直接交付给FastCGI的进程来执行,然后将得到的结果(通常为html)返回给浏览器。

1.1 Apache+mod_php模式

我们很久一段时间使用经典的Apache+mod_php。

Apache对PHP的支持是通过Apache的模块来支持的。如果从源代码编译安装PHP的话,如果希望Apache支持PHP的话,

在./configure步骤需要指定--with-apxs2=/usr/local/apache2/bin/apxs 表示告诉编译器通过Apache的mod_php5/apxs来提供

对PHP5的解析;而且在最后一步make install的时候我们会看到将动态链接库libphp5.so拷贝到apache2的安装目录的modules目录

下,并且还需要在httpd.conf配置文件中添加LoadModule语句来动态将libphp5.so 模块加载进来,从而实现Apache对php的支持。

1.2 Nginx+FastCGI模式

Nginx完全是轻量级的,必须借助第三方的FastCGI处理器才可以对PHP进行解析,因此其实这样看来Nginx是非常灵活的,它可以

和任何第三方提供解析的处理器实现连接从而实现对PHP的解析(在nginx.conf中很容易设置)。

Nginx可以使用spwan-fcgi。在早期版本中需要安装lighttpd,但是在9.10版本以后直接安装spawn-fcgi就可以。现在出现了新的

第三方的PHP的FastCGI处理器,叫做PHP-FPM,可以了解一下。本文是基于spawn-fcgi实现对PHP模块的支持。

1.3安装FastCGI

/usr/bin/spawn-fcgi这个文件来管理 FastCGI,它原属于lighttpd这个包里面,但 9.10 后,spawn-fcgi 被分离出来单独成包。

(1)使用apt-get在线安装命令如下:

$sudo apt-get install spawn-fcgi

(2)源代码安装如下,下载地址为:

http://www.lighttpd.net/download/spawn-fcgi-1.6.3.tar.gz

解压缩以后,进入目录下执行如下安装命令:

$./configure

$make

$make install

安装之后,spawn-fcgi命令就可以直接使用了,它的可执行文件在/usr/local/bin/spawn-fcgi。

2.Nginx安装

2.1安装Nginx

(1)在线安装

$sudo apt-get install nginx

Nginx的版本是1.2.1

ubuntu安装Nginx之后的文件结构大致为:

所有的配置文件都在/etc/nginx下,并且每个虚拟主机已经安排在了/etc/nginx/sites-available下

启动程序文件在/usr/sbin/nginx

日志放在了/var/log/nginx中,分别是access.log和error.log

并已经在/etc/init.d/下创建了启动脚本nginx

默认的虚拟主机的目录设置在了/usr/share/nginx/www

(2)源代码安装

下载地址:http://nginx.org/download/

我这里下载的是 nginx-1.3.9.tar.gz,安装过程很简单,如下:

$./configure

$make

$make install

安装成功之后,nginx放置在/usr/local/nginx目录下,主要的配置文件为conf目录下的nginx.conf,nginx的启动文件在sbin目录

下的nginx文件。

2.2启动Nginx

(1)在线安装的启动过程

$sudo /etc/init.d/nginx start

(2)源代码安装的启动过程

$cd /usr/local/nginx

$sbin/nginx

然后就可以访问了,http://localhost/, 一切正常!如果不能访问,先不要继续,看看是什么原因,解决之后再继续。

如果你的机器同时安装了Apache,那上面的访问方式就不能使用了,而且nginx都可能启动不了,这是因为它们都是用了80这个端口。我们这里将nginx的端口修改为8080,这里主要修改nginx的配置文件nginx.conf,将一下这一行

listen 80;

修改为

listen 8080;

然后就可以访问了,http://localhost:8080/。

23安装PHP和MySQL

$sudo apt-get install php5-cliphp5-cgimysql-server php5-mysql

2.4测试Nginx对PHP的支持

(1)重新启动nginx:

$/etc/init.d/nginx restart

(2)启动FastCGI:

$spawn-fcgi -a 127.0.0.1 -p 9000 -C 10 -u www-data -f /usr/bin/php-cgi

spawn-fcgi启动出现错误时,查看php-cgi是否安装,如果么有的话,安装php5-cgi。

$sudo apt-get install php5-cgi

(3)测试

打开http://localhost/phpinfo.php

3.Nginx配置

Nginx的配置文件是/etc/nginx/nginx.conf,其中设置了一些必要的参数,我们发现其中这样的语句:

include /etc/nginx/sites-enabled/*

可以看出/etc/nginx/sites-enabled/default文件也是一个核心的配置文件,其中包含了主要的配置信息,如服务器跟目录、服务器名称、location信息和server信息。

对于源代码安装的nginx,配置文件为/usr/local/nginx/conf/nginx.conf。

下面主要说明location的匹配规则:

(1)= 前缀的指令严格匹配这个查询。如果找到,停止搜索。

(2)剩下的常规字符串,最长的匹配优先使用。如果这个匹配使用 ^~ 前缀,搜索停止。

(3)正则表达式,按配置文件里的顺序,第一个匹配的被使用。

(4)如果第三步产生匹配,则使用这个结果。否则使用第二步的匹配结果。

在location中可以使用常规字符串和正则表达式。

如果使用正则表达式,你必须使用以下规则:

(1)~* 前缀选择不区分大小写的匹配

(2)~ 选择区分大小写的匹配

例子:

location = / {

# 只匹配 / 查询。

[ configuration A ]

}

location / {

# 匹配任何查询,因为所有请求都以 / 开头。

# 但是正则表达式规则和长的块规则将被优先和查询匹配。

[ configuration B ]

}

location ^~ /images/ {

# 匹配任何以 /images/ 开头的任何查询并且停止搜索。

# 任何正则表达式将不会被测试。

[ configuration C ]

}

location ~* .(gif|jpg|jpeg)$ {

# 匹配任何以 gif、jpg 或 jpeg 结尾的请求。

# 然而所有 /images/ 目录的请求将使用 Configuration C。

[ configuration D ]

}

这里你还要对正则表达式有一定的了解!!!

(0)

相关推荐

  • Ubuntu 11.0下配置Web服务器详细教程[ 图文]

    近日,有消息爆出Linux桌面已经趋于“死亡”,众多Linux爱好者感到失望,但令人可喜的是Linux在服务器领域表现却尤为喜人,据IDC数据显示,部署了Linux系统的服务器占到20%的市场份额。其 ...

  • Torch7在Ubuntu下的安装与配置教程详解(torch入门使用)

    Torch7的本系列教程的主要目的是介绍Torch的入门使用.今天首先分享一下Torch7的安装.(在Ubuntu14.04安装torch7) 为什么选择Torch Torch的目标是在建立科学算法的 ...

  • Ubuntu系统下Pure-ftpd的安装及配置教程

    安装 Ubuntu/Debian 提供了三个不同的 Pure-FTPd 的 deb 安装包,分别是 pure-ftpd.pure-ftpd-ldap 和 pure- ftpd-mysql,其中 lda ...

  • Centos6.5 中 ssh免密码登录配置教程

    0.说明 这里为了方便说明问题,假设有A和B两台安装了centos6.5的主机.目标是实现A.B两台主机分别能够通过ssh免密码登录到对方主机.不同主机的配置过程一样,这里介绍A主机的配置过程. 事先 ...

  • Ubuntu中SSH安装教程

    相信很多小伙伴都有在使用Ubuntu,那么在其中我们怎么去安装SSH呢?方法很简单,下面小编就来为大家介绍.具体如下:1. 打开Ubuntu,进入主页面.2. 因为小编在这里使用的是桌面版Ubuntu ...

  • Mac系统中如何配置JDK环境变量?Mac中JDK环境变量配置教程

    Mac系统中如何配置JDK环境变量?在使用mac系统的电脑时,如何进行设置JDK环境变量呢?接下来的文章中小编将会带来详细的介绍,希望对您有所帮助. Mac中JDK环境变量配置教程 1.访问Oracl ...

  • eclipse怎么创建servlet中class并配置servlet教程

    在进行使用的javaweb的项目的文件当中的,那么对javaweb时候就会需要在创建一个servlet的程序的java的文件,以便来对javaweb的项目上开发,创建完成之后就需要进行配置servle ...

  • 使用apt-mirror搭建Ubuntu软件源的实例教程

    搭建自有Ubuntu源的原因有很多 节省外网带宽提前下载,缓解国外源下载缓慢私有定制软件包发布 本文测试环境 ubuntu 14.04(LTS) 64位apt-mirror 版本 0.5.1-1ngi ...

  • Windows 10下使用U盘安装Ubuntu双系统的图文教程

    问题描述:在Windows10下安装Ubuntu. 使用工具:Windows10.Ubuntu16.04 LTS安装包.UltraISO.easyBCD. 操作步骤: 1.安装之前要给Ubuntu分出 ...