您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Centos 安装 Nginx

今天我们的目标就是在 Centos 上搭建好 服务,方便后续开展各种测试和学习。这也是学习其他互联网组件的第一步。接下来,我将分步骤描述源码编译的过程,并做部分说明。本次实验环境是 CentOS 7.6 系统。

1. 官网下载最新源,并解压

目前官方最新版本(截止到 2019 年 12 月 12 日)为 1.17.6,我们直接去官网找到下载地址。不推荐直接使用 yum 安装,因为存在如下两个问题:

版本太旧,以 CentOS 为例,直接 yum 安装的版本是 1.12.2 版本,已经严重脱离了时代;

无法安装模块,安装目录等等,不方便后续的实验。

# 下载安装包$ wget http://.org/download/..tar.gz  
# 解压安装包$ tar -xzf ..tar.gz

2. 依赖库提前安装

是完全使用 C 语言开发的,所以必须要有 C 编译环境,往往 CentOS 7.6 的环境会预装 gcc 编译器,所以不用额外安装,如果没有使用 yum 直接安装即可。另外,我们使用 的压缩、正则表达式等,需要安装一些额外的依赖库,这是必须的,不然在编译阶段就会报错。如下 3 个是比较 中比较常用模块所依赖的库,请在执行 源码编译时提前安装好。

$ sudo yum install -y zlib zlib-devel
$ sudo yum install -y pcre pcre-devel
$ sudo yum install -y openssl openssl-devel

编译并安装

$ cd -1.17.6
$ ./conure                # 编译,检查依赖是否正确$ make && sudo make install  # 安装

上述编译和安装命令就如同在 360 软件中心,点击一键安装那样,直接使用认的配置(通常会将相关安装到 C 盘目录)。

但是这样往往不是我们需要的。特别是在 中,可以指定安装某些或者不安装某些模块,认安装的模块只适合简单的场景,往往在稍微复杂的情况下,就需要额外其他模块,或者第三方以及的模块。这高可扩展性正是 的一大亮点。想要查看 conure 的可选参数,使用 --help 选项即可:

$ ./conure --help

在所有可选参数中,最常用的有两个:

–prefix=PATH:配置 安装部署的根目录。类似于在 Windows 下安装软件,我们指定安装目录;

–with-xxx_module:–without-xxx_module 其中 xxx 表示 模块的,例如:

with-http_ssl_module -> SSL/TLS, 即 HTTPS

with-http_v2_module -> HTTP/2

without-http_fastcgi_module -> 不使用 fastcgi

为了后续测试完善,这里我们编译时候,尽可能多的引入一些模块:

$ ./conure  --prefix=/root/          \
--with-http_ssl_module                       \
--with-http_stub_status_module               \
--with-http_gzip_static_module               \
--with-stream                                \
--with-http_realip_module                    \
--with-http_flv_module                       \
--with-http_random_index_module              \
--with-mail                                  \
--with-pcre                                  \
$ make && sudo make install

这里 “\” 在 Linux 系统环境下表示两行之间没有换行,只是为了方便展示命令。一般而言, 的编译是比较顺利的,偶尔报错是大部分因为需要的模块依赖的一些库没有事先安装好。

对此,我们可以根据报错信息进行修正问题,保证编译顺利进行。在上一步骤成功后,可以看到 我们的 编译后的根目录了。简单说明根目录下的:

这里放的是 的相关,最重要的莫过于 .conf 了,这个是认的。

这里有 2 个简单的 ,分别为 50x.html 和 index.html,index.html 是 .conf
中认访问的,也就是我们后续启动 时,认访问 80 端口的。

暂时为空,启动 ,使用认的 .conf ,会在当前目录下 3 个,分别为:

access.log (记录所有请求)

error.log (记录所有信息)

.pid ( 启动的主进程 id)

最最重要的了,C 编译的工作,最后就是为了得到这样二进制。 的启动、重新加载、停止等都是靠该命令完成。我们一般会将该目录放到系统的 PATH 变量中,这样是为了方便直接使用 命令,系统能找到该二进制。不然的话,我们使用该命令就必须输入全路径,类似下面这样:

# 指定全路径$ /root//sbin/   
# 将/root//sbin/到了系统的PATH变量中,就可以直接使用$   
# 或者进入sbin目录$ cd /root//sbin
$ ./

3. 操作

在 命令行的使用中,有几个非常重要的参数,也是在操作 时经常用到的:

实例:

# 进入sbin目录$ cd /root//sbin        
# 启动$ ./ 
# 检查.conf$ ./ -tc /root//conf/.conf  
# 重新加载$ ./ -s reload 
# 停止$ ./ -s stop

启动 后,首先使用 ps -ef | grep 可以查看 进程是否已经启动,基于认的配置,我们将看到 2 个 的启动进程:master 进程和 worker 进程。

这是我们在前面讲到的 的 Master-Worker 机制,后面会进行详细讲解。另外,我们可以用命令 netstat -anltp | grep 80,看到 CentOS 上已经在监听 80 端口,而这个监听服务正是 。最后可以用浏览器或者 curl 命令直接在 CentOS 机器上检查 服务:

$ curl http://localhost

当出现 “Welcome to !" 这样的欢迎语句,表明我们的 已经正常运行了。

4. 安装操作视频演示

5. 小结

本节中,我们介绍了 在 CentOS 7.6 上的搭建过程。因为 CentOS 系统在企业的生产环境中用的最多,所以本章非常重要。除了介绍 命令行的部分操作外,我们还介绍了编译 的根目录。如果是相同的操作系统,我们甚至可以直接用编译好的根目录放上去直接使用,省去编译环节。


联系我
置顶