Ubuntu之源码编译安装nginx

参考:Ubuntu之源码编译安装nginx_ubuntu编译安装nginx-CSDN博客

1.下载源码后进入源码目录,如下:

cd /home/jq/wf/nginx-1.26.1

2.下载相应依赖库:

apt-get install libpcre3-dev
apt-get install openssl libssl-dev
apt-get install zlib1g-dev

3.运行配置命令:(--prefix指定make install 后的目录,也就是nginx生成目录)

 ./configure    --with-http_ssl_module    --with-debug  --prefix=/home/jq/wf/nginx-1.26.1/bin

打印如下:

...
checking for OpenSSL library ... found
checking for zlib library ... found
creating objs/Makefile

Configuration summary
  + using system PCRE2 library
  + using system OpenSSL library
  + using system zlib library

  nginx path prefix: "/"
  nginx binary file: "//sbin/nginx"
  nginx modules path: "//modules"
  nginx configuration prefix: "//conf"
  nginx configuration file: "//conf/nginx.conf"
  nginx pid file: "//logs/nginx.pid"
  nginx error log file: "//logs/error.log"
  nginx http access log file: "//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"
 

4.运行make命令: make

打印如下:

...

objs/src/http/modules/ngx_http_upstream_zone_module.o \
objs/ngx_modules.o \
-ldl -lpthread -lcrypt -lpcre2-8 -lssl -lcrypto -ldl -lpthread -lz \
-Wl,-E
sed -e "s|%%PREFIX%%|/home/jq/wf/nginx-1.26.1/bin|" \
    -e "s|%%PID_PATH%%|/home/jq/wf/nginx-1.26.1/bin/logs/nginx.pid|" \
    -e "s|%%CONF_PATH%%|/home/jq/wf/nginx-1.26.1/bin/conf/nginx.conf|" \
    -e "s|%%ERROR_LOG_PATH%%|/home/jq/wf/nginx-1.26.1/bin/logs/error.log|" \
    < man/nginx.8 > objs/nginx.8
make[1]: Leaving directory '/home/jq/wf/nginx-1.26.1'
 

sed后面的路径那里就是编译出来的目录

5.运行make install 安装命令: make install

到/home/jq/wf/nginx-1.26.1目录下,发现生成了bin文件夹,再进入bin文件夹看到如下:

进入sbin目录,就是生成的nginx文件

输入: ./nginx,运行nginx后,输入ps aux | grep 'nginx',可以看到已经有nginx进程

在浏览器中输入http://127.0.0.1/

6.如果有自定义的handler和自定义的filter,则需要在源码中找个地方放置handler和filter模块,比如在源码的根目录下的objs下,创建一个目录,用于放置这2个模块代码

additon_filter目录下是这样:

config里面的配置文件内容:

ngx_addon_name=ngx_http_encrypt_filter_module
HTTP_AUX_FILTER_MODULES="$HTTP_AUX_FILTER_MODULES ngx_http_encrypt_filter_module"
NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_encrypt_filter_module.c"

addition_module下的目录是这样:

config里面的内容:

ngx_addon_name=ngx_http_encrypt_module
HTTP_MODULES="$HTTP_MODULES ngx_http_encrypt_module"
NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_encrypt_module.c"

然后再在编译时的./configure命令中添加项  --add-module,如下:

 ./configure    --with-http_ssl_module    --with-debug --prefix=/home/jq/wf/nginx-1.26.1/bin   \
   --add-module="objs/addtion_module/addition_filter  objs/addtion_module/addition_module"

就可以运行以上配置命令了。

7.如果还有自己定义的.h和.c文件,如需要用到cjson库的cJson.h和cJson.c,还有自定义的.h和.c文件,如test.h和test.c,需要将cJson.h和cJson.c放到源码的core目录下,如果test.h/.c里面没有用到nginx其他模块的api,也可以放到core目录下,如果用到了其他模块,比如nginx http的api,比如我的就用到了#include <ngx_http.h>,那么就将test.h/.c放到http目录下,然后修改源码的auto目录的sources,将cjson.h 文件加到CORE_DEPS项,将cjson.c文件添加到CORE_SRCS项;修改auto/modules文件将test.h添加到http的ngx_module_deps项, test.c添加到ngx_module_srcs项,即ngx_module_type=HTTP下面的部分里面添加。如下的modules文件位置:

修改完后,就可以运行./confiure命令和make,make install命令了。

要在Ubuntu上进行源码编译安装Nginx,你可以按照以下步骤进行操作: 1. 首先,确保你的系统已经更新并安装了必要的依赖项。你可以使用以下命令来更新系统并安装构建所需的工具和库: \[2\] ``` sudo apt-get update sudo apt-get install build-essential sudo apt-get install libtool sudo apt-get install libpcre3 libpcre3-dev sudo apt-get install zlib1g-dev sudo apt-get install libssl-dev ``` 2. 下载Nginx的压缩,并解压缩: \[2\] ``` # 假设你已经下载了Nginx的压缩,并将其放在当前目录下 tar -zxvf nginx-x.x.x.tar.gz cd nginx-x.x.x ``` 3. 执行configure命令来配置编译选项和安装路径: \[1\] ``` ./configure --prefix=/usr/local/nginx \ --user=nginx --group=nginx \ --with-http_gzip_static_module \ --with-http_flv_module \ --with-http_ssl_module \ --with-http_realip_module \ --with-http_v2_module \ --with-http_sub_module \ --with-http_mp4_module \ --with-http_stub_status_module \ --with-http_gzip_static_module \ --with-pcre --with-stream \ --with-stream_ssl_module \ --with-stream_realip_module ``` 这个命令将根据你的需求配置Nginx,并指定安装路径为`/usr/local/nginx`。 4. 执行make命令来编译Nginx: \[1\] ``` make ``` 5. 执行make install命令来安装Nginx: \[1\] ``` make install ``` 这将把编译好的Nginx安装到指定的安装路径。 完成以上步骤后,你就成功地在Ubuntu上通过源码编译安装Nginx。你可以根据需要进行进一步的配置和使用。 #### 引用[.reference_title] - *1* *2* [【UbuntuUbuntu编译安装Nginx](https://blog.csdn.net/weixin_43712023/article/details/123829187)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值