获取nginx安装包

地址:https://nginx.org/en/download.html

Mainline version:Mainline 是 Nginx 目前主力在做的版本,可以说是开发版
Stable version:最新稳定版,生产环境上建议使用的版本
Legacy versions:遗留的老版本的稳定版

我们下载linux上的安装包 tar.gz 结尾的,右键复制链接即可,linux上无需下载安装包再上传,直接使用wget命令获取解压即可

image-20240731221721353

下载并解压

# 此处我们使用组合命令直接下载并解压(当然可以分两步,直接一条命令敲出来比较装13,23333)
# -qO-:wget 参数,表示静默模式下载并将输出发送到标准输出(stdout)
# tar -xz:tar 参数,-x 表示解压,-z 表示使用 gzip 解压,-C 表示指定解压的目标目录。
wget -qO- https://nginx.org/download/nginx-1.26.1.tar.gz | tar -xz -C /usr/local

安装nginx所必须软件

1 PERE

PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。

nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre库。

注:pcre-devel是使用pcre开发的一个二次开发库。nginx****也需要此库

2 zlib

zlib库提供了很多种压缩和解压缩的方式,nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库。

3 openssl

OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,

并提供丰富的应用程序供测试或其它目的使用。

nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要在linux安装openssl库。

yum install -y  gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel 

编译nginx

配置makefile

进入nginx解压目录,/usr/local/nginx-1.26.1,nginx目录根据下载版本不同而不同,使用nginx目录中的configure命令创建一个makefile文件,手动编译过gcc的同学可能比较熟悉这个,不熟悉也可以了解一下linux系统上手动编译都需要用到这个命令,执行如下命令开始设定nginx编译前的配置:

# 当前目录为:/usr/local/nginx-1.26.1
./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi \
--with-http_stub_status_module \
--with-http_ssl_module \
--with-file-aio \
--with-http_realip_module \
--with-http_v2_module \
--with-pcre \
--with-stream \
--with-stream_ssl_module \
--with-mail \
--with-mail_ssl_module

上述配置的大致意义如下:

--prefix=/usr/local/nginx

  • 设置 Nginx 的安装目录为 /usr/local/nginx

--pid-path=/var/run/nginx/nginx.pid

  • 设置 PID 文件的路径为 /var/run/nginx/nginx.pid,PID 文件用于存储 Nginx 进程的 ID。

--lock-path=/var/lock/nginx.lock

  • 设置锁文件的路径为 /var/lock/nginx.lock

--error-log-path=/var/log/nginx/error.log

  • 设置错误日志文件的路径为 /var/log/nginx/error.log

--http-log-path=/var/log/nginx/access.log

  • 设置访问日志文件的路径为 /var/log/nginx/access.log

--with-http_gzip_static_module

  • 启用 HTTP Gzip 静态模块,用于发送预先压缩的 .gz 文件。

--http-client-body-temp-path=/var/temp/nginx/client

  • 设置 HTTP 客户端请求体临时文件的存储路径为 /var/temp/nginx/client

--http-proxy-temp-path=/var/temp/nginx/proxy

  • 设置 HTTP 代理临时文件的存储路径为 /var/temp/nginx/proxy

--http-fastcgi-temp-path=/var/temp/nginx/fastcgi

  • 设置 FastCGI 临时文件的存储路径为 /var/temp/nginx/fastcgi

--http-uwsgi-temp-path=/var/temp/nginx/uwsgi

  • 设置 uWSGI 临时文件的存储路径为 /var/temp/nginx/uwsgi

--http-scgi-temp-path=/var/temp/nginx/scgi

  • 设置 SCGI 临时文件的存储路径为 /var/temp/nginx/scgi

--with-http_stub_status_module

  • 启用 HTTP stub status 模块,用于提供基本的状态信息。

--with-http_ssl_module

  • 启用 HTTP SSL 模块,用于支持 HTTPS。

--with-file-aio

  • 启用文件异步 I/O 支持。

--with-http_realip_module

  • 启用 HTTP Real IP 模块,用于将客户端的 IP 地址更改为请求头中的值(如通过代理或负载均衡器)。

--with-http_v2_module

  • 启用 HTTP/2 模块,用于支持 HTTP/2 协议。

--with-pcre

  • 启用 PCRE(Perl 兼容正则表达式库)支持,用于支持正则表达式。

--with-stream

  • 启用 Stream 模块,用于处理 TCP/UDP 流。

--with-stream_ssl_module

  • 启用 Stream SSL 模块,用于为 Stream 提供 SSL/TLS 支持。

--with-mail

  • 启用邮件代理模块,用于支持 SMTP、IMAP 和 POP3 协议。

--with-mail_ssl_module

  • 启用邮件 SSL 模块,为邮件代理提供 SSL/TLS 支持。

当出现如下界面时即配置完成:

image-20240731212027267

编译

检查是否成功在当前目录生成Makefile文件

image-20240731212142844

创建nginx临时目录和nginx目录

# 当前目录为:/usr/local/nginx-1.26.1
# 此处创建的目录和上面配置的nginx临时目录一致
mkdir -p  /var/temp/nginx

开始编译

# 当前目录为:/usr/local/nginx-1.26.1
# 提示make命令没有就直接使用yum命令安装 yum -y install make
make

当出现如下图的内容时说明命令顺利执行啦,don't worry,这不是报错

image-20240731212936366

继续执行下一步命令开始安装nginx,这里不需要再次执行安装路径,创建makefile文件的时候已经指定了。

# 当前目录为:/usr/local/nginx-1.26.1
make install

启动nginx

进入nginx安装目录 /usr/local/nginx,执行sbin目录下的nginx启动脚本

# 当前目录为:/usr/local/nginx/sbin
./nginx
# 检查nginx是否启动成功,已经出现nginx进程,nginx安装成功
ps -ewwf | grep nginx
root      3444     1  0 13:33 ?        00:00:00 nginx: master process ./nginx
nobody    3445  3444  0 13:33 ?        00:00:00 nginx: worker process
root      3447     1  0 13:33 pts/0    00:00:00 grep --color=auto nginx
# 关闭nginx
# ./nginx -s stop 或 ./nginx -s quit
# 刷新配置文件
# ./nginx -s reload

配置外部访问

配置防火墙策略,开放防火墙nginx端口

# 当前目录为 /usr/local/nginx/sbin
# 注:如果提示没有iptables命令可以使用yum命令安装即可,其他版本系统也有对应的防火墙工具,自行百度开发端口即可,嫌麻烦可以直接把防火墙关闭(自己玩可以,生产环境务必不要这样玩)
iptables -I INPUT -p tcp --dport 80 -j ACCEPT

Dockerfile版本

FROM centos:latest
RUN mkdir -p  /etc/yum.repos.d/bak && \
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak  && \
curl -o /etc/yum.repos.d/CentOS-Base-Aliyun.repo http://mirrors.aliyun.com/repo/Centos-8.repo && \
yum clean all && yum makecache
RUN sed -i "5i\alias ll=\'ls -l\'" /root/.bashrc && source /root/.bashrc
RUN yum install -y ncurses wget && wget -qO- https://nginx.org/download/nginx-1.26.1.tar.gz | tar -xz -C /usr/local && \
yum install -y  gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel make && cd /usr/local/nginx-1.26.1 && \
./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi \
--with-http_stub_status_module \
--with-http_ssl_module \
--with-file-aio \
--with-http_realip_module \
--with-http_v2_module \
--with-pcre \
--with-stream \
--with-stream_ssl_module \
--with-mail \
--with-mail_ssl_module && \
mkdir -p  /var/temp/nginx && make && make install && ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/nginx
EXPOSE 80
CMD ["nginx","-g","daemon off;"]

构建Dockerfile镜像

# 进入Dockerfile文件所在目录 
# 开始构建 -t之后指定的时镜像名和tag
docker build -t image:test .

运行镜像

# 此处必须采用后台运行才可以启动nginx
docker run -d -p 80:80 --name nginx-demo image:test

启动成功之后使用 docker ps 查看容器是否成功启动(避免使用-it启动容器直接退出而不知道)

docker ps
CONTAINER ID   IMAGE                COMMAND                   CREATED         STATUS         PORTS                                                                              NAMES
66934d164c31   image:test           "nginx -g 'daemon of…"   4 minutes ago   Up 4 minutes   0.0.0.0:80->80/tcp, :::80->80/tcp                                                  nginx-demo

本地访问nginx主页,本机ip为 192.168.31.30,映射到主机的端口为80,所以我们在本地访问192.168.31.30:80(实际ip请根据docker容器所在宿主机的ip来访问)

image-20240731221550109

访问成功!!撒花~!

参考

posted on 2024-07-31 22:24  沙溪  阅读(44)  评论(0编辑  收藏  举报