地球最强WEB前端Nginx服务器之搭建基础静态WEB站点

1.1 Nginx概述及常用Web服务器介绍

1.1.1Nginx简介:(来自百度百科)

Nginx (engine x) 是一个高性能的HTTP反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。

其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。

Nginx是一款轻量级Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东新浪网易腾讯淘宝等。

提示:红帽官方的包并没有收录Nginx,可能是因为Nginx的许可证模式跟GNU的GPL不一致吧。

1.1.2目前常见的WEB服务器:

1)Nginx服务器:堪称目前地球最强的WEB前端服务器,有两个王牌功能,分别是:静态页面处理和反响代理(可以代理http、ftp、mail、php、tomcat等)。静态文件处理能力比Apache强得多、且配置简单得多。目前并发量大的网站基本上都是使用Nginx(静态并发能力达到100000/秒)。

提示:要深入了解Nginx的功能,可以访问tengine.taobao.org网站(有中文说明,适合我这样的英语不太好的中国人,阿里强大啊!)

2)Apache服务器:功能强大、插件丰富、跨平台(可以部署在Linux、Unix、Windiows上)的WEB服务器,市场占有率最高,但有被Nginx超越的趋势。特点:稳定、可靠,但并发能力不强。

3)Lighttpd服务器:Lighttpd是由一个德国人发起的开源项目,其根本目的是提供一个针对高性能网站,安全、快速、兼容性好并且灵活的WEB服务器,具有非常低的CPU和内存开销,性能很好,但社区不活跃。

4)IBMWebSphere:WebSphere ApplicationServer是一种功能完善、开放的 WEB应用程序服务器,是IBM电子商务计划的核心部分。基于java和Servlets的WEB应用程序运行环境,包含了WEB站点提供服务所需的一切,运行时可以协同并扩展Apache、Netscape、IIS和IBM的HTTPWeb服务器。

5)WindowsIIS(InternetInformation Server):原生于Windows的WEB服务器,只适合部署在Windows服务器上,全球前100的联网WEB服务器基本上不使用(可能除了微软吧)

6)Tomcat服务器:Tomcat是一个开源的Serlvet容器,它是Apache基金会Jakarta项目中的一个核心项目,有Apache、Sun和一些其它公司及个人共同开发而成。Tomcat既是一个Servlet容器,有具备传统的WEB服务器功能:可以解析静态html页面,但处理静态html能力远不能与Apache相比(Tomcat:1024并发,Apache:2000并发),实际应用中可以把Apache与Tomcat组合到一起,Apache处理静态html,Tomcat处理jsp和Servlet(即通常说的动静分离)。

提示:由于Tomcat并发能力比较低,所以只适合做小规模并发(应用中要提高Tomcat并发能力的话可以一台机器跑多个Tomcat,前提是服务器性能比较好),大规模并发需求的应用使用Weblogic或Jboss。

1.2 Nginx安装和启动

本文例子使用的系统和软件环境:

操作系统:CentOS6.5 64位版

IP地址:192.168.0.12/24

1.2.1以源代码方式编译安装

红帽官方没有收录Nginx,因此没有rpm包,需要的话可以自己打包成rpm包。

第1步:下载Nginx源代码包

到Nginx官网http://nginx.org/下载需要的源码包,本文使用的版本是nginx/1.8.0。

第2步:下载编译Nginx需要使用的其它软件源代码包:pcre与openssl

其实pcre与openssl包含在CentOS的官方Packages中,但在本文中我想使用不同版本的pcre与openssl,所以另外下载源代码包。

第3步:设定编译参数并编译安装

[[email protected] nginx]# ll

total 5712

-rwx------ 1 root root 832104 Jul 10  2015nginx-1.8.0.tar.gz

-rwx------ 1 root root 4015794 Jul  3  2012openssl-1.0.0a.tar.gz

-rwx------ 1 root root 992502 Jul  3  2012 pcre-8.12.tar.bz2

[[email protected] nginx]# tar xf nginx-1.8.0.tar.gz -C /opt/src      解压nginx源码包到/opt/src

[[email protected] nginx]# tar xf pcre-8.12.tar.bz2 -C /opt/src        解压pcre源码包到/opt/src

[[email protected] nginx]# tar xf openssl-1.0.0a.tar.gz -C/opt/src   解压openssl源码包到/opt/src

[[email protected] nginx]# cd /opt/src/nginx-1.8.0/

[[email protected] nginx-1.8.0]# ./configure \

> --prefix=/opt/nginx

> --with-http_stub_status_module \

> --with-pcre=/opt/src/pcre-8.12/ \

> --with-http_ssl_module \

> --with-openssl=/opt/src/openssl-1.0.0a/

[[email protected] nginx-1.8.0]# make && make install

参数解释:

--prefix=/opt/nginx:指定nginx安装路径。

--with-http_stub_status_module:开启Nginx的状态检测模块。

--with-pcre=/opt/src/pcre-8.12/:指定pcre源代码包的路径。使用CentOS官方自带的pcre需要先安装pcre-devel包(yum install -y pcre-devel),安装后不需要指定路径。

--with-http_ssl_module:启用ssl安全模块。

--with-openssl=/opt/src/openssl-1.0.0a:指定openssl源代码包的路径。使用CentOS官方自带的openssl需要先安装openssl-devel(yum install -y openssl-devel),安装后不需要指定路径。

安装完后:用ldd查看nginx动态链接库的关系

[[email protected] nginx-1.8.0]# ldd /opt/nginx/sbin/nginx

linux-vdso.so.1=>  (0x00007fffe8788000)

libpthread.so.0=> /lib64/libpthread.so.0 (0x000000387c400000)

libcrypt.so.1 =>/lib64/libcrypt.so.1 (0x0000003a44600000)

libdl.so.2 =>/lib64/libdl.so.2 (0x0000003a40a00000)

libz.so.1 =>/lib64/libz.so.1 (0x0000003a41e00000)

libc.so.6 =>/lib64/libc.so.6 (0x0000003a40e00000)

/lib64/ld-linux-x86-64.so.2 (0x0000003a40600000)

libfreebl3.so =>/lib64/libfreebl3.so (0x0000003a43a00000)

提示:通过以上参数编译出来的nginx并没有调用pcre和openssl的库,原因是这种方式把pcre和openssl都编译进nginx了,不需要使用安装在系统的pcre和openssl。

以下是使用系统系统安装的pcre-devel和openssl-devel编译的结果:

[[email protected]]# ./configure \

> --prefix=/opt/nginx-redhat \

> --with-http_stub_status_module \

> --with-http_ssl_module \

> --with-pcre       这项可以不加,nginx默认会使用pcre

[[email protected] nginx-1.8.0]# make && make install

[[email protected] nginx]# ldd /opt/nginx-redhat/sbin/nginx

linux-vdso.so.1=>  (0x00007fffda7ff000)

libpthread.so.0=> /lib64/libpthread.so.0 (0x000000387c400000)

libcrypt.so.1 =>/lib64/libcrypt.so.1 (0x0000003a44600000)

libpcre.so.0 =>/lib64/libpcre.so.0 (0x000000387d800000)         看到吧,有引用pcre库

libssl.so.10 =>/usr/lib64/libssl.so.10 (0x000000387c800000)    引用openssl的库

libcrypto.so.10=> /usr/lib64/libcrypto.so.10 (0x0000003a46e00000)

libdl.so.2 =>/lib64/libdl.so.2 (0x0000003a40a00000)

libz.so.1 =>/lib64/libz.so.1 (0x0000003a41e00000)

libc.so.6 =>/lib64/libc.so.6 (0x0000003a40e00000)

/lib64/ld-linux-x86-64.so.2 (0x0000003a40600000)

libfreebl3.so =>/lib64/libfreebl3.so (0x0000003a43a00000)

libgssapi_krb5.so.2=> /lib64/libgssapi_krb5.so.2 (0x000000387d000000)

libkrb5.so.3 =>/lib64/libkrb5.so.3 (0x000000387cc00000)

libcom_err.so.2=> /lib64/libcom_err.so.2 (0x000000387d400000)

libk5crypto.so.3=> /lib64/libk5crypto.so.3 (0x0000003a47600000)

libkrb5support.so.0=> /lib64/libkrb5support.so.0 (0x0000003a46600000)

libkeyutils.so.1=> /lib64/libkeyutils.so.1 (0x0000003a47a00000)

libresolv.so.2=> /lib64/libresolv.so.2 (0x0000003a43200000)

libselinux.so.1=> /lib64/libselinux.so.1 (0x0000003a42200000)

1.2.2启动和关闭Nginx

1)启动nginx

Nginx官方默认没有启动脚本,使用绝对路径运行命令启动

[[email protected] ~]# /opt/nginx/sbin/nginx      启动nginx,默认不会有提示

[[email protected] ~]# pstree -aunpl|grep nginx

|   |      `-vim,16705 nginx.conf

|           `-grep,16742 --color=auto nginx

`-nginx,16736                           nginx使用父子进程方式,默认是1个子进程,我修改为4个,根据服务器使用的CPU核心总数设置。

|-nginx,16737,nobody 默认启动nginx子进程的用户为nobody,可以修改。

|-nginx,16738,nobody

|-nginx,16739,nobody

`-nginx,16740,nobody

2)关闭nginx

使用kill或kill -15停止nginx,此为正常关闭nginx的方式

1.3 Nginx网站服务配置事例

nginx 成功启动后,默认可以访问了,在浏览器输入服务器IP地址192.168.0.12

到此,nginx的WEB站点已经搭建成功,只要把网站的数据拷贝到/opt/nginx/html/目录下,就可以了。简单吧!!!

1.3.1配置一个简单的静态WEB服务器

以下是一个最基础的静态WEB站点设置:

1#全局设置区开始

2  #user nobody;

3  worker_processes  4;

4

5  #error_log logs/error.log;

6  #error_log logs/error.log  notice;

7  error_log /var/log/nginx/error.log  info;定义错误日志目录,默认值为logs/ error.log  info;表示默认在nginx安装目录下的logs目录下面,日志记录方式为info

8

9  pid       /var/run/nginx.pid;  设置nginx进程文件所在位置(默认值为logs/nginx.pid;表示默认在nginx安装目录下的logs目录下面)

10

11  events {

12      worker_connections  15000;

13  }

14#全局设置区结束

15  http {

16      include       mime.types;

17      default_type  application/octet-stream;

18

19      log_format  main ‘$remote_addr - $remote_user [$time_local] "$request" ‘

20                        ‘$status$body_bytes_sent "$http_referer" ‘

21                       ‘"$http_user_agent" "$http_x_forwarded_for"‘;

22

23      #access_log  logs/access.log  main;

24

25      sendfile        on;开启快速文件传输

26      tcp_nopush     on;

27

28      #keepalive_timeout  0;

29      keepalive_timeout  30;保持连接30秒,根据客户端浏览器设定,通常IE是30秒,Firefox是15秒等,这个值是服务器和客户端程序共同决定的

30      gzip on;开启压缩

31

32      server {

33          listen       80;            监听端口

34          server_name  localhost;           主机头,即域名

35

36          charset utf8;设置虚拟主机使用的字符集(默认是koi8-r,修改为utf8比较通用)

37          access_log  /var/log/localhost-access.log  main;这里的设置会覆盖全局区第23行的设置

38

39          location / {   万能location,匹配任何路径

40              root   html;           定义站点根目录位置,如:/www/html,默认在nginx安装目录下的html目录

41              index  index.html index.htm;                       站点首页索引顺序

42          }

43

44          error_page  404             /404.html;定义404错误(找不到页面)响应文件名,放在站点根目录下

45         error_page403  /403.html;定义403错误(拒绝访问)响应文件名,放在站点根目录下

46          # redirect server error pages to thestatic page /50x.html

47          #

48          error_page   500 502 503 504  /50x.html;定义500以上错误响应文件名,放在站点跟目录下

49          location = /50x.html {

50              root   html;

51          }

52      }

53  }

原文地址:http://linuxprince.blog.51cto.com/373334/1982482

时间: 2024-08-28 21:05:46

地球最强WEB前端Nginx服务器之搭建基础静态WEB站点的相关文章

零基础学Web前端路线,送给所有想学web前端的人

前端工程师,也叫Web前端开发工程师.他是随着web发展,细分出来的行业.Web前端开发技术主要包括三个要素:HTML.CSS和JavaScript!它要求前端开发工程师不仅要掌握基本的Web前端开发技术,网站性能优化.SEO和服务器端的基础知识,而且要学会运用各种工具进行辅助开发以及理论层面的知识,包括代码的可维护性.组件的易用性.分层语义模板和浏览器分级支持等.随着近两三年来RIA(Rich Internet Applications的缩写,中文含义为:丰富的因特网应用程序)的流行和普及带来

小猿圈web前端开发讲师:零基础自学html5开发方法

web前端开发目前市场使用率随着需求逐年递增.越来越多的年轻人转行进入了web前端开发领取.html5强大的功能是有目共睹的,本属自身独特的优势让这一技术越来越受欢迎,相比于原生APP,html5已经逐渐在用户体验生无限接近,再加上低廉的开发成本和强大的适配功能,早已经可以俘获开发商和开发者的芳心,本文小猿圈web前端开发讲师介绍零基础如何自学html5开发? 小猿圈web前端开发讲师:零基础自学html5开发方法: 1.拒绝插件,遇到交互效果就选择扒插件,这是一种非常不可取的方法,在这种情况之

一般Web前端开发要学什么 如何掌握Web前端技术

一般Web前端开发要学什么?如何掌握Web前端技术?越来越多的行业巨头不断向Web前端示好,除苹果.微软.黑莓之外,谷歌的Youtube已部分使用Web前端.Chrome浏览器宣布全面支持Web前端;Facebook则不遗余力地为Web前端进行着病毒式传播.Web前端代表了移动互联网发展的趋势,总有一天它将成为主流技术.Web前端作为一个前端的编程语言,前景十分可观. 学习内容包括7大学习阶段: 第1阶段:前端页面重构(4周) 内容包含了:(PC端网站布局项目.HTML5+CSS3基础项目.We

好程序员web前端学习路线分享函数基础

好程序员web前端学习路线分享函数基础,在这之前先来讲一下函数是什么? 函数就一个代码块,可以是一个完全独立与其它内容没有关系的代码块,也可以是一个与外界环境紧密相关的代码块.函数是一个拥有输入和输出的独立代码块.函数是程序中最重要的组成部分. 函数,是一种封装(将一些语句,封装到函数里面).通过函数可以封装任意多条语句,而且可以在任何地方.任何时候调用执行. 在javascript里,函数即对象,程序可以随意操控它们.函数可以嵌套在其他函数中定义,这样它们就可以访问它们被定义时所处的作用域中的

Nginx服务器之基础学习

一.Nginx介绍 nginx:Nginx是一种软件服务器(轻量级),故它最主要的功能就是可以与服务器硬件结合,我们的应用程序可以放在nginx服务器上进行发布,已达到让网民浏览的效果.除此自外,Nginx是一种高性能的Http和反向代理服务器,同时也是一个代理邮件服务器.也就是说nginx可以发布网站,也可以实现负载均衡的功能,还可以作为邮件服务器实现收发邮件的功能.Nginx支持处理百万级的TCP连接,10以上的并发连接,具有跨平台性. 负载均衡(Load Balance):负载均衡建立在现

[转]关于Web前端开发,附:(百度web前端笔试面试题目)

关于Web前端及百度web前端笔试面试题目 随着各大互联网公司设立了Web前端开发工程师.设计工程师等职位,web前端越来越得到互联网企业的认可.而且其重视程度与地位也随着浏览器 端的富客户端的体现而日益提高. 眼前对HTML5的未来和走向,业内的预测是会和Flash.Silverlight等相结合,从而取代传统的客户端应用程序.而实现这个目标的客户端核 心工作是有Web前端工程师来完成的. 从另一个角度,对于web产品来说,交互和用户体验是产品的第一价值,这部分价值的体现就是在web前端.可以

nginx服务+LEMP搭建

Nginx nginx的配置运行需要pcre.zlib等软件包支持.所以先搭建好环境,确保nginx安装顺利.以红冒企业版RHEL6为例,搭建Nginx. yum -y install pcre-devel zlib-devel 创建运行用户.组 useradd -M -s /sbin/nologin nginx 解压文件,编译安装.指定安装用户.组.模块等 tar zxf nginx-1.0.8.tar.gz  cd nginx-1.0.8 ./configure --prefix=/usr/

《JavaScript & jQuery交互式Web前端开发》之JavaScript基础指令

       在本节中.你将開始学习阅读和编写JavaScript代码,还将学习怎样编写Web浏览器可以遵照运行的指令.在開始学习后面章节中的更复杂的概念之前.我们先学习语言的一些核心部分,然后看看怎样使用它们来编写一些很基础的(仅包括少量简单步骤)脚本程序.     在開始学习后面章节中的更复杂的概念之前,我们先学习语言的一些核心部分,然后看看怎样使用它们来编写一些很基础的(仅包括少量简单步骤)脚本程序. 语言: 语法结构 不论什么新的语言都一样,都要学习它们的新词汇(词汇表),以及将这些词汇

Web前端自学之路学习路线,web前端开发网站

前端开发作为一个由网页制作演变成的新兴岗位,其实在国内外来说,受到重视的时间并不长,在前几年间技术快速的发展和其应用普及率的迅猛增长,使得前端人才市场一片盛况空前的景象,由于其的易入门性和不错的发展前景,吸引了众多前端爱好者和转行人员的青睐. 都说前端技术属于易学难精,其易入门性也是相对Java,python那些语言来说的,并不是说任何人可随便信手拈来,而且今天的"前端"并不等同于"美工",前端开发工程师不仅要掌握基本的Web前端开发技术,网站性能优化.SEO和服务