首先肯定是从nginx官方网站下载源代码到本地。
http://nginx.org/en/download.html
如上图所示,官网提供三种类型的源代码,分别是:
- Mainline version - 主线版本,这个是当前最新的版本,但是不一定是稳定的;
- Stable version - 稳定版本,这个是当前的稳定版本,一般下载这个版本就可以了;
-
Legacy versions - 历史版本,这里面都是以前的老版本,可以按照自己的实际需要挑选;
我选择当前的稳定版本:nginx-1.18.0
我都是直接用root用户进行操作,下载下来后解压它:
[root@vb-node02 ~]#tar -zxf nginx-1.18.0.tar.gz
安装nginx还需要依赖两个库,分别是:
- pcre
- zlib
如果需要开启https的支持,则还需要依赖openssl库。我们从官方文档中可以找到如下说明:
--with-pcre=path
sets the path to the sources of the PCRE library. The library distribution (version 4.4 — 8.43) needs to be downloaded from the PCRE site and extracted. The rest is done by nginx’s ./configure and make. The library is required for regular expressions support in the location directive and for the ngx_http_rewrite_module module.
--with-zlib=path
sets the path to the sources of the zlib library. The library distribution (version 1.1.3 — 1.2.11) needs to be downloaded from the zlib site and extracted. The rest is done by nginx’s ./configure and make. The library is required for the ngx_http_gzip_module module.
这里面可以看到所依赖的这两个库的版本区间,我们分别去这两个库的官网下载符合要求的版本代码,然后解压它们。关于openssl的安装说明中没有提到版本号,我直接下载了当前最新版本。
openssl-1.1.1k.tar.gz
pcre-8.43.tar.gz
zlib-1.2.11.tar.gz
解压这三个压缩包,然后进入nginx的源代码目录,执行configure脚本,并且指定这三个库的路径。https的支持不是默认开启的,所以我们除了指定openssl的路径之外,还需要手动开启它,开启它的方式是添加参数:
--with-http_ssl_module
那么完整的命令如下所示:
./configure --with-pcre=../pcre-8.43 --with-zlib=../zlib-1.2.11 --with-openssl=../openssl-1.1.1k --with-http_ssl_module
这里我指定三个库的路径用的是相对路径,你也可以使用绝对路径。
执行完毕,如果没有问题的话会在最后看到如下输出:
Configuration summary
+ using PCRE library: ../pcre-8.43
+ using OpenSSL library: ../openssl-1.1.1k
+ using zlib library: ../zlib-1.2.11
nginx path prefix: "/usr/local/nginx"
nginx binary file: "/usr/local/nginx/sbin/nginx"
nginx modules path: "/usr/local/nginx/modules"
nginx configuration prefix: "/usr/local/nginx/conf"
nginx configuration file: "/usr/local/nginx/conf/nginx.conf"
nginx pid file: "/usr/local/nginx/logs/nginx.pid"
nginx error log file: "/usr/local/nginx/logs/error.log"
nginx http access log file: "/usr/local/nginx/logs/access.log"
nginx http client request body temporary files: "client_body_temp"
nginx http proxy temporary files: "proxy_temp"
nginx http fastcgi temporary files: "fastcgi_temp"
nginx http uwsgi temporary files: "uwsgi_temp"
nginx http scgi temporary files: "scgi_temp"
这表示Makefile文件已经按照我们指定的参数生成完毕,接下来就可以编译安装了。
执行make命令安装nginx:
make && make install
如果没有报错的话就表示nginx安装成功。我们根据上面的信息进入到/usr/local/nginx
目录下,可以看到如下四个目录:
drwxr-xr-x. 2 root root 4096 3月 28 00:05 conf
drwxr-xr-x. 2 root root 40 3月 28 00:05 html
drwxr-xr-x. 2 root root 6 3月 28 00:05 logs
drwxr-xr-x. 2 root root 19 3月 28 00:05 sbin
然后我们执行
[root@vb-node02 nginx]# sbin/nginx
如果没有报错的话我们在浏览器中尝试访问一下。如果打开了如下页面的话表示nginx启动成功。
如果页面打不开的话检查一下防火墙是否没有放开80端口的访问限制。在centos7中可以用如下命令放开80端口:
[root@vb-node02 nginx]# firewall-cmd --add-port=80/tcp --permanent
[root@vb-node02 nginx]# firewall-cmd --reload
至此,从源代码安装nginx完毕。