Ubuntu中Nginx的安装与配置

本贴最后更新于 2902 天前,其中的信息可能已经时过境迁

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 安装PHPMySQL

      $sudo apt-get install php5-cli php5-cgi mysql-server php5-mysql

3.4 测试NginxPHP的支持

    (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 ]

  }

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

  • NGINX

    NGINX 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 NGINX 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。

    311 引用 • 546 回帖
  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    923 引用 • 936 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • Kotlin

    Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,由 JetBrains 设计开发并开源。Kotlin 可以编译成 Java 字节码,也可以编译成 JavaScript,方便在没有 JVM 的设备上运行。在 Google I/O 2017 中,Google 宣布 Kotlin 成为 Android 官方开发语言。

    19 引用 • 33 回帖 • 51 关注
  • GAE

    Google App Engine(GAE)是 Google 管理的数据中心中用于 WEB 应用程序的开发和托管的平台。2008 年 4 月 发布第一个测试版本。目前支持 Python、Java 和 Go 开发部署。全球已有数十万的开发者在其上开发了众多的应用。

    14 引用 • 42 回帖 • 705 关注
  • MySQL

    MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是最流行的关系型数据库管理系统之一。

    675 引用 • 535 回帖
  • Vim

    Vim 是类 UNIX 系统文本编辑器 Vi 的加强版本,加入了更多特性来帮助编辑源代码。Vim 的部分增强功能包括文件比较(vimdiff)、语法高亮、全面的帮助系统、本地脚本(Vimscript)和便于选择的可视化模式。

    28 引用 • 66 回帖 • 7 关注
  • Rust

    Rust 是一门赋予每个人构建可靠且高效软件能力的语言。Rust 由 Mozilla 开发,最早发布于 2014 年 9 月。

    58 引用 • 22 回帖
  • 以太坊

    以太坊(Ethereum)并不是一个机构,而是一款能够在区块链上实现智能合约、开源的底层系统。以太坊是一个平台和一种编程语言 Solidity,使开发人员能够建立和发布下一代去中心化应用。 以太坊可以用来编程、分散、担保和交易任何事物:投票、域名、金融交易所、众筹、公司管理、合同和知识产权等等。

    34 引用 • 367 回帖 • 2 关注
  • Gitea

    Gitea 是一个开源社区驱动的轻量级代码托管解决方案,后端采用 Go 编写,采用 MIT 许可证。

    4 引用 • 16 回帖 • 1 关注
  • 博客

    记录并分享人生的经历。

    272 引用 • 2386 回帖
  • 负能量

    上帝为你关上了一扇门,然后就去睡觉了....努力不一定能成功,但不努力一定很轻松 (° ー °〃)

    88 引用 • 1234 回帖 • 442 关注
  • Shell

    Shell 脚本与 Windows/Dos 下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比 Windows 下的批处理更强大,比用其他编程程序编辑的程序效率更高,因为它使用了 Linux/Unix 下的命令。

    122 引用 • 73 回帖
  • Hadoop

    Hadoop 是由 Apache 基金会所开发的一个分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。

    85 引用 • 122 回帖 • 617 关注
  • AngularJS

    AngularJS 诞生于 2009 年,由 Misko Hevery 等人创建,后为 Google 所收购。是一款优秀的前端 JS 框架,已经被用于 Google 的多款产品当中。AngularJS 有着诸多特性,最为核心的是:MVC、模块化、自动化双向数据绑定、语义化标签、依赖注入等。2.0 版本后已经改名为 Angular。

    12 引用 • 50 回帖 • 442 关注
  • RabbitMQ

    RabbitMQ 是一个开源的 AMQP 实现,服务器端用 Erlang 语言编写,支持多种语言客户端,如:Python、Ruby、.NET、Java、C、PHP、ActionScript 等。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。

    49 引用 • 60 回帖 • 396 关注
  • SOHO

    为成为自由职业者在家办公而努力吧!

    7 引用 • 55 回帖 • 65 关注
  • 链滴

    链滴是一个记录生活的地方。

    记录生活,连接点滴

    143 引用 • 3752 回帖
  • GitLab

    GitLab 是利用 Ruby 一个开源的版本管理系统,实现一个自托管的 Git 项目仓库,可通过 Web 界面操作公开或私有项目。

    46 引用 • 72 回帖
  • 生活

    生活是指人类生存过程中的各项活动的总和,范畴较广,一般指为幸福的意义而存在。生活实际上是对人生的一种诠释。生活包括人类在社会中与自己息息相关的日常活动和心理影射。

    230 引用 • 1454 回帖
  • Flutter

    Flutter 是谷歌的移动 UI 框架,可以快速在 iOS 和 Android 上构建高质量的原生用户界面。 Flutter 可以与现有的代码一起工作,它正在被越来越多的开发者和组织使用,并且 Flutter 是完全免费、开源的。

    39 引用 • 92 回帖
  • RIP

    愿逝者安息!

    8 引用 • 92 回帖 • 322 关注
  • 国际化

    i18n(其来源是英文单词 internationalization 的首末字符 i 和 n,18 为中间的字符数)是“国际化”的简称。对程序来说,国际化是指在不修改代码的情况下,能根据不同语言及地区显示相应的界面。

    7 引用 • 26 回帖
  • 数据库

    据说 99% 的性能瓶颈都在数据库。

    333 引用 • 619 回帖
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3169 引用 • 8208 回帖
  • OkHttp

    OkHttp 是一款 HTTP & HTTP/2 客户端库,专为 Android 和 Java 应用打造。

    16 引用 • 6 回帖 • 48 关注
  • FreeMarker

    FreeMarker 是一款好用且功能强大的 Java 模版引擎。

    23 引用 • 20 回帖 • 429 关注
  • 互联网

    互联网(Internet),又称网际网络,或音译因特网、英特网。互联网始于 1969 年美国的阿帕网,是网络与网络之间所串连成的庞大网络,这些网络以一组通用的协议相连,形成逻辑上的单一巨大国际网络。

    96 引用 • 330 回帖
  • Solo

    Solo 是一款小而美的开源博客系统,专为程序员设计。Solo 有着非常活跃的社区,可将文章作为帖子推送到社区,来自社区的回帖将作为博客评论进行联动(具体细节请浏览 B3log 构思 - 分布式社区网络)。

    这是一种全新的网络社区体验,让热爱记录和分享的你不再感到孤单!

    1427 引用 • 10046 回帖 • 472 关注
  • 强迫症

    强迫症(OCD)属于焦虑障碍的一种类型,是一组以强迫思维和强迫行为为主要临床表现的神经精神疾病,其特点为有意识的强迫和反强迫并存,一些毫无意义、甚至违背自己意愿的想法或冲动反反复复侵入患者的日常生活。

    15 引用 • 161 回帖