​准备工作

准备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. tensorflow语法【tf.gather_nd、reduce_sum、collections.deque 、numpy.random.seed()、tf.gradients()】

    相关文章: [一]tensorflow安装.常用python镜像源.tensorflow 深度学习强化学习教学 [二]tensorflow调试报错.tensorflow 深度学习强化学习教学 [三]t ...

  2. C++ Boost 函数与回调应用

    #include <iostream> #include <string> #include <boost\bind.hpp> using namespace st ...

  3. 从嘉手札<2024-1-29>

    补一下以前的几篇日记 2018-4-6 当一个人不在纠结没有什么 而是开始珍视他所拥有的一切的时候 才算得上真正的成熟 个人的意志 不能因受到社会的压力而软弱 也不能受到自然的压力而萎缩 而应当如冬日 ...

  4. 国产数据库TiDB初体验:简单易用,快速上手

    最近开始关注国产数据库的发展,为了能从技术人员的角度来实际体验国产中目前最流行的TiDB数据库,从今天起,在官方公布的课程开始正面了解TiDB的设计理念. 看了2小时的入门课程介绍,总体来说,还是有不 ...

  5. Flink-启动后无法访问WebUI界面(Flink1.16)

    问题描述 通过./bin/start-cluster.sh启动Flink程序,正常启动后无法通过浏览器访问web UI界面,http://192.168.80.133:8081. 问题原因 Flink ...

  6. 浅谈 2-SAT

    SAT 是适定性(Satisfiability)问题的简称.一般形式为 k - 适定性问题,简称 k-SAT.而当 \(k>2\) 时该问题为 NP 完全的.所以我们只研究 \(k=2\) 的情 ...

  7. 从零开始的react入门教程(二),从react组件说到props/state的联系与区别

    壹 ❀ 引 在从零开始的react入门教程(一)一文中,我们搭建了第一个属于自己的react应用,并简单学习了jsx语法.jsx写法上与dom标签高度一致,当然我们也知道,本质上这些react元素都是 ...

  8. 基于OpenTelemetry实现Java微服务调用链跟踪

    本文分享自华为云社区<基于OpenTelemetry实现Java微服务调用链跟踪>,作者: 可以交个朋友. 一 背景 随着业务的发展,所有的系统都会走向微服务化体系,微服务进行拆分后,服务 ...

  9. Sora文生视频模型深度剖析:全网独家指南,洞悉98%关键信息,纯干货

    Sora文生视频模型深度剖析:全网独家指南,洞悉98%关键信息,纯干货 Sora是一个以视频生成为核心的多能力模型,具备以下能力: 文/图生成视频 视频生成视频 1分钟超长高质量视频生成 视频裂变多视 ...

  10. Java 根据Map的值对 List<Map<String, Object>> 进行排序

    对 List<Map<String, Object>> 类型数据的排序 有一个Map列表, 需要对这个列表, 按Map的某几个value进行排序, 并且还要分别指定正序或者倒序 ...