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目录下,并且还需要在httpd.conf配置文件中添加LoadModule
语句来动态将libphp5.so模块加载进来,从而实现Apache对php的支持。
2.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模块的支持。
2.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。
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)源代码安装
下载地址:http://nginx.org/download/
我这里下载的是 nginx-1.3.9.tar.gz,安装过程很简单,如下:
$./configure
$make
$make install
安装成功之后,nginx放置在/usr/local/nginx目录下,主要的配置文件为conf目录下的nginx.conf,
nginx的启动文件在sbin目录下的nginx文件。
3.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/ 。
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)测试
打开http://localhost/phpinfo.php
4.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 ]
}
这里你还要对正则表达式有一定的了解!!!
5.手动安装问题解决
出错:
./configure: error: the HTTP rewrite module requires the PCRE library.
You can either disable the module by using --without-http_rewrite_module
option, or install the PCRE library into the system, or build the PCRE library
statically from the source with nginx by using --with-pcre=<path> option.
解决:
sudo apt-get install libpcre3 libpcre3-dev
出错:/configure: error: the HTTP gzip module requires the zlib library.
You can either disable the module by using --without-http_gzip_module
option, or install the zlib library into the system, or build the zlib library
statically from the source with nginx by using --with-zlib=<path> option.
解决:
sudo apt-get install libssl-dev
相关推荐
在linux 下安装nginx, 解决网页访问时报跨域问题, 只用改配置文件, 亲测有效
大多产品部署在内网,外网资源很难获取。nginx离线资源包,解决内网部署问题
::用windows服务安装器winsw把nginx安装为系统服务后,此时重新加载配置reload操作会出错,并不能直接管理,要用system用户身份管理,通过psexec可以达到这一目的 ::通过本管理器可以实现nginx系统服务的安装卸载,...
linuxcentos安装nginx常见错误及解决办法.pdf
1、windows 环境下 nginx安装压缩包。 2、nginx.conf配置文件中有相关配置的注解说明,方便上手配置。 3、nginx.conf配置文件中的 域名 是通过 在hosts文件中添加 IP 和自定义域名的映射后配置的。
用于解决如下错误: ./configure: error: the HTTP rewrite module requires the PCRE library. 安装相关依赖包 1、上传lib解压,然后执行如下命令安装(需要root权限) 2、rpm -Uvh ./*.rpm --nodeps --force
linux下nginx离线安装包--附带所有依赖环境和安装教程,当linux无外网情况下,可通过此安装版安装,一次性解决所有依赖,按照压缩包内教程,即可从头到尾安装完毕
(4) Linux下Nginx+Resin负载均衡,session问题解决实例 - 21 - 1) 测试环境: - 21 - 2) 安装步骤: - 22 - a)在server1 上安装配置 nginx + nginx_upstream_jvm_route - 22 - b)分别在两台机器上 安装 resin - 22 -...
统信系统(UOS)arm64 nginx离线安装包,附带简易安装命令,安装有任何问题可以私信我,我来提供解决方案
解决安装Nginx安装时报错依赖Pcre的问题,附安装Pcre的步骤及安装包,并解决非root用户安装的问题
2023年最新测试,绝对没问题!!! 系统版本:银河麒麟桌面系统V10 此包架构是:兆芯-海光-intel-AMD--X86 ...如果安装和使用遇到什么问题也可以联系我,不忙的话立马帮你解答。 下载后有我的联系方式
2023年最新测试,绝对没问题!!! 系统版本:统信UOS V20 此包架构是:飞腾,鲲鹏,arm64架构 nginx版本:nginx-v1.14 ...如果安装和使用遇到什么问题也可以联系我,不忙的话立马帮你解答。 下载后有我的联系方式
2023年最新测试,绝对没问题!!! 系统版本:银河麒麟桌面系统V10 此包架构是:飞腾,鲲鹏,arm64架构 ...如果安装和使用遇到什么问题也可以联系我,不忙的话立马帮你解答。 下载后有我的联系方式
2023年最新测试,绝对没问题!!! 系统版本:银河麒麟服务器系统V10 此包架构是:飞腾,鲲鹏,arm64架构 ...如果安装和使用遇到什么问题也可以联系我,不忙的话立马帮你解答。 下载后有我的联系方式
国产麒麟系统 nginx离线安装包 armhf架构deb包,附带简易安装命令,安装有任何问题可以私信我,我来提供解决方案,直到安装好为止。
OpenWrt环境下编译fcgiwrap的源代码,内含其所依赖的fcgi包源代码,将文件 解压到OpenWrt-SDK的package目录下即可执行Make V=s完成整个编译过程,生成的ipk文件可直接安装到相应的路由器中,然后就可以用nginx取代原...
2023年最新测试,绝对没问题!!! 系统版本:银河麒麟服务器系统V10 此包架构是:龙芯--mips 该包版本:nginx-v1.18 ...如果安装和使用遇到什么问题也可以联系我,不忙的话立马帮你解答。 下载后有我的联系方式
今天在do的VPS配置Nginx虚拟主机时,修改配置文件后,重启Nginx后一直报告失败,但是不知道哪里错了,直觉觉得是配置文件配置错了,google了下解决方案。 解决方案 Nginx启动或重启失败,一般是因为配置文件出错了,...
完美安装PHP + Nginx +Windows 配置 ,一起安装只要十分钟,让你少钻几个坑 快速解决对应问题