所在位置:

在 centos 中安装 nginx

在现代 Web 开发中,Nginx 是一种常用的 Web 服务器和反向代理服务器。安装 Nginx 通常有多种方法,以下是三种安装 Nginx 的方法:

源码的方式安装

在 CentOS 上通过源码安装 Nginx 可以按照以下步骤进行:

  • 安装编译工具

首先需要安装编译 Nginx 所需的工具,包括 gcc、make、pcre 和 zlib。可以通过以下命令安装:

yum install -y gcc gcc-c++ make pcre pcre-devel zlib zlib-devel openssl openssl-devel
  • 下载和解压 Nginx

在 Nginx 的官方网站上下载最新的稳定版本,并解压缩到合适的目录中。可以使用以下命令:

cd /usr/local/src
wget http://nginx.org/download/nginx-1.22.1.tar.gz
tar zxvf nginx-1.22.1.tar.gz
  • 配置和编译 Nginx

进入 Nginx 源码目录,执行 configure 命令来配置 Nginx 的编译参数,例如安装路径、模块等。可以根据实际需要修改以下参数:

cd nginx-1.22.1
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-pcre

其中,--prefix 指定了 Nginx 的安装路径;--with-http_ssl_module 启用 SSL 模块;--with-pcre 是支持编译需要的库。

然后执行 make 命令进行编译:

make
  • 安装和启动 Nginx

编译完成后,执行以下命令安装 Nginx:

make install
  • 执行下面命令是查看是否安装成功:
/usr/local/nginx/sbin/nginx -V

yum 的方式安装

要在 CentOS 上使用 yum 安装 Nginx,需要按照以下步骤操作:

  • 打开终端并以 root 用户身份登录

  • 运行以下命令更新当前系统中的软件包:

yum install -y epel-release
yum -y update
  • 运行以下命令安装 Nginx:
yum install -y nginx
  • 安装完成后,启动 Nginx 服务:
systemctl start nginx
  • 如果想要将 Nginx 设置为开机自启动,可以运行以下命令:
systemctl enable nginx
  • 执行下面命令是查看是否安装成功:
nginx -V

docker 的方式安装

要在 CentOS 上使用 docker 安装 Nginx,需要按照以下步骤操作:

  • 下载 Nginx 镜像
docker pull nginx
  • 创建 Nginx 的本地目录
mkdir -p /opt/nginx/conf
mkdir -p /opt/nginx/log
mkdir -p /opt/nginx/html
  • 把 nginx 容器的文件和目录复制到本地的文件和目录
docker run --name nginx -p 80:80 -d nginx
docker cp nginx:/etc/nginx/nginx.conf /opt/nginx/conf/nginx.conf
docker cp nginx:/etc/nginx/conf.d /opt/nginx/conf/conf.d
docker cp nginx:/usr/share/nginx/html /opt/nginx/
  • 删除 nginx 并重新开启新的 nginx 容器
docker stop nginx
docker rm nginx
docker run -p 80:80 --name nginx \
-v /opt/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /opt/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /opt/nginx/log:/var/log/nginx \
-v /opt/nginx/html:/usr/share/nginx/html \
-d nginx
  • 查看是否成功,修改 html 目录里的 index.html 文件,打开浏览器看看内容是否有变化

安装目录

列出 Nginx 服务的安装目录:

rpm -ql nginx

nginx 生成配置的简单说明

nginx 生成的配置主要是 /etc/nginx/nginx.conf 和 /etc/nginx/conf.d/default.conf 文件,下面来说一下这两个文件的内容:

  • nginx.conf 的内容:

  • default.conf 的内容:

从这两张图里我们可以发现它们是有层级关系的:

  • nginx 的全局块,像 user nginx; 这类
  • events 的全局块,像 worker_connections 1024; 这类
  • http 的全局块,像 sendfile on; 这类
  • server 的全局块,像 listen 80; 这类
  • location 的全局块,像 root /usr/share/nginx/html; 这类

下面一个个来讲解一下这几大块的内容:

  • nginx 的全局块:
user  nginx;                # 配置运行nginx服务器用户(组)
worker_processes  auto;     # 指定nginx启动worker进程的数量

# 将错误日志记录到/var/log/nginx/error.log文件中,级别为notice
error_log  /var/log/nginx/error.log notice; 

pid        /var/run/nginx.pid;  # 将nginx主进程号保存到/var/run/nginx.pid文件中
  • events 全局块
worker_connections  1024; # 设置每个worker进程的最大连接数为1024
  • http 全局块
include       /etc/nginx/mime.types;    # mime.types 包含了所有的文件类型
default_type  application/octet-stream; # 默认的文件类型

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

access_log  /var/log/nginx/access.log  main; # 自定义的访问日志文件

sendfile        on; # 是否允许sendfile方式传输文件,默认为off
#tcp_nopush     on;

keepalive_timeout  65; # 连接超时时间配置,默认是 65 秒

#gzip  on;

include /etc/nginx/conf.d/*.conf; # 这一块主要是用来定义 server,后面会讲到
  • server 全局块
listen       80;    # 定义访问的端口
listen  [::]:80;
server_name  localhost; # 定义访问的域名
error_page   500 502 503 504  /50x.html; # 指定服务器报错的页面
location = /50x.html {
        root   /usr/share/nginx/html; # 指定服务器报错的页面的目录
    }
  • location 块配置
location / {
    root   /usr/share/nginx/html; # 定义了访问 / 到 /usr/share/nginx/html 这个目录
    index  index.html index.htm; # 定义了这个 /usr/share/nginx/html 这个目录的哪个文件
}

可以在 /etc/nginx/conf.d/ 目录添加多个配置文件,添加多个server 和 location

参考链接

【上一篇】在 centos 中部署 selenium 项目

【下一篇】Nginx 的常用配置