Nginx快速安装
官方提供三种版本下载
Mainline version:主线版本,也叫开发版。最新版本,但没经过大量测试
Stable version:稳定版本,通过大量的测试,相对比较稳定的版本,生产环境使用该版本
Legacy version:往期的稳定版
Nginx 软件安装的方式有很多种
- 源码编译=>Nginx (1.版本随意 2.安装复杂 3.升级繁琐) 需要编译:配置、编译、安装 优点:可以自定义路径;路径统一,方便迁移,方便升级 缺点:配置选项复杂,安装时间较长,程序用户及执行程序的路径都需要自己手动完成
- epel源=>Nginx (1.版本较低 2.安装简单 )(epel红帽修改过一些配置文件,不建议使用)
- 官方源=>Nginx (1.版本较新 2.安装简单 )
三种安装方式都需要安装运行环境
yum install -y gcc gcc-c++ autoconf pcre pcre-devel zlib-devel openssl-devel
make automake wget httpd-tools vim tree make automake wget httpd-tools vim tree
1.epel源安装
- 部署阿里云epel源
# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
安装nginxyum install -y nginx
2.官方源安装(不要使用最新版)
建议从http://nginx.org/packages/下载所需版本的rpm包,使用yum localinstall -y 来安装
1.配置 nginx yum 源(必须使用官方源)
# vim /etc/yum.repos.d/nginx.repo[nginx-stable]name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1enabled=1gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
2.安装Nginx服务
#yum install nginx -y
········································
下载配置环境
yum install -y yum-utils
配置nginx yum 源
yum install -y yum-utils
cat > /etc/yum.repos.d/nginx.repo <<EOF
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/\$releasever/\$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
EOF
安装nginx 服务
yum install -y nginx
systemctl start nginx
systemctl enable nginx
3.编译安装
1.下载源码包
#wget http://nginx.org/download/nginx-1.20.1.tar.gz
2.解压源码包
#tar xf nginx-1.20.1.tar.gz
3.配置安装环境(程序用户,安装路径等)
#1.创建用户和组,且不创建用户的家目录#groupadd nginx -g 888#useradd -u 888 -g 888 -s /sbin/nologin -M nginx#2.创建安装目录
默认安装到/usr/local/nginx/,建议安装到指定目录,目录路径根据公司要求来定义
#mkdir -p /app
4.进入解压目录,执行配置脚本进行预编译,生成Makefile
# cd nginx-1.20.1/# ./configure --prefix=/app/nginx-1.20.1 --user=nginx --group=nginx#相关选项用法:
./configure --help #查看配置参数
--prefix=#指定nginx安装路径
--user=#指定nginx程序用户
--group=#指定nginx程序用户组
--with-**=#指定编译模块
--without-**=#指定不编译模块
--add-module=#指定第三方模块
5.编译安装
# make && make install#检查安装好的目录结构#tree /app/nginx-1.20.1
/app/nginx-1.20.1/
├── conf
├── html
├── logs
└── sbin
6.做软链接
#ln -s /app/nginx-1.20.1 /app/nginx
7.配置环境变量
#写入启动配置文件#echo "export PATH=$PATH:/app/nginx/sbin" >> /etc/profile#马上生效#source /etc/profile
Nginx命令
nginx #启动nginx。 等价于systemctl start nginx
-s reopen #重启Nginx。 等价于systemctl restart nginx
-s reload #重新加载Nginx配置文件,然后以优雅的方式重启Nginx。 等价于systemctl reload
nginx
-s stop #强制停止Nginx服务。 等价于systemctl stop nginx
-s quit #优雅地停止Nginx服务(即处理完所有请求后再停止服务)
-?,-h #打开帮助信息
-v #显示版本信息并退出
-V #显示版本和配置选项信息,然后退出
-T #检测配置文件是否有语法错误,转储并退出
-q #在检测配置文件期间屏蔽非错误信息
-p prefix #设置前缀路径(默认是:/usr/share/nginx/)
-c filename #设置配置文件(默认是:/etc/nginx/nginx.conf)
-g directives #设置配置文件外的全局指令
Nginx配置文件
Nginx 主配置文件 /etc/nginx/nginx.conf 是一个纯文本类型的文件,整个配置文件是以区块的形式组织的。一般,每个区块以一对大括号{}来表示开始与结束。
1.CoreModule 核心模块
2.EventModule 事件驱动模块
3.HttpCoreModule http内核模块
需了解扩展项
CoreModule层下可以有Event、HTTP
HTTP模块层允许有多个Server层, Server主要用于配置多个网站
Server层又允许有多个Location, Location主要用于定义网站访问路径
CoreModule核心模块
user nginx;#Nginx进程所使用的用户
worker_processes 1;#Nginx运行的work进程数量(建议与CPU数量一致或auto)
error_log /var/log/nginx/error.log warn #Nginx错误日志存放路径
pid /var/run/nginx.pid #Nginx服务运行后产生的pid进程号
events 事件模块
events {
worker_connections 1024 //每个worker进程支持的最大连接数
use epoll; //事件驱动模型, epoll默认
}
http内核模块
//公共的配置定义在http{}
http { //http层开始
include mime.types; //引入MIME类型映射表文件
default_type application/octet-stream; //浏览器检测文件类型
access_log /var/log/nginx/access.log main //访问日志
sendfile on; //启用零复制机制
keepalive_timeout 65; //保持连接超时时间65s
//使用Server配置网站, 每个Server{}代表一个网站(简称虚拟主机)
server {
listen 80; //监听端口, 默认80
server_name localhost; //提供服务的域名或主机名
//控制网站访问路径
location / {
root /usr/share/nginx/html; //存放网站代码路径
index index.html index.htm; //服务器返回的默认页面文件
}
//指定错误代码, 统一定义错误页面, 错误代码重定向到新的Locaiton
error_page 500502503504 /50x.html;}...
//第二个虚拟主机配置
server {...
}
include /etc/nginx/conf.d/*.conf; //包含/etc/nginx/conf.d/目录下所有以.conf结尾
的文件
} //http层结束
Nginx配置网站
1.新增nginx配置文件
[root@web01 conf.d]# cat /etc/nginx/conf.d/game.conf
server {
listen 80;#监听端口80
server_name zmj.com;#域名
location / {
root /code;#根路径
index index.html;#网站格式}}
2.放置对应的源代码文件至指定的目录 并检查nginx语法是否存在错误
[root@web01 ~]#mkdir /code #创建源代码放置的目录[root@web01 ~]#cd /code/[root@web01 code]# unzip h5game.zip -d /etc/code #上传源代码文件,并解压到指定目录[root@web01 code]# nginx -t #检查nginx的语法是否存在错误
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
3.重载Nginx [reload|restart]
方法一:
[root@web01 code]# nginx -s reload
方法二:建议这种
[root@web01 code]# systemctl reload nginx
4.如何访问对应的网站
1.通过服务器的IP直接访问(不推荐)
2.通过假域名方式访问(推荐方式)
Windows修改 C:\Windows\System32\drivers\etc\hosts
10.0.0.7 game.zmj.com
在hosts文件最后添加IP及域名
3.使用ping命令测试域名解析是否正常
Nginx日志管理
Nginx有非常灵活的日志记录模式,每个级别的配置可以有各自独立的访问日志。日志格式通过
log_format 命令定义格式
log_format详解
在nginx默认的配置文件中, log_format 已经将日志格式定死,但是我们可不可以修改呢?
- log_format 的作用是定义日志格式语法
# 配置语法: 包括: error.log access.logSyntax: log_format name [escape=default|json] string ...;Default: log_format combined "...";Context: http
- nginx默认日志格式语法如下
log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';
- Nginx日志格式允许包含的内置变量
$remote_addr# 记录客户端IP地址$remote_user# 记录客户端用户名$time_local# 记录通用的本地时间$time_iso8601# 记录ISO8601标准格式下的本地时间$request# 记录请求的方法以及请求的http协议$status# 记录请求状态码(用于定位错误信息)$body_bytes_sent# 发送给客户端的资源字节数,不包括响应头的大小$bytes_sent# 发送给客户端的总字节数$msec# 日志写入时间。单位为秒,精度是毫秒。$http_referer# 记录从哪个页面链接访问过来的$http_user_agent# 记录客户端浏览器相关信息$http_x_forwarded_for#记录客户端IP地址$request_length# 请求的长度(包括请求行, 请求头和请求正文)。$request_time# 请求花费的时间,单位为秒,精度毫秒# 注:如果Nginx位于负载均衡器,nginx反向代理之后, web服务器无法直接获取到客 户端真实的IP地址。# $remote_addr获取的是反向代理的IP地址。 反向代理服务器在转发请求的http头信息中,# 增加X-Forwarded-For信息,用来记录客户端IP地址和客户端请求的服务器地址
- .access_log日志配置语法
Syntax: access_log path [format [buffer=size][gzip[=level]][flush=time][if=condition]];access_log off;Default: access_log logs/access.log combined;Context: http, server, location, ifin location, limit_except
- Nginx Access日志配置实践
server { listen 80; server_name code.tf.com;#将当前的server网站的访问日志记录至对应的目录,使用main格式 access_log /var/log/nginx/code.tf.com.log main; location / { root /code;}#当有人请求改favicon.ico时,不记录日志 location /favicon.ico { access_log off;return200;}}
nginx日志切割****使用logrotate切割日志[root@nginx conf.d]# cat /etc/logrotate.d/nginx/var/log/nginx/*.log { daily # 每天切割日志 missingok # 日志丢失忽略 rotate 52# 日志保留52天 compress # 日志文件压缩 delaycompress # 延迟压缩日志 notifempty # 不切割空文件 create 640 nginx adm # 日志文件权限 sharedscripts postrotate # 切割日志执行的命令if[ -f /var/run/nginx.pid ];thenkill -USR1 `cat/var/run/nginx.pid`fi endscript}
日志切割后的效果[root@web01 ~]# ll /var/log/nginx/total 4044-rw-r----- 1 www adm 54438 Oct 12 03:28 access.log-20181012.gz-rw-r----- 1 www adm 28657 Oct 13 03:48 access.log-20181013.gz-rw-r----- 1 www adm 10135 Oct 12 03:28 error.log-20181130.gz-rw-r----- 1 www adm 7452 Oct 13 03:48 error.log-20181201.gz
nginx相关文件及用户
程序用户:nginx(rpm默认创建,源码需要手动)
主配置文件:安装路径/conf/nginx.conf
子配置文件:安装路径/conf.d/*.conf (rpm包中默认有,源码安装没有,可以手动配置)
日志文件:(建议后续手动指定路径)
rpm包 在/var/log/nginx/
源码 安装路径/logs
程序文件:
rpm包 /usr/sbin/ 或/sbin
源码 安装路径/sbin,需要修改PATH变量,或做软链接
服务管理脚本
rpm包 /usr/lib/systemd/system/nginx.service
源码 没有,需要手动创建
基于PHP的配置
1.php的软件包
php:函数库
php-fpm:工具(专为nginx设计的插件),需要启动服务,才能使用,占用的是9000端口
2.nginx的配置,要添加php页面的代理转发
server {....
location ~ \.php$ {
root /web;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;}}
3.程序用户统一
需要修改php-fpm的程序用户
vim /etc/php-fpm.d/www.conf
user = nginx
group = nginx
4.修改web目录的所属
chown -R nginx.nginx /web
5.上传的文件限制
nginx的配置文件
client_max_body_size 8M;
php的配置文件/etc/php.ini
upload_max_filesize = 8M
post_max_size = 8M
6.只要是修改过配置,就必须重启或重载
systemctl restart|reload nginx php-fpm
nginx的配置,要添加php页面的代理转发
server {....
location ~ \.php$ {
root /web;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;}}
3.程序用户统一
需要修改php-fpm的程序用户
vim /etc/php-fpm.d/www.conf
user = nginx
group = nginx
4.修改web目录的所属
chown -R nginx.nginx /web
5.上传的文件限制
nginx的配置文件
client_max_body_size 8M;
php的配置文件/etc/php.ini
upload_max_filesize = 8M
post_max_size = 8M
6.只要是修改过配置,就必须重启或重载
systemctl restart|reload nginx php-fpm
版权归原作者 西瓜投手爱吃西瓜 所有, 如有侵权,请联系我们删除。