Ubuntu中Nginx的安装与配置详细说明
1.Nginx介绍
Nginx是⼀个⾮常轻量级的HTTP服务器,Nginx,它的发⾳为“engine X”,是⼀个⾼性能的HTTP和
反向代理服务器,同时也是⼀个IMAP/POP3/SMTP 代理服务器。
2.对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)返回给浏览器。
2.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⽬录下,并且还需要在f配置⽂件中添加LoadModule
语句来动态将libphp5.so模块加载进来,从⽽实现Apache对php的⽀持。
2.2 Nginx+FastCGI模式
Nginx完全是轻量级的,必须借助第三⽅的FastCGI处理器才可以对PHP进⾏解析,因此其实这样看来Nginx是⾮常灵活的,它可以和任何第三⽅提供解析的处理器实现连接从⽽实现对PHP的解析(在f中很容易设置)。 Nginx可以使⽤spwan-fcgi。在早期版本中需要安装lighttpd,但是在9.10版本以后直接安装spawn-fcgi就可以。现在出现了新的第三⽅的PHP的FastCGI处理器,叫做PHP-FPM,可以了解⼀下。本⽂是基于spawn-fcgi实现对PHP模块的⽀持。
2.3 安装FastCGI
/usr/bin/spawn-fcgi这个⽂件来管理 FastCGI,它原属于lighttpd这个包⾥⾯,但 9.10 后,spawn-fcgi
被分离出来单独成包。
(1)使⽤apt-get在线安装命令如下:
$sudo apt-get install spawn-fcgi
(2)源代码安装如下,下载地址为:
解压缩以后,进⼊⽬录下执⾏如下安装命令:
$./configure
$make
$make install
安装之后,spawn-fcgi命令就可以直接使⽤了,它的可执⾏⽂件在/usr/local/bin/spawn-fcgi。
3.Nginx安装
3.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)源代码安装
我这⾥下载的是 nginx-1.3.,安装过程很简单,如下:
$./configure
$make
$make install
安装成功之后,nginx放置在/usr/local/nginx⽬录下,主要的配置⽂件为conf⽬录下的f,nginx的启动⽂件在sbin⽬录下的nginx⽂件。
3.2 启动Nginx
(1)在线安装的启动过程
$sudo /etc/init.d/nginx start
(2)源代码安装的启动过程
$cd /usr/local/nginx
$sbin/nginx
解决之后再继续。
nginx和apache区别如果你的机器同时安装了Apache,那上⾯的访问⽅式就不能使⽤了,⽽且nginx都可能启动不了,这是因为它们都是⽤了80这个端⼝。我们这⾥将nginx的端⼝修改为8080,
这⾥主要修改nginx的配置⽂件f,将⼀下这⼀⾏
listen 80;
修改为
listen 8080;
3.3 安装PHP和MySQL
$sudo apt-get install php5-cli php5-cgi mysql-server php5-mysql
3.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)测试
4.Nginx配置
Nginx的配置⽂件是/etc/f,其中设置了⼀些必要的参数,我们发现其中这样的语句: include /etc/nginx/sites-enabled/*
可以看出/etc/nginx/sites-enabled/default⽂件也是⼀个核⼼的配置⽂件,其中包含了主要的配置信息,如服务器跟⽬录、服务器名称、location信息和server信息。
对于源代码安装的nginx,配置⽂件为/usr/local/nginx/f。
下⾯主要说明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 ]
}
这⾥你还要对正则表达式有⼀定的了解
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论