当前位置: 首页 > article >正文

Nginx三种安装方式

Nginx安装

可以登录 Nginx 的官方网站:https://www.nginx.com/ 找到安装方式。

查看如何安装开源的版本:https://docs.nginx.com/nginx/admin-guide/installing-nginx/installing-nginx-open-source/

通过官方的说明,也可以知道安装,我这里简单列几种安装方式。

2.1 Ubuntu使用apt安装

这种方式安装的 nginx 版本一般不是最新的,主要是安装简单。

1 获取最新的软件包列表

sudo apt update

2 安装Nginx

sudo apt install nginx

3 验证安装

查看nginx版本

nginx -v

4 访问首页

现在通过浏览器访问http://IP 就可以访问了.

image-20241202150120438

2.2 CentOS使用yum安装

这种方式安装的 nginx 版本一般也不是最新的,但是也够用了,主要是安装简单。

1 安装 EPEL 存储库

yum install -y epel-release

2 更新存储库

yum update

3 安装Nginx

yum install -y nginx

4 验证安装

查看nginx版本

nginx -v

image-20241202150319938

5 访问首页

现在通过浏览器访问 http://IP 就可以访问了。

image-20241202150120438

2.3 源码安装

如果要使用最新版本,可以使用源码进行编译安装。

在从源代码编译之前,需要安装一些依赖项。

1 安装编译环境

用于编译C和C++程序

# CentOS中yum安装
yum update
yum install gcc-c++

# Ubuntu中apt安装
sudo apt update
sudo apt install build-essential

2 安装PCRE

PCRE 是为了支持正则表达式,Nginx 的 Core 和 Rewrite 模块需要。

# CentOS中yum安装
yum install -y pcre pcre-devel

# Ubuntu中apt安装
sudo apt install libpcre3 libpcre3-dev

# 使用源码安装
wget github.com/PCRE2Project/pcre2/releases/download/pcre2-10.42/pcre2-10.42.tar.gz
tar -zxf pcre2-10.42.tar.gz
cd pcre2-10.42
./configure
make
sudo make install

3 安装zlib

zlib 用来支持标头压缩,Nginx 的 Gzip 模块需要。

# CentOS中yum安装
yum install -y zlib zlib-devel

# Ubuntu中apt安装
sudo apt install zlib1g zlib1g-dev

# 使用源码安装
wget http://zlib.net/zlib-1.2.13.tar.gz
tar -zxf zlib-1.2.13.tar.gz
cd zlib-1.2.13
./configure
make
sudo make install

4 安装OpenSSL

OpenSSL 用来支持https 协议, Nginx 的 SSL 模块和其他模块需要。

# CentOS中yum安装
yum install -y openssl openssl-devel

# Ubuntu中apt安装
sudo apt install openssl libssl-dev

# 使用源码安装
wget http://www.openssl.org/source/openssl-1.1.1v.tar.gz
tar -zxf openssl-1.1.1v.tar.gz
cd openssl-1.1.1v
./Configure darwin64-x86_64-cc --prefix=/usr
make
sudo make install

5 下载源代码

从nginx.org (opens new window)可以下载最新版或稳定版本,建议使用稳定版本。

版本地址:https://nginx.org/en/download.html?_ga=2.197110824.562665189.1714921677-1619311149.1714730622

下载并解压最新版本的源代码:

wget https://nginx.org/download/nginx-1.25.1.tar.gz
tar zxf nginx-1.25.1.tar.gz
cd nginx-1.25.1

下载并解压最新稳定版本的源文件:

wget https://nginx.org/download/nginx-1.26.0.tar.gz
tar zxf nginx-1.26.0.tar.gz
cd nginx-1.26.0

6 配置构建选项

构建之前,先创建 Nginx 临时目录,用来存储 Nginx 的临时文件。

mkdir -p /var/temp/nginx

在 Nginx 目录下,输入如下命令进行配置,目的是为了创建makefile文件。

./configure \
--prefix=/usr/local/nginx \
--pid-path=/usr/local/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_ssl_module \
--with-stream \
--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

上面是一条命令,每行的末尾 \ 表示对命令进行换行,\ 之后不能有空格。

上面的 --prefix=/usr/local/nginx 就是 Nginx 的安装路径。

--error-log-path--http-log-path 指定的是日志目录。

7 编译

编译和安装:

# 编译
make

# 安装
make install

8 启动

# nginx命令程序在该路径下
cd /usr/local/nginx/sbin

# 启动nginx
./nginx

如果指定的文件没有权限,则使用 sudo 执行

9 验证安装

查看nginx版本

./nginx -v

10 访问首页

现在通过浏览器访问http://IP 就可以访问了。

image-20241202150120438

11 设置开机自启

源码的安装方式,需要手动设置开机自启。

创建一个 systemd 服务文件 /etc/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  
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf  
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit  
PrivateTmp=true  
  
[Install]  
WantedBy=multi-user.target

上面 nginx 的路径和配置文件的路径要对应。

然后运行命令重载一下 systemd 的配置文件:

sudo systemctl daemon-reload

然后就可以使用如下命令进行操作了:

# 设置开机自启动
sudo systemctl enable nginx

# 取消开机自启动
sudo systemctl disable nginx

# 启动
sudo systemctl start nginx

 # 停止
sudo systemctl stop nginx

# 重启
sudo systemctl relaod nginx

2.4 Docker方式安装

Docker方式安装要比其他的安装方式简单多了。

下面介绍在 Docker 中部署 Nginx,并通过挂载方式将 Nginx 的配置文件和站点目录挂载到宿主机上。

1 下载镜像

docker pull nginx

默认下载的就是最新的镜像文件。

2 创建挂载目录

在宿主机上创建挂载目录,自己自定义放在哪里。

# 配置文件目录
mkdir -p /home/nginx/docker_dir/nginx/conf
# 站点目录
mkdir -p /home/nginx/docker_dir/nginx/html
# nginx日志目录
mkdir -p /home/nginx/docker_dir/nginx/log

# 递归赋予文件夹读写执行权限
chmod -R 777 /home/nginx/docker_dir/nginx

3 复制配置文件

如果我们此时使用如下指令直接运行容器会存在一个问题。

docker run -d -p 8080:80 --name nginx-1 --restart=always \
  -v /home/nginx/docker_dir/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
  -v /home/nginx/docker_dir/nginx/conf/conf.d:/etc/nginx/conf.d \
  -v /home/nginx/docker_dir/nginx/log:/var/log/nginx \
  -v /home/nginx/docker_dir/nginx/html:/usr/share/nginx/html \
  nginx

宿主机不存在不存在 nginx.conf 文件,会把 /home/nginx/docker_dir/nginx/conf/nginx.conf 当成文件夹来处理,那么把宿主机的 /home/nginx/docker_dir/nginx/conf/nginx.conf 文件夹映射到容器的 /etc/nginx/nginx.conf 就会报错。

怎么处理呢?

我们首先通过 nginx 镜像运行一个简单的容器,将简单的容器中的配置文件复制到宿主机中,然后删除简单的容器,重新使用上面的命令运行我们的容器。

运行一个简单的容器

# 启动容器
docker run --name nginx -p 8080:80 -d nginx

复制配置文件到宿主机

# 将容器中nginx.conf文件复制到宿主机的挂载目录中
docker cp nginx:/etc/nginx/nginx.conf /home/nginx/docker_dir/nginx/conf/nginx.conf
# 将容器中conf.d文件夹下内容复制到宿主机的挂载目录中
docker cp nginx:/etc/nginx/conf.d /home/nginx/docker_dir/nginx/conf/conf.d
# 将容器中的html文件夹复制到宿主机的挂载目录中,后面没有html
docker cp nginx:/usr/share/nginx/html /home/nginx/docker_dir/nginx

删除简单的容器

docker rm -f nginx

4 运行容器

现在有配置文件了,可以运行容器,并进行挂载了:

docker run -d -p 8080:80 --name nginx --restart=always \
  -v /home/nginx/docker_dir/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
  -v /home/nginx/docker_dir/nginx/conf/conf.d:/etc/nginx/conf.d \
  -v /home/nginx/docker_dir/nginx/log:/var/log/nginx \
  -v /home/nginx/docker_dir/nginx/html:/usr/share/nginx/html \
  nginx

参数说明:

  • -d:后台运行
  • -p: 端口映射(宿主机端口:容器端口),nginx配置文件中默认使用的是80端口,所以容器的端口使用的是80,除非修改配置文件。
  • –name 创建容器的名称
  • –restart=always 容器停止后自动重启
  • -v 目录挂载(宿主机目录:容器目录)
  • 最后的nginx表示镜像的名称

5 访问首页

现在通过浏览器访问http://IP 就可以访问了。

image-20241202150120438


http://www.kler.cn/a/449876.html

相关文章:

  • linux-19 根文件系统(一)
  • 【python高级】342-TCP服务器开发流程
  • 24/12/24 力扣每日一题 # LeetCode 524. 通过删除字母匹配到字典里最长单词 全网最详细解释
  • 开发一个DApp项目:DeFi、DApp开发与公链DApp开发
  • 如何评估一个股票API接口
  • Marscode AI辅助编程
  • 【Threejs】从零开始(十一)--3D交互事件
  • Ubuntu20.04 修改root密码
  • 小程序将对象通过url传递到下个页面
  • LeetCode每日三题(一)哈希
  • R语言基础| 功效分析
  • Effective C++ 条款 02:尽量以 const,enum,inline 替换 #define
  • 递归查询全量分页数据问题
  • C++---------随机库,standfor库
  • 16×16LED点阵字符滚动显示-基于译码器与移位寄存器(设计报告+仿真+单片机源程序)
  • IMX6ULL开发板如何关掉自带的QT的GUI界面和poky的界面的方法
  • [spring]处理器
  • SpringCloudGateway+Nacos注册与转发Netty+WebSocket
  • 02-8.python入门基础一函数的高级使用
  • 一次性部署:使用Docker部署PHP应用
  • 源码分析之Openlayers中ZoomSlider滑块缩放控件
  • 【C语言】深入探讨 C 语言 `int` 类型大小及其跨平台影响
  • 【机器人】ATM 用于策略学习的任意点轨迹建模 RSS 2024 | 论文精读
  • 音视频入门基础:MPEG2-TS专题(20)——ES流简介
  • 取多个集合的交集
  • Spring Boot @Conditional注解