Linux系统Nginx源码安装

本文主要讲述Linux系统使用源代码安装Nginx系统,以及通过编写systemd单元文件来管理Nginx系统。

文章目录

    • 安装nginx依赖包
    • 下载并解压nginx安装包
    • 安装nginx
    • 启动nginx服务
    • 创建nginx自启动脚本

1、安装Nginx依赖包

yum install -y pcre-devel zlib-devel openssl-devel wget gcc tree vim
  • pcre-devel: 这是Perl Compatible Regular Expressions(PCRE)库的开发文件。PCRE是一个用于处理正则表达式的库,很多软件(如Nginx、Apache等)都依赖于它。
  • zlib-devel: 这是zlib压缩库的开发文件。许多软件需要这个库来支持数据压缩。
  • openssl-devel: 这是OpenSSL库的开发文件。OpenSSL是一个强大的安全套接字层密码库,包含了各种主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。
  • gcc: 这是GNU Compiler Collection的缩写,是一个编译器套件,包括C、C++、Fortran等多种语言的编译器。它通常用于编译源代码。

2、下载并解压Nginx安装包

从Nginx官网下载Nginx源码包这里下载的版本为1.20

wget http://nginx.org/download/nginx-1.20.2.tar.gz

解压Nginx源码

tar -xzvf nginx-1.20.2.tar.gz

3、安装Nginx

进入/root/nginx目录进行编译前配置*为下载的nginx版本,例如刚刚下载的1.20版本

cd /root/nginx*

执行命令:

./configure --prefix=/usr/local/nginx --with-http_ssl_module
  • ./configure:这是 Nginx 源码中的一个脚本,用于准备编译环境,检查依赖项,并生成 Makefile 文件,该文件随后被用于编译 Nginx。
  • --prefix=/usr/local/nginx:这个选项指定了 Nginx 安装后的基础目录。在这个例子中,Nginx 将被安装到 /usr/local/nginx 目录下。这包括二进制文件、配置文件、日志等。
  • --with-http_ssl_module:这个选项告诉配置脚本启用 SSL 模块,使 Nginx 能够支持 HTTPS。SSL 模块是 Nginx 的一个可选模块,用于提供加密的 HTTP 连接。执行命令编译安装nginx
    make && make install
  • 这是两个命令,make 为编译命令,make install 为安装命令,可以分别执行。这里使用&&将两个命令连接执行,会在前面命令执行成功的前提下才会执行第二个命令。

4、启动Nginx服务

关闭防火墙

setenforce 0
systemctl stop firewalld
systemctl disable firewalld
  • setenforce 0 用于临时将 SELinux 的状态设置为宽容模式(Permissive mode)。SELinux 是一个为 Linux 操作系统提供访问控制安全策略的机制,它允许管理员定义哪些进程可以访问哪些文件、目录和网络资源。执行 setenforce 0 会将 SELinux 的模式从当前的切换到 Permissive。

  • systemctl stop firewalld 这个命令会立即停止正在运行的firewalld服务

  • systemctl disable firewalld 禁用firewalld服务,使其在系统启动时不会自动运行进入到安装目录/usr/local/nginx,查看目录结构

    cd /usr/local/nginx
    ls
    tree

    进入/usr/local/nginx/sbin目录下,并使用命令启动nginx

    cd /user/local/nginx/sbin/
    ./ nginx

    这里我在启动时出现了一个问题,如果发现其报下列错误,意思是因为80端口被占用导致Nginx启动失败。使用下面该命令对80端口进行摸排,结果显示80端口占用着

    netstat -ntlp | grep 80
  • 使用下面这个命令,查找并终止占用指定TCP端口的进程,然后再重启Nginx即可完成成功运行。

    fuser -k 80/tcp

监听80端口服务器

curl http://localhost:80

  • curl:这是一个常用的命令行工具,用于发送HTTP请求。它可以用来获取或发送数据,并支持多种HTTP方法(如GET、POST等)。
  • http://localhost:80:这是你想要访问的URL。
  • :80:这是端口号。HTTP协议默认的端口号是80。
  • http://:这表示你正在使用HTTP协议。
  • localhost:这是一个特殊的域名,代表你自己的计算机

使用浏览器进行实测,输入localhost:80,出现如下界面,说明成功

5、创建Nginx自启动脚本

在/usr/lib/systemd/system或者/etc/systemd/system目录下创建一个nginx.service的文件,并且进入编辑它

vi /etc/systemd/system/nginx.service

Systemd服务一种以 .service 结尾的单元(unit)配置文件,用于控制由 systemd 控制或监视的进程。

设置以下内容:

[Unit]

Description=nginx - high performance web server

Documentation=http://nginx.org/en/docs/

After=network-online.target remote-fs.target nss-lookup.target

Wants=network-online.target

[Service]

Type=forking

PIDFile=/usr/local/nginx/logs/nginx.pid

ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

ExecReload=/bin/sh -c "/bin/kill -s HUP $(/bin/cat /usr/local/nginx/logs/nginx.pid)"

# ExecReload=/usr/local/nginx/sbin/nginx -s reload

ExecStop=/bin/sh -c "/bin/kill -s TERM $(/bin/cat /usr/local/nginx/logs/nginx.pid)"

# ExecStop=/usr/local/nginx/sbin/nginx -s quit

PrivateTmp=true

[Install]

WantedBy=multi-user.target

systemctl daemon-reload   #重新加载配置文件

systemctl start nginx      #启动服务

systemctl enable nginx      #加入开机启动
systemctl status nginx      #查看服务当前状态

  • 26
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值