源码编译安装
下载nginx
nginx官方下载地址:http://nginx.org/en/download.html
wget http://nginx.org/download/nginx-1.18.0.tar.gz
tar -zxvf nginx-1.18.0.tar.gz
cd nginx-1.18.0
安装依赖包及基本命令包
yum install -y gcc gcc-c++ gdb net-tools telnet libevent-devel subversion bind-utils wget policycoreutils-python sysstat lsof redhat-lsb vim pcre-devel openssl openssl-devel ntp ntpdate unzip
nginx目录文件
[root@yuan nginx-1.18.0]# ll
总用量 764
drwxr-xr-x 6 1001 1001 326 3月 2 11:55 auto # 提供了4个子目录
-rw-r--r-- 1 1001 1001 302863 4月 21 2020 CHANGES # 对nginx版本中有哪些特性和bugfix进行说明
-rw-r--r-- 1 1001 1001 462213 4月 21 2020 CHANGES.ru # 俄罗斯语言版本的CHANGES
drwxr-xr-x 2 1001 1001 168 3月 2 11:59 conf # 示例文件,安装好之后会将此目录中的示例文件拷贝到安装目录以方便配置
-rwxr-xr-x 1 1001 1001 2502 4月 21 2020 configure # 用来生成中间文件,执行编译前的一个必备动作
drwxr-xr-x 4 1001 1001 72 3月 2 11:55 contrib # 提供了两个pa脚本,和vim的工具
drwxr-xr-x 2 1001 1001 40 3月 2 11:55 html # 提供了两个标准的html文件
-rw-r--r-- 1 1001 1001 1397 4月 21 2020 LICENSE
-rw-r--r-- 1 root root 376 3月 2 13:26 Makefile
drwxr-xr-x 2 1001 1001 21 3月 2 11:55 man # Linux对nginx的帮助文件,这里可以看到nginx的基本帮助和配置
-rw-r--r-- 1 1001 1001 49 4月 21 2020 README
drwxr-xr-x 9 1001 1001 91 3月 2 11:55 src # 框架都在此目录的代码中
配置使vim打开nginx配置文件时语法高亮
mkdir /root/.vim
cp -r contrib/vim/* /root/.vim/
查看configure支持哪些参数
./configure --help | more
默认安装nginx 可配置prefix地址 默认在/usr/local/nginx/
./configure
执行完configure命令后会多出以下两个内容
[root@yuan nginx-1.18.0]# ll
总用量 764
drwxr-xr-x 6 1001 1001 326 3月 2 11:55 auto
-rw-r--r-- 1 1001 1001 302863 4月 21 2020 CHANGES
-rw-r--r-- 1 1001 1001 462213 4月 21 2020 CHANGES.ru
drwxr-xr-x 2 1001 1001 168 3月 2 11:59 conf
-rwxr-xr-x 1 1001 1001 2502 4月 21 2020 configure
drwxr-xr-x 4 1001 1001 72 3月 2 11:55 contrib
drwxr-xr-x 2 1001 1001 40 3月 2 11:55 html
-rw-r--r-- 1 1001 1001 1397 4月 21 2020 LICENSE
-rw-r--r-- 1 root root 376 3月 2 13:26 Makefile
drwxr-xr-x 2 1001 1001 21 3月 2 11:55 man
drwxr-xr-x 3 root root 174 3月 2 13:28 objs # 生成的中间文件
-rw-r--r-- 1 1001 1001 49 4月 21 2020 README
drwxr-xr-x 9 1001 1001 91 3月 2 11:55 src
[root@yuan nginx-1.18.0]# cd objs/
[root@yuan objs]# ll
总用量 80
-rw-r--r--. 1 root root 17628 2月 9 16:07 autoconf.err
-rw-r--r--. 1 root root 39886 2月 9 16:07 Makefile
-rw-r--r--. 1 root root 6791 2月 9 16:07 ngx_auto_config.h
-rw-r--r--. 1 root root 657 2月 9 16:07 ngx_auto_headers.h
-rw-r--r--. 1 root root 5856 2月 9 16:07 ngx_modules.c # 决定了接下来编译时,有哪些模块会被编译进nginx
drwxr-xr-x. 9 root root 84 2月 9 16:07 src # C语言编译时生成的中间文件都会放在此目录
编译 make
# 编译完成后,objs目录下会生成大量中间文件,主要为以下三部分
# 如果需要对nginx进行版本升级,则需要从objs中将nginx执行文件拷贝到nginx的安装目录中
# 如果使用了动态模块,那么动态模块编译会生成so动态文件,届时也会放在objs目录下
-rwxr-xr-x. 1 root root 3825645 2月 9 16:25 nginx
-rw-r--r--. 1 root root 5317 2月 9 16:25 nginx.8
-rw-r--r--. 1 root root 32312 2月 9 16:25 ngx_modules.o
安装,只有首次安装时可使用此命令 make install
最后进入nginx目录,看到
[root@yuan nginx]# cd /usr/local/nginx/
[root@yuan nginx]# ll
总用量 0
drwx------ 2 nobody root 6 3月 2 13:41 client_body_temp
drwxr-xr-x 2 root root 333 3月 2 13:41 conf # 决定nginx功能的配置文件在conf下
drwx------ 2 nobody root 6 3月 2 13:41 fastcgi_temp
drwxr-xr-x 2 root root 40 3月 2 13:30 html
drwxr-xr-x 2 root root 58 3月 2 13:41 logs # access.log和error.log在logs下
drwx------ 2 nobody root 6 3月 2 13:41 proxy_temp
drwxr-xr-x 2 root root 19 3月 2 13:30 sbin # 最主要的nginx二进制文件在sbin下
drwx------ 2 nobody root 6 3月 2 13:41 scgi_temp
drwx------ 2 nobody root 6 3月 2 13:41 uwsgi_temp
[root@yuan nginx]#
Nginx配置文件的通用语法介绍
Nginx配置文件是一个asc文本文件:
01 它由两部分组成,一个是directive(指令),一个是directive block(指令块)。
02 每条指令以 ; 英文分号结尾,指令与参数间以空格符号分隔,多参数之间以分号分隔。
03 指令快以 {} 大括号将多条指令组织在一起
04 include语句允许组合多个配置文件以提升可维护性
05 使用 # 添加注释,提高可读性
06 以 $ 符号使用变量
07 部分指令的参数支持正则表达式
配置参数:时间的单位 | 配置参数:空间的单位 | ||||
ms | milliseconds | d | days | B | bytes 字节 |
s | seconds | w | weeks | k/K | kilobytes 千字节 |
m | minutes | M | months,30 days | m/M | megabytes 兆字节 |
h | hours | y | years,365 days | g/G | gigabytes 吉字节 |
http配置的指令块
http 表明此大括号里的所有指令都是由http模块去解析去执行的
upstream 表明上游服务,当nginx需要与Tomcat、Django等企业内网的其他服务有交互时,可定义此模块
server 定义一个域名或一组域名
location URL表达式
Nginx服务加到systemctl
vim /usr/lib/systemd/system/nginx.service
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target
启动命令:
systemctl start nginx