0.说明


Nginx作为一款优秀的Web Server软件同时也是一款优秀的负载均衡或前端反向代理、缓存服务软件,很有必要搭建实验环境来对其进行学习。



1.实验环境


本次实验的测试环境使用的宿主机操作系统为Windows 7,在Vmware虚拟机安装CentOS 6.5,说明如下:

  • 宿主机操作系统Windows 7

  • 虚拟机安装的操作系统CentOS 6.5

  • 虚拟机操作系统上网方式NAT

而当使用NAT的方式进行上网时虚拟机、宿主机之间的网络连接关系可如下所示:

wKioL1iw1zWg5yJtAABgyKpZGYA370.png

关于为什么网络拓扑结构是这样的,这里不展开说明,可以参考博主的另一篇博文《在实践中深入理解VMware虚拟机的上网模式NAT模式》,这篇文章深入地分析了VMware虚拟机使用NAT模式上网时的网络结构细节,相信看完这篇文章后,这里搭建Nginx的实验环境也就很容易理解了。

另外需要注意的是这里安装的CentOS 6.5操作系统使用了最小化安装,并且只定制安装了一些常用的开发工具如gcc等,其版本信息如下:

[root@leaf~]#cat/etc/redhat-release
CentOSrelease6.5(Final)
[root@leaf~]#uname-r
2.6.32-431.el6.x86_64
[root@leaf~]#uname-m
x86_64



2.编译安装Nginx


(1)安装Nginx依赖函数库pcre

pcre为“perl兼容正则表达式”perl compatible regular expresssions,安装其是为了使Nginx支持具备URI重写功能的rewrite模块,如果不安装Nginx将无法使用rewrite模块功能,但是该功能却十分有用和常用。

检查系统中是否有安装:

[root@leaf~]#rpm-qpcrepcre-devel

上面可以看到并没有安装使用yum方式安装如下:

[root@leaf~]#yuminstallpcrepcre-devel-y
......

Installed:
pcre-devel.x86_640:7.8-7.el6

Updated:
pcre.x86_640:7.8-7.el6

Complete!

安装完后检查一下是否已经成功安装:

[root@leaf~]#rpm-qpcrepcre-devel
pcre-7.8-7.el6.x86_64
pcre-devel-7.8-7.el6.x86_64

可以看到已经安装成功。


(2)安装Nginx依赖函数库openssl-devel

Nginx在使用HTTPS服务的时候要用到此模块,如果不安装openssl相关包,安装过程中是会报错的。

检查系统是否有安装openssl相关包:

[root@leaf~]#rpm-qopensslopenssl-devel
openssl-1.0.1e-15.el6.x86_64
packageopenssl-develisnotinstalled

可以看到只是安装了opensslopenssl-devel还没有安装使用yum安装如下:

[root@leaf~]#yuminstall-yopenssl-devel
......

Complete!

再次检查:

[root@leaf~]#rpm-qopensslopenssl-devel
openssl-1.0.1e-48.el6_8.4.x86_64
openssl-devel-1.0.1e-48.el6_8.4.x86_64

可以看到都已经成功安装上。


(3)下载Nginx软件包

这里使用的Nginx版本为1.6.3,下载方式如下:

[root@leaf~]#pwd
/root
[root@leaf~]#mkdirtools
[root@leaf~]#cdtools/
[root@leaftools]#wgethttp://Nginx.org/download/Nginx-1.6.3.tar.gz
......
100%[======================================>]805,253220K/sin3.6s

2017-02-2412:10:26(220KB/s)-aNginx-1.6.3.tar.gzasaved[805253/805253]

查看下载的Nginx软件包:

[root@leaftools]#ll
total788
-rw-r--r--.1rootroot805253Apr82015Nginx-1.6.3.tar.gz

当然上面的方式是使用wget方式直接下载,前提是已经知道了Nginx的下载地址,也可以到官网下载,然后再上传到我们的CentOS操作系统上。


(4)开始安装Nginx

可以先在根目录下创建一个/application文件夹用来存放我们安装的软件:

[root@leaf~]#mkdir/application
[root@leaf~]#ls-d/application/
/application/
  • 解压缩

将我们刚刚下载的Nginx软件包解压缩:

[root@leaftools]#tar-zxvfNginx-1.6.3.tar.gz
......
[root@leaftools]#ls
Nginx-1.6.3Nginx-1.6.3.tar.gz
  • 使用./configure指定编译参数

先创建一个Nginx用户用来安装完成后运行Nginx使用:

[root@leaftools]#useraddNginx-s/sbin/nologin-M
[root@leaftools]#tail-1/etc/passwd
Nginx:x:500:500::/home/Nginx:/sbin/nologin

#-s参数后的/sbin/nologin指定不允许Nginx进行登陆
#-M参数则是在创建该用户时不创建用户家目录

使用configure命令指定编译参数:

[root@leafNginx-1.6.3]#./configure--user=Nginx--group=Nginx--prefix=/application/Nginx-1.6.3/--with-http_stub_status_module--with-http_ssl_module

对于配置时使用的参数可以通过./configure --help来进行查询,上面使用的参数解析如下:

--prefix=PATH#指定安装路径
--user=USER#设置用户进程权限
--group=GROUP#设置用户组进程权限
--with-http_stub_status_module#激活状态信息
--with-http_ssl_module#激活ssl功能
  • 使用make进行编译

[root@leafNginx-1.6.3]#make
......

检查编译是否成功:

[root@leafNginx-1.6.3]#echo$?
0

返回0即说明编译成功。

  • 使用make install安装

[root@leafNginx-1.6.3]#makeinstall
......

检查安装是否成功:

[root@leafNginx-1.6.3]#echo$?
0

返回0即说明安装成功。

  • 建立安装目录的软链接

[root@leafNginx-1.6.3]#ln-s/application/Nginx-1.6.3//application/Nginx
[root@leafNginx-1.6.3]#ls-l/application/
total4
lrwxrwxrwx.1rootroot25Feb2412:32Nginx->/application/Nginx-1.6.3/
drwxr-xr-x.6rootroot4096Feb2412:28Nginx-1.6.3


到此Nginx的编译安装工作已经全部完成了,下面就需要对安装结果进行验证了即验证Nginx是否可以正常提供服务。



3.测试Nginx服务


(1)启动Nginx服务前检查配置文件语法

如下:

[root@leaf~]#/application/Nginx/sbin/Nginx-t
Nginx:theconfigurationfile/application/Nginx-1.6.3//conf/Nginx.confSyntaxisok
Nginx:configurationfile/application/Nginx-1.6.3//conf/Nginx.conftestissuccessful


(2)启动Nginx服务

[root@leaf~]#/application/Nginx/sbin/Nginx

如果在启动Nginx服务时出现了问题可以查看Nginx的日志/application/Nginx/logs/error.log,再根据日志提供的信息来进行解决。


(3)验证Nginx服务是否正常

  • 查看已开启的端口信息

[root@leaf~]#netstat-lnp|grep80
tcp000.0.0.0:800.0.0.0:*LISTEN6772/Nginx
unix2[ACC]STREAMLISTENING91801/init@/com/ubuntu/upstart

可以看到Nginx已经在侦听80端口。

  • 查看Nginx进程

[root@leaf~]#psaux|grepNginx
root67720.00.1450281140?Ss12:340:00Nginx:masterprocess/application/Nginx/sbin/Nginx
Nginx67730.00.1454601716?S12:340:00Nginx:workerprocess
root67770.00.0103256832pts/1S+12:360:00grepNginx
  • 在宿主机上使用浏览器进行测试

在我们宿主机的浏览器上输入http://10.0.0.101/,查看测试结果

wKioL1iw4rCToOMpAAAsJBgtzOA400.png

可以正常访问,当然前提是CentOS上的防火墙功能已经关闭。

  • 使用wget命令和curl命令测试

wget命令:

[root@leaftools]#wget127.0.0.1
--2017-02-2412:41:05--http://127.0.0.1/
Connectingto127.0.0.1:80...connected.
HTTPrequestsent,awaitingresponse...200OK
Length:612[text/html]
Savingto:aindex.htmla

100%[======================================>]612--.-K/sin0s

2017-02-2412:41:05(44.1MB/s)-aindex.htmlasaved[612/612]

currl命令:

[root@leaftools]#curl127.0.0.1
<!DOCTYPEhtml>
<html>
<head>
<title>WelcometoNginx!</title>
<style>
body{
width:35em;
margin:0auto;
font-family:Tahoma,Verdana,Arial,sans-serif;
}
</style>
</head>
<body>
<h1>WelcometoNginx!</h1>
<p>Ifyouseethispage,theNginxwebserverissuccessfullyinstalledand
working.Furtherconfigurationisrequired.</p>

<p>Foronlinedocumentationandsupportpleasereferto
<ahref="http://Nginx.org/">Nginx.org</a>.<br/>
Commercialsupportisavailableat
<ahref="http://Nginx.com/">Nginx.com</a>.</p>

<p><em>ThankyouforusingNginx.</em></p>
</body>
</html>

从上面的结果可以说明Nginx已经正常部署并运行。



4.进一步测试修改Nginx显示的页面


通过修改/application/Nginx/html下的index.html文件,我们就可以改变Nginx主页显示的内容,操作如下:

[root@leaftools]#cd/application/Nginx/html/
[root@leafhtml]#ls
50x.htmlindex.html
[root@leafhtml]#mvindex.htmlindex.html.source
[root@leafhtml]#echo"<h1>Hello,I'mxpleaf.</h1>">index.html
[root@leafhtml]#ls
50x.htmlindex.htmlindex.html.source
[root@leafhtml]#catindex.html
<h1>Hello,I'mxpleaf.</h1>

这时在宿主机操作系统上访问http://10.0.0.101/

wKioL1iw5QmR_kwsAAAHDYS1ylo571.png

可以看到已经显示我们编辑的页面了。



5.在实际场景中的应用


不管是用于学习还是在生产环境中使用,Nginx都十分重要,而好的开始是成功的一半,所以第一步当然是要把Nginx服务搭建好。



6.参考资料


《跟老男孩学Linux运维Web集群实战》

http://Nginx.org

在CentOS上编译安装Nginx+实验环境搭建+测试的更多相关文章

  1. openstack学习笔记七 swift安装

    指定映射位置创建ring文件启动服务代维服务proxyserver

  2. openstack安装liberty--安装对象存储服务swift

    通常使用CACHE技術提高性能Accountservers賬戶服務,管理對象存儲中的賬戶定義。Containerservers容器服務,在對象存儲中管理容器或文件夾映……Objectservers對象服務,在存儲節點管理實際的對象,比如文件。Wsgimiddleware處理認證,通常使用OPENSTACKIdentityswiftclient為用戶提供命令行接口使用RESTAPIswift-init初始化和構建RING文件腳本swift-recon一個命令行工具,用於檢索群集的各種度量和測試信息。

  3. 将我的Android应用程序签名为系统应用程序

    将我的Android应用程序签名为系统应用程序在我的公司,我们希望在现场完全控制电池消耗,仅使用2g和gps可以快速耗尽电池.我们的决定是我们需要拥有移动电话的root权限,这样当手机闲置时,我们就会关掉那些不必要的电池消耗.而且我们也不允许用户将其卸载并清除数据.我的问题是:>我从哪里获得这些签名密钥?>它是否会像root访问权限一样如果我成功地成功了签字?

  4. 获得Android App的“root”权限

    我想知道如何从Android应用程序获得root权限?我尝试了下面的代码行来列出文件但没有发生任何事情我试图在我的清单文件中给予TEST_FACTORY权限,但是我收到错误“允许系统应用”如何制作我的应用系统应用?

  5. CentOS 8.2服务器上安装最新版Node.js的方法

    这篇文章主要介绍了CentOS 8.2服务器上安装最新版Node.js的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  6. Vue项目打包并部署nginx服务器的详细步骤

    vue项目开发好之后需要部署到服务器上进行外网访问,下面这篇文章主要给大家介绍了关于Vue项目打包并部署nginx服务器的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

  7. ubuntu中利用nginx部署vue项目的完整步骤

    Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行,下面这篇文章主要给大家介绍了关于ubuntu中利用nginx部署vue项目的相关资料,需要的朋友可以参考下

  8. centos+php+coreseek+sphinx+mysql之一coreseek安装篇

    这篇文章主要介绍了centos+php+coreseek+sphinx+mysql之一coreseek安装篇的相关资料,非常不错具有参考借鉴价值,需要的朋友可以参考下

  9. Centos7 中 Node.js安装简单方法

    这篇文章主要介绍了Centos7 中 Node.js安装简单方法,非常不错具有一定的参考借鉴价值,需要的朋友可以参考下

  10. 使用Node.js配合Nginx实现高负载网络

    这篇文章主要介绍了使用Node.js配合Nginx实现高负载网络,Node的异步加上Nginx的反向代理在性能上实在是给力!需要的朋友可以参考下

随机推荐

  1. 在airgapped(离线)CentOS 6系统上安装yum软件包

    我有一个CentOS6系统,出于安全考虑,它已经被空气泄漏.它可能从未连接到互联网,如果有,它很长时间没有更新.我想将所有.rpm软件包放在一个驱动器上,这样它们就可以脱机安装而无需查询互联网.但是,我在测试VM上遇到的问题是,即使指定了本地路径,yum仍然会挂起并尝试从在线存储库进行更新.另外,有没有办法使用yum-utils/yumdownloader轻松获取该包的所有依赖项和所有依赖项?目前

  2. centos – 命名在日志旋转后停止记录到rsyslog

    CentOS6.2,绑定9.7.3,rsyslog4.6.2我最近设置了一个服务器,我注意到在日志轮换后,named已停止记录到/var/log/messages.我认为这很奇怪,因为所有日志记录都是通过rsyslog进行的,并且named不会直接写入日志文件.这更奇怪,因为我在更新区域文件后命名了HUPed,但它仍然没有记录.在我停止并重新启动命名后,记录恢复.这里发生了什么?

  3. centos – 显示错误的磁盘大小

    对于其中一个磁盘,Df-h在我的服务器上显示错误的空白区域:Cpanel表明它只有34GB免费,但还有更多.几分钟前,我删除了超过80GB的日志文件.所以,我确信它完全错了.fdisk-l/dev/sda2也显示错误:如果没有格式化,我该怎么做才能解决这个问题?并且打开文件描述符就是它需要使用才能做到这一点.所以…使用“lsof”并查找已删除的文件.重新启动写入日志文件的服务,你很可能会看到空间可用.

  4. 如何在centos 6.9上安装docker-ce 17?

    我目前正在尝试在centOS6.9服务器上安装docker-ce17,但是,当运行yuminstalldocker-ce时,我收到以下错误:如果我用跳过的标志运行它我仍然得到相同的消息,有没有人知道这方面的方法?

  5. centos – 闲置工作站的异常负载平均值

    我有一个新的工作站,具有不寻常的高负载平均值.机器规格是:>至强cpu>256GB的RAM>4x512GBSSD连接到LSI2108RAID控制器我从livecd安装了CentOS6.564位,配置了分区,网络,用户/组,并安装了一些软件,如开发工具和MATLAB.在启动几分钟后,工作站负载平均值的值介于0.5到0.9之间.但它没有做任何事情.因此我无法理解为什么负载平均值如此之高.你能帮我诊断一下这个问题吗?

  6. centos – Cryptsetup luks – 检查内核是否支持aes-xts-plain64密码

    我在CentOS5上使用cryptsetupluks加密加密了一堆硬盘.一切都很好,直到我将系统升级到CentOS6.现在我再也无法安装磁盘了.使用我的关键短语装载:我收到此错误:在/var/log/messages中:有关如何装载的任何想法?找到解决方案问题是驱动器使用大约512个字符长的交互式关键短语加密.出于某种原因,CentOS6中的新内核模块在由旧版本创建时无法正确读取512个字符的加密密钥.似乎只会影响内核或cryptsetup的不同版本,因为在同一系统上创建和打开时,512字符的密钥将起作用

  7. centos – 大量ssh登录尝试

    22个我今天登录CentOS盒找到以下内容这是过去3天内的11次登录尝试.WTF?请注意,这是我从我的提供商处获得的全新IP,该盒子是全新的.我还没有发布任何关于此框的内容.为什么我会进行如此大量的登录尝试?是某种IP/端口扫描?基本上有4名匪徒,其中2名来自中国,1名来自香港,1名来自Verizon.这只发生在SSH上.HTTP上没有问题.我应该将罪魁祸首子网路由吗?你们有什么建议?

  8. centos – kswap使用100%的CPU,即使有100GB的RAM也可用

    >Linux内核是否应该足够智能,只需从内存中清除旧缓存页而不是启动kswap?

  9. centos – Azure将VM从A2 / 3调整为DS2 v2

    我正在尝试调整前一段时间创建的几个AzureVM,从基本的A3和标准A3到标准的DS2v2.我似乎没有能力调整到这个大小的VM.必须从头开始重建服务器会有点痛苦.如果它有所不同我在VM中运行CentOS,每个都有一个带有应用程序和操作系统的磁盘.任何人都可以告诉我是否可以在不删除磁盘的情况下删除VM,创建新VM然后将磁盘附加到新VM?

  10. centos – 广泛使用RAM时服务器计算速度减慢

    我在非常具体的情况下遇到服务器速度下降的问题.事实是:>1)我使用计算应用WRF>2)我使用双XeonE5-2620v3和128GBRAM(NUMA架构–可能与问题有关!

返回
顶部