【关于源码安装部署的三个步骤解析:预编译(./XXX),编译(make),安装(make install)】

关于源码安装部署的三个步骤解析:预编译(./XXX),编译(make),安装(make install)

前言
相信很多Linux小白对于源码安装的步骤都十分熟练了,但是知其然是否也知其所以然呢?那今天就由我庖丁解牛-源码安装的三个步骤:预编译(./XXX),编译(make),安装(make install);看看三个步骤分别是个什么目的!

1.为什么需要执行三个步骤?

  • 源码安装必然安装的是源码包,源码包往往指的是由C,或C++等语言写的包,它们往往要比yum和rpm复杂,因此安装需要进行编译安装。
  • 就比如源码安装Nginx,因为Nginx是基于C语言开发的源代码程序,默认不能被Linux系统直接使用,需借助C编译器将源代码文件编译生成二进制文件,所以需执行源代码软件包部署核心三个步骤。

2.预编译的目的

  • 主要是检测Linux系统安装该所需的依赖环境、库文件,检测Linux系统是否存在GCC(C编译器),指定软件部署的路径、自定义软件编译参数、模块,最终产生Makefile文件。
    例如nginx预编译命令:
./configure --prefix=/usr/local/nginx/ --user=www --group=www --with-http_stub_status_module

参数解析:

./configure    ##预编译
 --prefix=/usr/local/nginx/   ##指定部署路径
 --user=www --group=www   ##指定所属用户和组
  --with-http_stub_status_module   ##检测所须依赖

3.编译的目的

  • 主要是通过make编译工具读取第一步预编译产生的Makefile文件,将软件包中的源代码文件编译生成二进制文件。其中Makefile文件用途,告知make编译工具在编译源代码文件时,从哪个源码文件开始编译至哪个源码文件结束编译。
    以nginx编译结果为例:
    在这里插入图片描述

4.安装

  • 其实就是将第二步make编译产生的二进制文件,拷贝或者安装至Linux系统指定的安装目录,从而形成启动目录
    例如nginx最终的启动目录就是:/usr/local/nginx/。
  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
好的,下面是centos7.9编译安装nginx的步骤: 1. 安装编译nginx所需的依赖库: ``` yum install -y gcc gcc-c++ autoconf automake zlib zlib-devel openssl openssl-devel pcre pcre-devel libxml2 libxml2-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxslt libxslt-devel gd gd-devel perl perl-devel perl-ExtUtils-Embed ``` 2. 下载nginx源码包: 可以到官网(https://nginx.org/en/download.html)下载最新的稳定版nginx源码包。 3. 解压源码包: ``` tar zxvf nginx-xxx.tar.gz ``` 4. 进入nginx源码目录,执行以下命令进行编译安装: ``` ./configure --with-http_stub_status_module --with-http_ssl_module make && make install ``` 其中,--prefix参数指定nginx安装目录,--with-http_stub_status_module参数启用状态页模块,--with-http_ssl_module参数启用SSL加密支持。 5. 配置nginx: 进入/usr/local/nginx/conf目录,编辑nginx.conf文件,进行配置。这里给出一个简单的配置文件示例: ``` user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /usr/local/nginx/conf/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; keepalive_timeout 65; server { listen 80; server_name localhost; location / { root /usr/local/nginx/html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/local/nginx/html; } } server { listen 443 ssl; server_name localhost; ssl_certificate /usr/local/nginx/conf/server.crt; ssl_certificate_key /usr/local/nginx/conf/server.key; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; location / { root /usr/local/nginx/html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/local/nginx/html; } } } ``` 其中,listen参数指定监听端口,server_name参数指定域名,root参数指定网站根目录,ssl_certificate和ssl_certificate_key参数指定SSL证书和私钥文件路径。 6. 启动nginx: 进入/usr/local/nginx/sbin目录,执行以下命令启动nginx: ``` ./nginx ``` 7. 检查nginx是否启动成功: 执行以下命令查看nginx进程是否存在: ``` ps -ef | grep nginx ``` 执行以下命令检查nginx监听的端口是否打开: ``` netstat -tlnp | grep nginx ``` 如果输出类似以下内容,则说明nginx已经成功安装并启动: ``` tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN xxxx/nginx tcp 0 0 :::443 :::* LISTEN xxxx/nginx ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

醉里看星辰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值