当前位置: 首页 > news >正文

02 nginx 的环境搭建

前言

这一系列文章主要包含的内容主要是 各种常用软件的调试环境的搭建  

主要的目的是 搭建一个可打断点的一个调试环境 

c 系列 主要是基于 clion 调试, java 系列主要是基于 idea 调试, js 系列主要是基于 webstorm 调试 

需要有一定的 c, c++, java, js 相关基础 

基于的环境是一个 ubuntu16.04 desktop, 初始的时候 仅仅更新了源, 安装了 clion 
 

redis, nginx, mysql, vsftpd
javac, javap, jstack, jmap, jinfo
kafka,
spark, flink
coreutils, glibc, gdb 
hotspotVM, linux
... 等等其他

 

 

编译 nginx-1.22.1 

首先去官方网站下载最新源码, 然后拷贝自 目标虚拟机 

 

 

 

开始配置, 有条件的话可以安装一下 pcre, ssl, zip 相关库, 这里没有安装 

root@ubuntu:~/Desktop/nginx-1.22.1# ./configure --without-http_rewrite_module --without-http_gzip_module
checking for OS+ Linux 4.4.0-62-generic x86_64
checking for C compiler ... found+ using GNU C compiler+ gcc version: 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.12) 
checking for gcc -pipe switch ... found
checking for -Wl,-E switch ... found
checking for gcc builtin atomic operations ... found
checking for C99 variadic macros ... found
checking for gcc variadic macros ... found
checking for gcc builtin 64 bit byteswap ... found
checking for unistd.h ... found
checking for inttypes.h ... found
checking for limits.h ... found
checking for sys/filio.h ... not found
checking for sys/param.h ... found
checking for sys/mount.h ... found
checking for sys/statvfs.h ... found
checking for crypt.h ... found
checking for Linux specific features
checking for epoll ... found
checking for EPOLLRDHUP ... found
checking for EPOLLEXCLUSIVE ... not found
checking for eventfd() ... found
checking for O_PATH ... found
checking for sendfile() ... found
// 省略部分输出 
checking for sysconf(_SC_NPROCESSORS_ONLN) ... found
checking for sysconf(_SC_LEVEL1_DCACHE_LINESIZE) ... found
checking for openat(), fstatat() ... found
checking for getaddrinfo() ... found
creating objs/MakefileConfiguration summary+ PCRE library is not used+ OpenSSL library is not used+ zlib library is not usednginx 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"

 

 

开始编译 

调整编译时优化级别, 不优化  

 

root@ubuntu:~/Desktop/nginx-1.22.1# make 
make -f objs/Makefile
make[1]: Entering directory '/root/Desktop/nginx-1.22.1'
cc -c -pipe  -O0 -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 \-o objs/src/core/nginx.o \src/core/nginx.c
cc -c -pipe  -O0 -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 \-o objs/src/core/ngx_log.o \src/core/ngx_log.c
cc -c -pipe  -O0 -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 \-o objs/src/core/ngx_palloc.o \src/core/ngx_palloc.c
// 省略一部分输出 
objs/src/http/modules/ngx_http_upstream_least_conn_module.o \
objs/src/http/modules/ngx_http_upstream_random_module.o \
objs/src/http/modules/ngx_http_upstream_keepalive_module.o \
objs/src/http/modules/ngx_http_upstream_zone_module.o \
objs/ngx_modules.o \
-ldl -lpthread -lcrypt \
-Wl,-E
sed -e "s|%%PREFIX%%|/usr/local/nginx|" \-e "s|%%PID_PATH%%|/usr/local/nginx/logs/nginx.pid|" \-e "s|%%CONF_PATH%%|/usr/local/nginx/conf/nginx.conf|" \-e "s|%%ERROR_LOG_PATH%%|/usr/local/nginx/logs/error.log|" \< man/nginx.8 > objs/nginx.8
make[1]: Leaving directory '/root/Desktop/nginx-1.22.1'

 

root@ubuntu:~/Desktop/nginx-1.22.1# ls -l objs/ | grep nginx
-rwxr-xr-x 1 root root 3148224 Apr  5 01:40 nginx
-rw-r--r-- 1 root root    5537 Apr  5 01:40 nginx.8

 

 

clion 中调试

clion 中打开 nginx-1.22.1 项目 

新建 make application, 配置名称 

target 配置 make 相关, build 配置 Makefile 中 build 的命令, clean 配置 Makefile 中 clean 的命令 

executable 配置编译好的 nginx-server 的可执行文件 

program arguments 即为 nginx-server 所需要的参数, 这里配置为配置文件  

 

然后启动 nginx-server 服务 

 

 

访问 nginx 的服务

 

 

但是 还存在一个问题是, 我们期望调试的是请求流程的处理, 因此 我们需要调试 work 进程     

因此 我们这里交换 master, worker 的业务, 以便于 我们直接在 clion 中调试 worker 

 

 

ngx_http_static_module.ngx_http_static_handler 中打上断点, 然后 访问 nginx 的静态资源, 发现断点如下, 至此 可以正常调试了 

http://192.168.0.108/index.html

 

 

 

 

 

http://www.xdnf.cn/news/909937.html

相关文章:

  • 禅道5月更新速览 | 新增交付物配置功能,支持建立跨执行任务依赖关系,研发效能平台上线
  • 6个可提升社媒投资回报率的Facebook KPI
  • 基于tensorflow实现的猫狗识别
  • 配置git命令缩写
  • 学习记录aigc
  • 智能制造数字孪生全要素交付一张网:智造中枢,孪生领航,共建智造生态共同体
  • Verilog编程技巧01——如何编写三段式状态机
  • 数论——同余问题全家桶3 __int128和同余方程组
  • Linux非管理员用户安装python环境
  • Ubuntu创建修改 Swap 文件分区的步骤——解决嵌入式开发板编译ROS2程序卡死问题
  • 2025.6.5学习日记 Nginx主目录文件 .conf介绍、热部署 定时日志切割
  • Abaqus有限元应力集中
  • Odoo 19 路线图(新功能)
  • C++课设:考勤记录系统
  • 三、元器件的选型
  • 常用枚举技巧:基础(一)
  • QGraphicsView、QGraphicsScene和QGraphicsItem图形视图框架(八)QGraphicsProxyWidget的使用
  • CPP基础
  • Go 并发编程基础:通道(Channel)的使用
  • C语言的全称:(25/6/6)
  • Python应用break初解
  • $attrs 与 $listeners 透传
  • 实战:用 i.MX8MP 读取 220V 电流信息的完整方案(HLW8032 接入)
  • 华科:视觉大模型动态剪枝框架FlowCut
  • onSaveInstanceState() 和 ViewModel 在数据保存能力差异
  • nginx的安装
  • 《100天精通Python——基础篇 2025 第5天:巩固核心知识,选择题实战演练基础语法》
  • 软件测评服务如何依据标准确保品质?涵盖哪些常见内容?
  • SQLAlchemy 中的 func 函数使用指南
  • [密码学实战]C语言使用SDF库构建国密算法RESTful服务(五)