当前位置: 首页 > 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.lqws.cn/news/184699.html

相关文章:

  • 12.5Swing控件3Jpanel JOptionPane
  • 机器学习笔记【Week7】
  • MS8258D 高增益带宽积 FET 输入放大器/激光雷达接收跨阻放大器
  • 【Linux】文件操作
  • SpringAI 1.0.0 正式版——利用Redis存储会话(ChatMemory)
  • 数据结构与算法——二叉树高频题目(1)
  • 【原神 × 二叉树】角色天赋树、任务分支和圣遗物强化路径的算法秘密!
  • CANFD 数据记录仪在汽车售后解决偶发问题故障的应用
  • [蓝桥杯]矩阵翻硬币
  • 矩阵QR分解
  • 配置git命令缩写
  • 数据库系统学习
  • 一些免费的大A数据接口库
  • 提升模型泛化能力:PyTorch的L1、L2、ElasticNet正则化技术深度解析与代码实现
  • Windows系统中如何使用符号链接将.vscode等配置文件夹迁移到D盘(附 CMD PowerShell 双版本命令)
  • 【51单片机】1. 基础点灯大师
  • AndroidR车机TextToSpeech音频焦点异常问题分析
  • 解决Zotero翻译插件Zotero PDF Translate无法正常翻译
  • android手势创建及识别保姆级教程
  • C# 快速检测 PDF 是否加密,并验证正确密码
  • 【QT常用技术讲解】多线程执行后台命令行的两种方式(后台运行和返回打印信息)
  • NoSQL之Redis哨兵
  • 攻击模型的恶意行为检测
  • Kyosan K5BMC ELECTRONIC INTERLOCKING MANUAL 电子联锁
  • 2025服装收银系统推荐:智能管理助力服装商家高效经营
  • 网络库libhv介绍
  • USB扩展器与USB服务器的2个主要区别
  • windows10搭建nfs服务器
  • 网络编程及原理(三)
  • MySQL数据库表设计与索引优化终极指南