所在位置:
- 首页
- 正文
在 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
参考链接
【下一篇】Nginx 的常用配置