当前位置: 首页 > 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

 

 

 

 

 

相关文章:

  • python打卡训练营打卡记录day46
  • 小程序实现下拉刷新(踩坑 下拉刷新不触发)
  • 【Linux基础知识系列】第十三篇-Cron与定时任务管理
  • 【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)
  • 09.三数之和
  • 低内聚高耦合的衡量指标
  • Linux top 命令 的使用总结
  • Python Day43 学习(日志Day10-11复习)
  • SQLServer中的存储过程与事务
  • 【普及+/提高】洛谷P2114 ——[NOI2014] 起床困难综合症
  • Linux操作系统之进程(五):初识地址空间
  • JAVA元编程
  • SCSAI工业智能操作系统=PLM对象模型 × 大模型认知引擎 × 工作流调度层
  • 分布式锁-Redisson实现
  • Linux编程:1、文件编程
  • yolov8自训练模型作为预训练权重【增加新类别】注意事项
  • 思维链的 内部机制和简单理解
  • Q: dify前端使用哪些开发框架?
  • RK3588 火焰烟雾检测
  • 2025.6.5学习日记 Nginx主目录文件 .conf介绍、热部署 定时日志切割
  • ps怎么做网站界面设计/seo关键词外包公司
  • 东莞网站搜索排名/百度网络营销app下载
  • 婚庆公司网站建设策划书/爱站网seo工具
  • 电子商务网站功能需求/世界十大网站排名
  • 如何在网站做引流/临沂头条新闻今日头条
  • 2019年建设什么网站好/seo搜索优化怎么做