(1)进入官方下载地址,选择合适版本(nginx/Windows-xxx)。javascript
(2)解压到本地php
(3)启动css
下面以 C 盘根目录为例说明下:html
cd C: cd C:\nginx-0.8.54 start nginx
注:Nginx / Win32 是运行在一个控制台程序,而非 windows 服务方式的。服务器方式目前仍是开发尝试中。
(1)进入下载页面,选择合适版本下载。java
$ wget http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
(2)安装 nginx rpm 包linux
nginx rpm 包实际上安装的是 nginx 的 yum 源。nginx
$ rpm -ivh nginx-*.rpm
(3)正式安装 rpm 包c++
$ yum install nginx
(4)关闭防火墙git
$ firewall-cmd --zone=public --add-port=80/tcp --permanent $ firewall-cmd --reload
进入官网下载地址:http://nginx.org/en/download.... ,选择合适的版本下载(PS: 建议选择最新的稳定版本)。github
这里我选择的是 1.16.1 版本:http://nginx.org/download/ngi...
wget http://nginx.org/download/nginx-1.16.1.tar.gz
Nginx 源码的编译依赖于 gcc 以及一些库文件,因此必须提早安装。
(1)安装gcc环境
yum install gcc-c++
(2)安装PCRE库,用于解析正则表达式
yum install -y pcre pcre-devel
执行 pcre-config --version
命令。
(3)zlib压缩和解压缩依赖,
yum install -y zlib zlib-devel
(4)SSL 安全的加密的套接字协议层,用于HTTP安全传输,也就是https
yum install -y openssl openssl-devel
(1)解压,须要注意,解压后获得的是源码,源码须要编译后才能安装
tar -zxvf nginx-1.16.1.tar.gz
(2)编译以前,先建立nginx临时目录,若是不建立,在启动nginx的过程当中会报错
mkdir /var/temp/nginx -p
(3)在nginx目录,输入以下命令进行配置,目的是为了建立makefile文件
./configure --prefix=/usr/local/nginx --pid-path=/var/run/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_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 | 指定nginx安装目录 |
–pid-path | 指向nginx的pid |
–lock-path | 锁定安装文件,防止被恶意篡改或误操做 |
–error-log | 错误日志 |
–http-log-path | http日志 |
–with-http_gzip_static_module | 启用gzip模块,在线实时压缩输出数据流 |
–http-client-body-temp-path | 设定客户端请求的临时目录 |
–http-proxy-temp-path | 设定http代理临时目录 |
–http-fastcgi-temp-path | 设定fastcgi临时目录 |
–http-uwsgi-temp-path | 设定uwsgi临时目录 |
–http-scgi-temp-path | 设定scgi临时目录 |
(4)make编译并安装
make make install
(5)关闭防火墙
$ firewall-cmd --zone=public --add-port=80/tcp --permanent $ firewall-cmd --reload
(6) 启动 Nginx
安装成功后,进入sbin目录启动 nginx
./nginx
./nginx -s stop
./nginx -s reload
打开浏览器,访问虚拟机所处内网ip便可打开nginx默认页面,显示以下便表示安装成功:
Centos7 以上是用 Systemd 进行系统初始化的,Systemd 是 Linux 系统中最新的初始化系统(init),它主要的设计目标是克服 sysvinit 固有的缺点,提升系统的启动速度。Systemd 服务文件以 .service 结尾。
若是是经过 rpm 包安装的,会自动建立 nginx.service 文件。
直接用命令:
$ systemctl enable nginx.service
设置开机启动便可。
若是采用源码编译方式,须要手动建立 nginx.service 文件。
详情参考:centos 7.x编写开机启动服务
docker pull nginx
docker run --name my-nginx -p 80:80 -v /data/docker/nginx/logs:/var/log/nginx -v /data/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:ro -d nginx
docker exec -it my-nginx nginx -s reload
docker exec -it my-nginx nginx -s stop
或者:docker stop my-nginx
docker restart my-nginx
CentOS7 环境安装脚本: 软件运维配置脚本集合
安装说明
/usr/local/nginx
1.16.0
版本使用方法
curl -o- https://gitee.com/turnon/linux-tutorial/raw/master/codes/linux/soft/nginx-install.sh | bash wget -qO- https://gitee.com/turnon/linux-tutorial/raw/master/codes/linux/soft/nginx-install.sh | bash
sh nginx-install.sh [version]
main 全局配置
http http 模块相关配置
server 虚拟主机配置,能够配置多个
在前面搭建好 Nginx 环境后,编译的 Nginx 根路径为 /usr/local/nginx,那么对应的配置文件为 /usr/local/nginx/conf/nginx.conf ,直接用 cat 命令查看这里的配置文件内容(删除掉了原配置文件中的英文注释,并对主要配置项增长中文注释):
$ cat /root/nginx/conf/nginx.conf # 设置worker进程的用户,指的linux中的用户,会涉及到nginx操做目录或文件的一些权限,默认为`nobody` user root; # worker进程工做数设置,通常来讲CPU有几个,就设置几个,或者设置为N-1也行 worker_processes 1; # nginx 日志级别`debug | info | notice | warn | error | crit | alert | emerg`,错误级别从左到右愈来愈大 # error_log logs/error.log info # 设置nginx进程 pid # pid logs/nginx.pid; # 设置工做模式 events { # 默认使用 epoll use epoll; # 设置每一个worker进程的最大链接数,它决定了Nginx的并发能力 worker_connections 1024; } # http 是指令块,针对http网络传输的一些指令配置 http { # include 引入外部配置,提升可读性,避免单个配置文件过大 include mime.types; default_type application/octet-stream; # 设定日志格式,`main`为定义的格式名称,如此 access_log 就能够直接使用这个变量了 # 注释了日志格式的配置,使用默认 ... # sendfile使用高效文件传输,提高传输性能。 # 启用后才能使用`tcp_nopush`,是指当数据表累积必定大小后才发送,提升了效率。 sendfile on; tcp_nopush on; # 重要参数,是一个请求完成以后还要保持链接多久,不是请求时间多久, # 目的是保持长链接,减小建立链接过程给系统带来的性能损耗 keepalive_timeout 65; # gzip启用压缩,html/js/css压缩后传输会更快 gzip on; # server块配置 server { # 监听80端口 listen 80; server_name localhost; # 匹配url /,会在html目录下,访问index.html或index.htm文件 location / { root html; index index.html index.htm; } # 指定500 502 503 504出错的错误页面 error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
设定日志格式,main
为定义的格式名称,如此 access_log 就能够直接使用这个变量了
参数名 | 参数意义 |
---|---|
$remote_addr | 客户端ip |
$remote_user | 远程客户端用户名,通常为:’-’ |
$time_local | 时间和时区 |
$request | 请求的url以及method |
$status | 响应状态码 |
$body_bytes_send | 响应客户端内容字节数 |
$http_referer | 记录用户从哪一个连接跳转过来的 |
$http_user_agent | 用户所使用的代理,通常来时都是浏览器 |
$http_x_forwarded_for | 经过代理服务器来记录客户端的ip |
现有的日志都会存在 access.log
文件中,可是随着时间的推移,这个文件的内容会愈来愈多,体积会愈来愈大,不便于运维人员查看,因此咱们能够经过把这个大的日志文件切割为多份不一样的小文件做为日志,切割规则能够以天
为单位,若是天天有几百G或者几个T的日志的话,则能够按需以每半天
或者每小时
对日志切割一下。
具体步骤以下:
cut_log.sh
,内容为:#!/bin/bash LOG_PATH="/var/log/nginx/" RECORD_TIME=$(date -d "yesterday" +%Y-%m-%d+%H:%M) PID=/var/run/nginx/nginx.pid mv ${LOG_PATH}/access.log ${LOG_PATH}/access.${RECORD_TIME}.log mv ${LOG_PATH}/error.log ${LOG_PATH}/error.${RECORD_TIME}.log #向Nginx主进程发送信号,用于从新打开日志文件 kill -USR1 `cat $PID`
cut_log.sh
添加可执行的权限:chmod +x cut_log.sh
./cut_log.sh
安装定时任务:
yum install crontabs
crontab -e
编辑而且添加一行新的任务:
*/1 * * * * /usr/local/nginx/sbin/cut_log.sh
重启定时任务:
service crond restart systemctl restart crond.service
附:经常使用定时任务命令:
service crond start // 启动服务 service crond stop // 关闭服务 service crond restart // 重启服务 service crond reload // 从新载入配置 crontab -e // 编辑任务 crontab -l // 查看任务列表
Cron表达式是,分为5或6个域,每一个域表明一个含义,以下所示:
分 | 时 | 日 | 月 | 星期几 | 年(可选) | |
---|---|---|---|---|---|---|
取值范围 | 0-59 | 0-23 | 1-31 | 1-12 | 1-7 | 2019/2020/2021/… |
每分钟执行:
*/1 * * * *
每日凌晨(天天晚上23:59)执行:
59 23 * * *
每日凌晨1点执行:
0 1 * * *
# 开启 gzip 压缩功能,目的:提升传输效率,节约服务器带宽 gzip on; # 限制最小压缩,小于 1 字节文件不会压缩 gzip_min_length 1; # 设置图片压缩级别(压缩比,文件越大,压缩越多,可是 CPU 使用会越多) gzip_comp_level 3; # 定义压缩文件的类型 gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png application/json;
假如服务器路径为:/home/imooc/files/img/face.png
配置的时候为:
location /imooc { root /home }
用户访问的时候请求为:url:port/imooc/files/img/face.png
配置的时候为:
location /hello { alias /home/imooc }
用户访问的时候请求为:url:port/hello/files/img/face.png
,如此至关于为目录imooc
作一个自定义的别名。
空格
:默认匹配,普通匹配
location / { root /home; }
=
:精确匹配
location = /imooc/img/face1.png { root /home; }
~*
:匹配正则表达式,不区分大小写
#符合图片的显示 location ~* .(GIF|jpg|png|jpeg) { root /home; }
~
:匹配正则表达式,区分大小写
#GIF必须大写才能匹配到 location ~ .(GIF|jpg|png|jpeg) { root /home; }
^~
:以某个字符路径开头
location ^~ /imooc/img { root /home; }
<p/>