Linux (ubuntu) 下编译安装以及调试nginx

1、安装pcre

  • 下载解压pcre包(确保wget、cmake、以及g++、gcc已安装)
cd /opt
mkdir pcre
cd pcre
wget https://udomain.dl.sourceforge.net/project/pcre/pcre/8.45/pcre-8.45.tar.gz
tar -zxvf pcre-8.45.tar.gz
cd pcre-8.45

apt install bzip2 libbz2-dev zlib1g-dev -y

/usr/bin/cmake --no-warn-unused-cli -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE -DCMAKE_BUILD_TYPE:STRING=Debug -DCMAKE_C_COMPILER:FILEPATH=/usr/bin/gcc -DCMAKE_CXX_COMPILER:FILEPATH=/usr/bin/g++ -S/opt/pcre/pcre-8.45 -B/opt/pcre/pcre-8.45/build -G "Unix Makefiles"

/usr/bin/cmake --build /opt/pcre/pcre-8.45/build --config Debug --target install -j 58 --

2、安装openssl

apt-get install openssl libssl-dev -y

3、编译安装nginx

cd /opt
git clone https://github.com/nginx/nginx.git
cd nginx
./auto/configure --prefix=..  --with-http_ssl_module
make install
  • 注意如果想直接安装到系统目录,请在去除configure命令的 --prefix 参数配置,例如:
./auto/configure --with-http_ssl_module

4、调试Nginx

  • 编译安装好后,即可VSCode工具打开nginx源码目录
  • 编写launch.json如下:
{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "nginx",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/../sbin/nginx",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                },
                {
                    "description": "将反汇编风格设置为 Intel",
                    "text": "-gdb-set disassembly-flavor intel",
                    "ignoreFailures": true
                }
            ]
        }

    ]
}
  • 同时修改conf文件,添加如下参数(注意:配置文件路径在可执行程序的父目录的conf文件夹下):
daemon off;
master_process off;
worker_processes  1;
  • 即可断点调试nginx
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容