创意电子

标题: 跟我学Nginx,利用源代码构建 Nginx [打印本页]

作者: 人人编程网    时间: 2021-9-28 22:30
标题: 跟我学Nginx,利用源代码构建 Nginx
前面几篇文章先容了在 Ubuntu 和 Windows 下面安装 nginx,均采用二进制的方式进行安装。本章节将先容采用编译源码来安装 nginx,采用源码安装可以根据自己的需要编译部门模块到 nginx 中。
下载源码包

进入 nginx 官网,下载 .tar.gz 源码包,下载地址:http://nginx.org/download/nginx-1.20.1.tar.gz
在 Ubuntu 中,我们可以利用 wget 命令进行下载,如下:
hxstrive@ubuntu:~/Desktop$ wget http://nginx.org/download/nginx-1.20.1.tar.gz--2021-09-27 12:38:47--  http://nginx.org/download/nginx-1.20.1.tar.gz正在剖析主机 nginx.org (nginx.org)... 3.125.197.172, 52.58.199.22, 2a05:d014:edb:5702::6, ...正在连接 nginx.org (nginx.org)|3.125.197.172|:80... 已连接。已发出 HTTP 请求,正在等待回应... 200 OK长度: 1061461 (1.0M) [application/octet-stream]正在保存至: “nginx-1.20.1.tar.gz”nginx-1.20.1.tar.gz           100%[===============================================>]   1.01M   459KB/s    用时 2.3s  2021-09-27 12:38:52 (459 KB/s) - 已保存 “nginx-1.20.1.tar.gz” [1061461/1061461])解压源码包

下载完源码包后,利用 tar 命令进行解压。如下:
hxstrive@ubuntu:~/Desktop$ lsnginx-1.20.1.tar.gz  tmp.html  tmp.txthxstrive@ubuntu:~/Desktop$ tar -xvzf nginx-1.20.1.tar.gz nginx-1.20.1/nginx-1.20.1/auto/...nginx-1.20.1/auto/cc/namenginx-1.20.1/auto/cc/owcnginx-1.20.1/auto/cc/sunchxstrive@ubuntu:~/Desktop$ lsnginx-1.20.1  nginx-1.20.1.tar.gz  tmp.html  tmp.txt预编译 nginx 源码

利用 cd 命令切换到解压后的 nginx 主目录中,执行 ./configure 命令。如下:
hxstrive@ubuntu:~/Desktop/nginx-1.20.1$ ./configure --prefix=/opt/demo/nginx --with-http_stub_status_module --with-http_ssl_module --without-http_rewrite_module --without-http_gzip_modulechecking for OS + Linux 5.11.0-34-generic x86_64checking for C compiler ... found + using GNU C compiler + gcc version: 9.3.0 (Ubuntu 9.3.0-17ubuntu1~20.04) checking for gcc -pipe switch ... found...creating objs/MakefileConfiguration summary  + PCRE library is not used  + using system OpenSSL library  + zlib library is not used  nginx path prefix: "/opt/demo/nginx"  nginx binary file: "/opt/demo/nginx/sbin/nginx"  nginx modules path: "/opt/demo/nginx/modules"  nginx configuration prefix: "/opt/demo/nginx/conf"  nginx configuration file: "/opt/demo/nginx/conf/nginx.conf"  nginx pid file: "/opt/demo/nginx/logs/nginx.pid"  nginx error log file: "/opt/demo/nginx/logs/error.log"  nginx http access log file: "/opt/demo/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"hxstrive@ubuntu:~/Desktop/nginx-1.20.1$ lsauto  CHANGES  CHANGES.ru  conf  configure  contrib  html  LICENSE  Makefile  man  objs  README  src在对 nginx 进行构建时,我们可以利用 configure 命令进行设置,它可以定义 nginx 的各个方面,包括允许 nginx 用于连接处置惩罚的方法。最后,configure 会创建一个 Makefile。
关于更多 configure 命令参数请参考“Configure 命令参数”。
make 编译 nginx 源码

make 编译是基于 configure 命令天生的 makefile 文件,进行源码编译。如下:
hxstrive@ubuntu:~/Desktop/nginx-1.20.1$ makemake -f objs/Makefilemake[1]: 进入目录“/home/hxstrive/Desktop/nginx-1.20.1”cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \...cc -o objs/nginx \objs/src/core/nginx.o \objs/src/core/ngx_log.o \...objs/ngx_modules.o \-ldl -lpthread -lcrypt -lssl -lcrypto -ldl -lpthread \-Wl,-Esed -e "s|%%PREFIX%%|/opt/demo/nginx|" \        -e "s|%%PID_PATH%%|/opt/demo/nginx/logs/nginx.pid|" \        -e "s|%%CONF_PATH%%|/opt/demo/nginx/conf/nginx.conf|" \        -e "s|%%ERROR_LOG_PATH%%|/opt/demo/nginx/logs/error.log|" \        < man/nginx.8 > objs/nginx.8make[1]: 离开目录“/home/hxstrive/Desktop/nginx-1.20.1”make install 安装 nginx

make 编译完毕之后,将相干的可运行文件安装至体系中。如下:
hxstrive@ubuntu:~/Desktop/nginx-1.20.1$ sudo make install[sudo] hxstrive 的暗码: make -f objs/Makefile installmake[1]: 进入目录“/home/hxstrive/Desktop/nginx-1.20.1”test -d &#39;/opt/demo/nginx&#39; || mkdir -p &#39;/opt/demo/nginx&#39;test -d &#39;/opt/demo/nginx/sbin&#39; \        || mkdir -p &#39;/opt/demo/nginx/sbin&#39;test ! -f &#39;/opt/demo/nginx/sbin/nginx&#39; \        || mv &#39;/opt/demo/nginx/sbin/nginx&#39; \                &#39;/opt/demo/nginx/sbin/nginx.old&#39;cp objs/nginx &#39;/opt/demo/nginx/sbin/nginx&#39;test -d &#39;/opt/demo/nginx/conf&#39; \        || mkdir -p &#39;/opt/demo/nginx/conf&#39;cp conf/koi-win &#39;/opt/demo/nginx/conf&#39;cp conf/koi-utf &#39;/opt/demo/nginx/conf&#39;cp conf/win-utf &#39;/opt/demo/nginx/conf&#39;test -f &#39;/opt/demo/nginx/conf/mime.types&#39; \        || cp conf/mime.types &#39;/opt/demo/nginx/conf&#39;cp conf/mime.types &#39;/opt/demo/nginx/conf/mime.types.default&#39;test -f &#39;/opt/demo/nginx/conf/fastcgi_params&#39; \        || cp conf/fastcgi_params &#39;/opt/demo/nginx/conf&#39;cp conf/fastcgi_params \        &#39;/opt/demo/nginx/conf/fastcgi_params.default&#39;test -f &#39;/opt/demo/nginx/conf/fastcgi.conf&#39; \        || cp conf/fastcgi.conf &#39;/opt/demo/nginx/conf&#39;cp conf/fastcgi.conf &#39;/opt/demo/nginx/conf/fastcgi.conf.default&#39;test -f &#39;/opt/demo/nginx/conf/uwsgi_params&#39; \        || cp conf/uwsgi_params &#39;/opt/demo/nginx/conf&#39;cp conf/uwsgi_params \        &#39;/opt/demo/nginx/conf/uwsgi_params.default&#39;test -f &#39;/opt/demo/nginx/conf/scgi_params&#39; \        || cp conf/scgi_params &#39;/opt/demo/nginx/conf&#39;cp conf/scgi_params \        &#39;/opt/demo/nginx/conf/scgi_params.default&#39;test -f &#39;/opt/demo/nginx/conf/nginx.conf&#39; \        || cp conf/nginx.conf &#39;/opt/demo/nginx/conf/nginx.conf&#39;cp conf/nginx.conf &#39;/opt/demo/nginx/conf/nginx.conf.default&#39;test -d &#39;/opt/demo/nginx/logs&#39; \        || mkdir -p &#39;/opt/demo/nginx/logs&#39;test -d &#39;/opt/demo/nginx/logs&#39; \        || mkdir -p &#39;/opt/demo/nginx/logs&#39;test -d &#39;/opt/demo/nginx/html&#39; \        || cp -R html &#39;/opt/demo/nginx&#39;test -d &#39;/opt/demo/nginx/logs&#39; \        || mkdir -p &#39;/opt/demo/nginx/logs&#39;make[1]: 离开目录“/home/hxstrive/Desktop/nginx-1.20.1”验证 nginx

hxstrive@ubuntu:~/Desktop/nginx-1.20.1/objs$ ./nginx -vnginx version: nginx/1.20.1xstrive@ubuntu:~/Desktop/nginx-1.20.1/objs$ sudo ./nginx利用浏览器访问 http://localhost 地址,如果出现下图内容,则阐明安装成功:

                               
登录/注册后可看大图





欢迎光临 创意电子 (https://wxcydz.cc/) Powered by Discuz! X3.4