在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
linux:centos5.5 nginx:1.7.8.tar.gz php:5.6.3.tar.gz
lnmp(linux+nginx+mysql+php)的提法相对于lamp(linux+apche+mysql+php)来提的。 为什么用nginx而抛弃apache了呢? nginx网络io的方式为epoll,apache的网络io的方式为select。两者详细区别请移步:http://www.cnblogs.com/simpman/p/4150005.html 个人理解epoll的方式:建立一个文件描述符队列,在文件描述队列准备好以后,通知web容器。相当于维护一个队列,队列中的成员就绪就通知线程。 select方式:需要web容器开一个线程去扫描哪个文件描述符准备就绪。相当于维护一个数组。 在apache2.4.1上已经引入了epoll代替select。老版的apache因为采用select方式,在处理高并发静态文件请求的时候就会能力不足。
nginx是通过使用php-fastcgi来实现的。apache一般是通过mod_php模块来实现的。本人以前在使用apache的时候也是用这种方式。 下面说一下nginx与php-fastcgi的工作原理: 1. 定义:CGI(Common Gateway Interface)是HTTP服务器与机器上的其他程序进行“交谈”的一种工具,该程序须运行在网络服务器上。 2. 功能:绝大多数的CGI程序被用来解释处理来自表单的输入信息,并在服务器产生相应的处理,或将相应的信息反馈给浏览器。CGI程序使网页具有交互功能。 3. 运行环境:CGI程序在UNIX操作系统上CERN或NCSA格式的服务器上运行。 在其它操作系统(如:windows NT及windows95等)的服务器上也广泛地使用CGI程序,同时它也适用于各种类型机器。 4. CGI处理步骤:
需要gcc(GUN Compiler Collection)编译器,可以编译c,c++,object-c,fortran,java。
yum install gcc gcc-c++ autoconf automake 模块依赖性:nginx需要其他第三方库的支持,gzip需要zlib库,rewrite需要pcre(Perl Compatible Regular Expression)库,ssl功能需要openssl。
yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel
Nginx的安装非常简单。在默认情况下,经过编译安装的Nginx包含了大部分可用模块。可以通过“./configure --help”选项设置各个模块的使用情况,例如对不需要的http_ssi模块,可通过“--without-http_ssi_module”方式关闭此模块;同理,如果需要“http_perl”模块,那么可以通过“--with-http_perl_module”方式安装此模块。“http_perl”模块可以用来启用 Nginx 的 NginxStatus 功能,以监控 Nginx 的当前状态。一下是安装过程: wget http://nginx.org/download/nginx-1.7.8.tar.gz tar zxvf nginx-1.7.8.tar.gz cd nginx-1.7.8 yum install gcc gcc-c++ autoconf automake yum install -y zlib zlib-devel pcre pcre-devel openssl openssl-devel ./configure --with-http_stub_status_module --prefix=/usr/local/nginx -–with-http_ssl_module make make install 安装完成。 查看管理nginx的帮助。 /usr/local/nginx/sbin/nginx -h 后期可以写shell脚本将nginx加入到service中。
前面已经讲过,在php5.3.3以后php-fpm已经加入到php内核中。老版本中php-fpm是以patch的方式安装。我们安装php-5.6.3最新版。
wget http://cn2.php.net/get/php-5.6.3.tar.gz/from/this/mirror tar zxvf php-5.6.3.tar.gz cd php-5.6.3 ./configure --enable-fpm --with-mysql make make install /usr/local/sbin/php-fpm -h cp php.ini-development /usr/local/php/php.ini cp /usr/local/etc/php-fpm.conf.default /usr/local/etc/php-fpm.conf cp sapi/fpm/php-fpm /usr/local/bin 至此,已经安装上了php,php-fpm。
如果文件不存在,则阻止 Nginx 将请求发送到后端的 PHP-FPM 模块, 以避免遭受恶意脚本注入的攻击。 将 php.ini 文件中的配置项 cgi.fix_pathinfo 设置为 0 vim /usr/local/php/php.ini cgi.fix_pathinfo=0 启动php-fpm: /usr/local/bin/php-fpm 查看php-fpm支持的启动选项 /usr/local/bin/php-fpm -h 让nginx支持php: 修改nginx.conf, vim /usr/local/nginx/conf/nginx.conf location / { root html; index index.php index.html index.htm; } location ~* \.php$ { fastcgi_index index.php; fastcgi_pass 127.0.0.1:9000; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SCRIPT_NAME $fastcgi_script_name; } 如果修改的不对,会报404错误。 重启nginx: sudo /usr/local/nginx/sbin/nginx -s stop
sudo /usr/local/nginx/sbin/nginx
可能遇到的问题
可能缺少支持的库,ncurse,libxml2或者其他的什么,使用yum安装一下。
nginx传递给php-fpm的参数不对。 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
将这两个参数配置好,注意下root html;就ok了。 lnmp环境的操作部分: 安装php+nginx:http://www.cnblogs.com/simpman/p/4151662.html 安装mysql:http://www.cnblogs.com/simpman/p/4192942.html 安装php:http://www.cnblogs.com/simpman/p/4196051.html lnmp环境的理论部分: FastCgi与PHP-fpm关系[转] 读完本文瞬间明朗了很多 : http://www.cnblogs.com/simpman/p/4151639.html 2、http://segmentfault.com/q/1010000000256516 epoll和select区别:http://www.cnblogs.com/simpman/p/4150005.html |
2022-11-06
2022-08-17
2022-08-15
2022-08-17
2022-07-18
请发表评论