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 系统在企业的生产环境中用的最多,所以本章非常重要。除了介绍 命令行的部分操作外,我们还介绍了编译 的根目录。如果是相同的操作系统,我们甚至可以直接用编译好的根目录放上去直接使用,省去编译环节。