​准备工作

准备nginx源码包:

http://nginx.org/en/download.html

准备相关的依赖包以及环境:

gzip 模块需要 zlib 库  http://www.zlib.net/rewrite

模块需要 pcre 库http://www.pcre.org/

若开启ssl 功能则需要 openssl 库https://www.openssl.org/source/

如果没有安装gcc-c++,需要安装它,运行如下命令:

yum install gcc-c++

安装完成:

用上传工具将安装包拷贝到Home的任意目录下

将这几个文件拷贝至/usr目录下:

sudo cp openssl-3.0.2.tar.gz /usr/
sudo cp pcre-8.45.tar.gz /usr/
sudo cp zlib-1.2.11.tar.gz /usr/
sudo cp nginx-1.20.2.tar.gz /usr/

安装openssl-3.0.2:

回到/usr目录下运行:

sudo tar -zxvf openssl-3.0.2.tar.gz
cd openssl-3.0.2
sudo ./config
sudo make && make install

如果出现  Can't locate IPC/Cmd.pm 这样的错误如下图

则根据这篇文章安装相关模块

(5条消息) 编译OpenSSL时报错,Can‘t locate IPC/Cmd.pm in @INC_Sunlight_Rain_的博客-CSDN博客https://blog.csdn.net/sd4493091/article/details/122220902

安装pcre-8.45:

回到/usr目录下运行:

sudo tar -zxvf pcre-8.45.tar.gz
cd pcre-8.45
sudo ./configure
sudo make && make install

安装zlib-1.2.11:

回到/usr目录下运行:

sudo tar -zxvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
sudo ./configure
sudo make && make install

安装nginx

回到/usr目录下运行:

sudo tar zxvf nginx-1.20.2.tar.gz
cd nginx-1.8.0
sudo ./configure

configure的时候会验证安装环境,若依赖包环境安装不全则可能出现如下错误

通过所有检测:

运行:

sudo make && make install

等待编译完成,运行whereis查看nginx安装目录:

运行下面语句,将执行二进制软链接到/usr/sbin/nginx目录下:

 sudo ln -s /usr/local/nginx/sbin/nginx /usr/sbin/nginx

安装成功

将nginx写入系统服务

运行下面语句在 /usr/lib/systemd/system/目录下建立服务描述文件nginx.service:

vi /usr/lib/systemd/system/nginx.service

输入下面内容并保存

[Unit]
Description=The nginx HTTP and reverse proxy server
After=network.target remote-fs.target nss-lookup.target [Service]
Type=forking
PIDFile=/run/nginx.pid
# Nginx will fail to start if /run/nginx.pid already exists but has the wrong
# SELinux context. This might happen when running `nginx -t` from the cmdline.
# https://bugzilla.redhat.com/show_bug.cgi?id=1268621
ExecStartPre=/usr/bin/rm -f /run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=mixed
PrivateTmp=true [Install]
WantedBy=multi-user.target

运行如下命令,重新加载配置文件和.service文件:

sudo systemctl daemon-reload

可以看到 服务已经被加载进来了

之后就可以启用服务或者添加到启动项了

sudo systemctl start nginx.service

sudo systemctl enable nginx.service

最后一步别忘了开启防火墙80端口的访问:

sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
sudo firewall-cmd --reload

成功启动:

Troubleshooting

1. 如果端口被占用,则无法运行nginx,默认nginx是通过80端口访问的,所以需要排查端口占用的程序:

netstat -tunlp

2. 如果systemd有报错,可以通过如下命令查看

sudo journalctl -fu  nginx.service

3. 默认情况下日志记录在syslog,如果看报错详细,可以通过如下命令查看

sudo cat /var/log/messages

4. 如果有类似Can't open PID file /run/nginx.pid  这样的报错,需要修改nginx.service 中pid文件的路径为实际pid的路径,具体路径在nginx.conf中查看:

运行下面命令:

sudo vi /usr/lib/systemd/system/nginx.service

将ExecStartPre与PIDFile项改为如下:

ExecStartPre=/usr/bin/rm -f /usr/local/nginx/logs/nginx.pid
PIDFile=/usr/local/nginx/logs/nginx.pid

全文完

[学习笔记]在Linux中使用源码编译的方式安装Nginx的更多相关文章

  1. 在CentOS上以源码编译的方式安装Greenplum数据库

    集群组成: 一台主机,一台从节点. 系统环境: 操作系统:CentOS 7,64位,7.4.1708(/etc/redhat-release中查看) CPU:AMD Fx-8300 8核 内存:8GB ...

  2. 以源码编译的方式安装PHP与php-fpm

    首先是最基本的下载,解压,编译安装(以PHP 5.3.6 为例): wget http://www.php.net/get/php-5.3.6.tar.gz/from/this/mirrortar x ...

  3. 机器学习实战(Machine Learning in Action)学习笔记————03.决策树原理、源码解析及测试

    机器学习实战(Machine Learning in Action)学习笔记————03.决策树原理.源码解析及测试 关键字:决策树.python.源码解析.测试作者:米仓山下时间:2018-10-2 ...

  4. Android源码浅析(四)——我在Android开发中常用到的adb命令,Linux命令,源码编译命令

    Android源码浅析(四)--我在Android开发中常用到的adb命令,Linux命令,源码编译命令 我自己平时开发的时候积累的一些命令,希望对你有所帮助 adb是什么?: adb的全称为Andr ...

  5. Linux环境PostgreSQL源码编译安装

    Linux环境PostgreSQL源码编译安装 Linux版本: Red Hat 6.4 PostgreSQL版本: postgresql-9.3.2.tar.gz 数据存放目录: /var/post ...

  6. LNMP架构的源码编译以及yum安装

    LNMP架构的源码编译以及yum安装 目录 LNMP架构的源码编译以及yum安装 一.LNMP架构的编译安装 1. 安装nginx服务 (1)关闭防火墙 (2)安装依赖包 (3)创建运行用户 (4)编 ...

  7. Linux 安装node.js ---- 源码编译的方式

    一 : 普通用户: 安装前准备环境: 1.检查Linux 版本 命令: cat /etc/redhat-release 2.检查 gcc.gcc-c++ 是否安装过 命令: rpm -q gcc rp ...

  8. linux中的源码安装

    前两天自己在笔记本上装了CentOs版本的虚拟机,接着要装Python3,是源码安装的挺费劲,个人总结了一些源码安装的经验,今天在这里给大家分享一下. 1. 首先准备环境,安装必要的编译工具gcc g ...

  9. SpringCloud源码学习笔记3——Nacos服务注册源码分析

    系列文章目录和关于我 一丶基本概念&Nacos架构 1.为什么需要注册中心 实现服务治理.服务动态扩容,以及调用时能有负载均衡的效果. 如果我们将服务提供方的ip地址配置在服务消费方的配置文件 ...

  10. [shiro学习笔记]第四节 使用源码生成Shiro的CHM格式的API文档

    版本号为1.2.3的shiro API chm个事故文档生成. 获取shiro源码 编译生成API文档 转换成chm格式 API 获取shiro源码 shiro官网: http://shiro.apa ...

随机推荐

  1. 微信小程序-获取用户位置

    首先我要提供几个文档的链接地址: 首先是官方文档的获取用户位置的API文档地址: 官方文档地址:https://developers.weixin.qq.com/miniprogram/dev/api ...

  2. go中的sync.pool源码剖析

    sync.pool sync.pool作用 使用 适用场景 案例 源码解读 GET pin pinSlow getSlow Put poolChain popHead pushHead pack/un ...

  3. 编译Nginx服务部署静态网站

    Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件 (IMAP/POP3) 代理服务器,并在一个BSD-like协议下发行.其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在 ...

  4. C/C++ 实现正反向端口映射

    通常服务器是放在内网中,内部局域网中,并且分配了私有IP地址,而如果想要在外部直接访问内部服务器则需要端口映射,端口映射也叫做端口转发,或者叫做虚拟服务器,在渗透时当我们拿到目标机器权限以后,目标机器 ...

  5. x64dbg 2022 最新版编译方法

    x64dbg 调试器的源码编译很麻烦,网络上的编译方法均为老版本,对于新版本来说编译过程中会出现各种错误,编译的坑可以说是一个接着一个,本人通过研究总结出了一套编译拳法可以完美编译输出,不过话说回来x ...

  6. 分布式缓存-Redis集群

    一.单点Redis弊端 1.数据丢失问题:Redis是内存存储,服务器重启可能会丢失数据 2.并发能力问题:单节点Redis并发能力虽然不错,但也无法满足如618这样的高并发场景 3.故障恢复问题:如 ...

  7. Git企业开发控制理论和实操-从入门到深入(四)|Git的远程操作|Gitee

    前言 那么这里博主先安利一些干货满满的专栏了! 首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助. 高质量博客汇总 然后就是博主最近最花时间的一 ...

  8. 《ASP.NET Core 与 RESTful API 开发实战》-- (第8章)-- 读书笔记(尾)

    第 8 章 认证和安全 配置数据保护 在默认的情况下,数据保护 API 有自身的默认配置,如密钥的保存位置.密钥的有效期.所使用的算法等 前面已经提到了密钥的默认有效期以及用到的算法,对于密钥的保存位 ...

  9. 《ASP.NET Core 微服务实战》-- 读书笔记(第9章)

    第 9 章 微服务系统的配置 微服务系统中的配置需要关注更多其他方面的因素,包括: 配置值的安全读写 值变更的审计能力 配置信息源本身的韧性和可靠性 少量的环境变量难以承载大型.复杂的配置信息 应用要 ...

  10. wmctf的题解&blindless&exit_hook

    0x00 好久不见 2023.8.25 夜里 wmctf2023也是一个收获很大的比赛.只做了一个blindless,但是体会到了无泄露做出题来的奥妙.踩过的坑(学到的东西)包括但不限于 调试要用do ...