119 Linux C++ 通讯架构实战2 nginx安装和使用,重要配置文件说明

一 nginx 简介

nginx是一个web服务器,反向代理,负载均衡,邮件代理。

我们这里主要学 web 服务器 部分的功能。

由于nginx运行时需要的系统资源比较少,所以经常被称呼为 轻量级服务器。

nginx是一个服务器软件,是用C语言开发的。nginx是开源的。

nginx号称并发处理百万级别的TCP连接,非常稳定。热部署(运行的时候能升级),高度的模块化设计。自由许可证。

因此,开发者 可以 开发自己的模块来增强 nginx 功能。第三方业务模块可以用C++开发

nginx 在 linux 平台下,高并发使用的epoll 技术。

因此这门课程一定会学习 epoll 技术。

二 为什么选择 nginx

高性能,单机10万的并发,且能能够保持高效的服务。

epoll这种高并发技术的好处就是:高并发只是占用更多内存就能做到。

nginx中有内存池,进程池,线程池,事件驱动等技术。

学习研究大师级的人写的代码,是一个程序开发人员能够急速进步的最佳途径。

三 安装nginx,搭建web服务器

1.安装前提

nginx使用了epoll 技术,epoll 技术要求linux的版本在2.6以上。

a. ubuntu 怎么查看对应的linux版本呢

uname -a

当前的版本是 4.15.0-142-generic

b. nginx是由c语言开发的,因此我们需要在linux上编译,因此需要gcc编译器,还有可能遇到g++编译器

gcc一般是用来编译c程序的
g++一般用来编译c++程序的
sudo apt-get install build-essential    编译程序必须得一个软件包
sudo apt-get install gcc
sudo apt-get install g++
使用 gcc -v  和 g++ -v 看是否安装成功

c.需要pcre库,这是一个函数库。用来解析正则表达式

sudo apt-get install libpcre3-dev

d.需要zlib库,主要是用于压缩解压缩功能

sudo apt-get install libz-dev

e. openssl库,ssl功能相关的库,用于网站加密通讯的

sudo apt-get install libssl-dev

2.nginx源码下载以及目录结构简单认识

介绍

nginx 官网:http://www.nginx.org

mainline版本:有最新的功能,更新快,稳定性差

stable版本:稳定版本,被认为经过了长时间的测试,比较稳定,一般我们选择这个。

点击网站右边的download

legacy版本:以往的老版本

安装

可以通过命令安装。但是有很多第三方模块可能不包含。

可以通过编译 nginx源码的方式,好处是可以把第三方模块弄进来。主要学习这种。

下载源码

解压

下载下来后,肯定要放在linux中的某一个文件中,然后解压,解压命令如下:

tar -xzvf nginx-1.14.2.tar.gz 

目录分析

auto/  是一堆shell 脚本
	cc/ 检查编译器的脚本
	lib/ 检查依赖库的脚本
	os/ 检查操作系统类型的脚本
	type/ 检查平台类型的脚本

CHANGES 是一个说明文件,说明改动了一些啥
CHANGES.ru 俄语版的说明文件
conf/ 是一个目录,默认的配置文件

configure 编译nginx之前必须执行的脚本,在执行configure 的时候会用到 auto里面的shell 脚本。执行完毕后,会产生一些中间文件,后续会用到
contrib /这是一个目录,里面存储的是脚本和工具,典型的是vim高亮工具,我们可以使用contrib下的vim看相关的nginx的配置。会多一些高亮显示

html  /  缺省的index.html,欢迎界面和错误界面

man  / nginux- man命令帮助,nginux也是支持一堆命令的。

src / 是源代码目录 最最要的就是这个

	core:核心代码
	event:事件模块相关代码
	http: http(web服务器)模块相关代码
	mail:邮件模块相关代码
	os:操作系统相关代码
	stream:流处理相关代码



执行完了./configure后,会生成一个objs目录。

        objs目录下最重要的一个文件是ngx_moudles.c文件,这个.c文件内容决定了我们一会编译nginx的时候有哪些模块会被编译到 nginx中来。

执行完了./configure后,会生成一个makefile文件。

        在执行make命令时会用到

3.  nginx的编译和安装

编译第一步:用./configure来进行编译之前的配置工作。

可以先使用 ./configure --help 查看  这个./configure 后面可以加什么参数,以及参数的意义。 

--prefix=PATH 设置安装到哪里去
--prefix  指定最终安装到的目录:默认值 /usr/local/nginx

--sbin-path=PATH      指定可执行文件装在哪里          默认值是 sbin/nginx
 

也就是说:前面两个在不设置默认值的case下:最终的这个可执行文件安装的目录为:

/usr/local/nginx/sbin/nginx

--conf-path=PATH 用来指定配置文件目录,默认的是conf/nginx.conf

也就是说:安装完成后,完整文件目录应该在 /usr/local/nginx/conf/nginx.conf

总的来说后面所有的配置什么的,都是在 --prefix=PATH 之后

我们当前都使用默认的配置

a ) ./configure

执行完了./configure后,会生成一个objs目录。

        objs目录下最重要的一个文件是ngx_moudles.c文件,这个.c文件内容决定了我们一会编译nginx的时候有哪些模块会被编译到 nginx中来。

执行完了./configure后,会生成一个makefile文件。

        在执行make命令时会用到

b)用make 命令编译

        make执行完毕后,在objs目录下会重新生成一个 ngnix文件,这个就是可执行文件。

c)用make install 命令开始安装,

实际上就是将生成的上述这些文件  最终安装目录  /usr/local下。。我们在没有执行 make install之前 观察 /usr/local这个目录下,并没有/nginx目录。使用make install 后,在 /usr/local下面就能看到这个目录了。

我们进到nginx 目录下看:

就会看到,前面我们说的--sbin-path   --conf-path

4.重要配置文件记录1 

./configure 执行完毕后,会生成一个objs目录,该目录下有一个重要的ngx_moudles.c文件,这个.c文件内容决定了我们一会编译nginx的时候有哪些模块会被编译到 nginx中来。

/home/hunandede/nginx/nginx-1.14.2/objs/ngx_modules.c

5.重要配置文件记录2

在安装完成后,安装目录下有一个 nginx.conf 文件决定了 :worker 进程的数量,每一个worker进程可以支持的访问的最多人数等。

cd /usr/local/nginx/conf/nginx.conf

sudo vim nginx.conf

6.重要配置文件记录3

真正生成的 nginx的可执行文件路径为:

cd /usr/local/nginx/sbin

sudo ./nginx

7.重要配置文件记录4

/usr/local/nginx/html/index.html 就是当nginx启动后

通过在浏览器上输入IP访问 nginx的首界面,需要使用sudo才能改动

8 问题是:

通过make install 会把/home/hunandede/nginx/nginx-1.14.2/objs/nginx文件拷贝到/usr/local/nginx/sbin/nginx,那么我们启动的时候这两个都可以启动nginx吗?--实验测试是一样的,都可以启动

/usr/local/nginx/sbin/nginx

/home/hunandede/nginx/nginx-1.14.2/objs/nginx

第二个问题是启动后显示的是那个html呢?实验测试是/usr/local/nginx/html/index.html

/home/hunandede/nginx/nginx-1.14.2/html/index.html

/usr/local/nginx/html/index.html

四  nginx的启动和简单使用

我们先使用 ps -ef | grep nginx 查看当前linux中进程是否有nginx

ps是查看linux中进程的信息,

-e 显示所有进程。

-f 全格式。

| 将前面的信息做为一大块

grep 查找啥,过滤啥 ;  nginx 为要查找的关键字

然后启动 nginx

cd /usr/local/nginx/sbin

sudo ./nginx

验证是否启动

1.使用命令查看linux 下的进程是否有nginx

然后再使用 ps -ef | grep nginx 查看当前进程,并过滤关键字nginx

hunandede@hunandede-virtual-machine:~/nginx/nginx-1.14.2$ ps -ef | grep nginx
root      14539      1  0 16:09 ?        00:00:00 nginx: master process ./nginx
nobody    14540  14539  0 16:09 ?        00:00:00 nginx: worker process
hunande+  14542   4604  0 16:09 pts/4    00:00:00 grep --color=auto nginx
 

如上,前两个就是nginx 进程

最后一个不是的,最后一个是我们使用 ps -ef | grep nginx 命令的进程

2.打开浏览器查看

当前linux 的ip 是192.168.31.203  可以使用 ifconfig 查看

在windows 打开浏览器,输入 http://192.168.31.203,回车,看是否有界面。

windows这边相等于找 IP 为 192.168.31.203 的机器,端口为80的 机器。

而nginx 恰好监听的就是80端口,因此会给windows回复信息,那么在 windows的浏览器上就能看到了。

3 nginx的关闭

./nginx -s stop  暴力关闭,不管这时候有没有人在使用。

./nginx -s quit 正常关闭,如果这时候有user在使用,会等到这次连接结束后,关闭

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>