linux下ngnix怎么安装
查看是否已经安装了REPCrpm -qa | grep “REPC”
好的 这里看到已经安装了。
同理 查看openssl gzip wget
如果没有安装则使用yum命令安装下,需要在root权限下操作
分别是
yum install pcre*
yum install openssl*
yum install zlib
yum install zlib-devel
yum install wget
这里看到 这四个东西 都安装好了
下面开始安装nginx
先获取包wget http://***.org/download/nginx-1.8.0.tar.gz
后面的版本号可以更改的,可以先用浏览器登陆http://***.org/download/ 然后看下你要的是什么版本,目前高到底有测试版 稳定版 旧版 三种
PS:你当前位置在哪,下载的文件就在哪
下载好了以后,自己找个位置复制过去,然后解压。我这里是放在了/usr/local
cp nginx-1.8.0.tar.gz /usr/local
cd /usr/local
tar -zxvf nginx-1.8.0.tar.gz
解压完毕,进去,安装。
cd nginx-1.8.0
./configure --prefix=/usr/local/nginx-1.8.0 \--with-http_ssl_module --with-http_spdy_module \--with-http_stub_status_module --with-pcre
执行这个命令
make && make install
之后进入安装目录
然后 启动 ./ *** in/nginx
ps -ef|grep "nginx"
查看服务是否启动 有两个服务
7
至此 安装完毕了。
修改conf/nginx.conf 来完成配置 之后 重启nginx 服务
./ *** in/nginx -s reload
如何打开ngnix重写规则日记
之一步就是重命名日志文件,不用担心重命名后nginx找不到日志文件而丢失日志。在你未重新打开原名字的日志文件前,nginx还是会向你重命名的文件写日志,linux是靠文件描述符而不是文件名定位文件。第二步向nginx主进程发送USR1信号。
nginx主进程接到信号后会从配置文件中读取日志文件名称,重新打开日志文件(以配置文件中的日志名称命名),并以工作进程的用户作为日志文件的所有者。
重新打开日志文件后,nginx主进程会关闭重名的日志文件并通知工作进程使用新打开的日志文件。
工作进程立刻打开新的日志文件并关闭重名名的日志文件。
然后你就可以处理旧的日志文件了。
二、脚本实现
nginx日志按日期自动切割脚本如下:
复制代码代码如下:
#nginx日志切割脚本
#!/bin/bash
#设置日志文件存放目录
logs_path="/usr/local/nginx/logs/"
#设置pid文件
pid_path="/usr/local/nginx/***.pid"
#重命名日志文件
mv ${logs_path}access.log ${logs_path}access_$(date -d "yesterday" +"%Y%m%d").log
#向nginx主进程发信号重新打开日志
kill -USR1 `cat ${pid_path}`
保存以上脚本nginx_log.sh,并设置定时切割任务
下面分享相关内容的知识扩展:
Nginx实现高并发及原理
1.nginx高并发原理( 多进程(单线程)+epoll 实现高并发)
1.Nginx 在启动后,会有一个 master 进程和多个相互独立的 worker 进程
2.每个子进程只有一个线程,采用的 IO多路复用模型epoll,实现高并发
1.epoll() 中内核则维护一个链表,epoll_wait *** 可以获取到链表长度,不为0就知道文件描述符准备好了
2.在内核实现中 epoll 是根据每个 sockfd 上面的与设备驱动程序建立起来的回调函数实现的
3.某个 sockfd 上的事件发生时,与它对应的回调函数就会被调用,来把这个 sockfd 加入链表,其他处于“空闲的”状态的则不会
4.epoll上面链表中获取文件描述,这里使用内存映射(mmap)技术, 避免了复制大量文件描述符带来的开销
内存映射(mmap):内存映射文件,是由一个文件到一块内存的映射,将不必再对文件执行I/O操作
(1)nginx相对于apache的优点
1.轻量级,同样起web 服务,比apache 占用更少的内存及资源
2.抗并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能
3.高度模块化的设计,编写模块相对简单,社区活跃,各种高性能模块出品迅速啊
(2)apache相对于nginx的优点
1.apache 更为成熟,少 bug ,稳定性好
2.rewrite ,比nginx 的rewrite 强大
3.模块超多,基本想到的都可以找到
1.Nginx 在启动后,会有一个 master 进程和多个相互独立的 worker 进程
2.每个子进程只有一个线程,采用的 IO多路复用模型epoll,实现高并发
1.epoll() 中内核则维护一个链表,epoll_wait *** 可以获取到链表长度,不为0就知道文件描述符准备好了
2.在内核实现中 epoll 是根据每个 sockfd 上面的与设备驱动程序建立起来的回调函数实现的
3.某个 sockfd 上的事件发生时,与它对应的回调函数就会被调用,来把这个 sockfd 加入链表,其他处于“空闲的”状态的则不会
4.epoll上面链表中获取文件描述,这里使用内存映射(mmap)技术, 避免了复制大量文件描述符带来的开销
内存映射(mmap):内存映射文件,是由一个文件到一块内存的映射,将不必再对文件执行I/O操作
(1)nginx相对于apache的优点
1.轻量级,同样起web 服务,比apache 占用更少的内存及资源
2.抗并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能
3.高度模块化的设计,编写模块相对简单,社区活跃,各种高性能模块出品迅速啊
(2)apache相对于nginx的优点
1.apache 更为成熟,少 bug ,稳定性好
2.rewrite ,比nginx 的rewrite 强大
3.模块超多,基本想到的都可以找到
Nginx配置文件的详细说明
#运行用户
user www-data;
#启动进程,通常设置成和cpu的数量相等
worker_processes 1;
#全局错误日志及PID文件
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
#工作模式及连接数上限
events {
use epoll; #epoll是多路复用IO(I/O Multiplexing)中的一种方式,但是仅用于linux2.6以上内核,可以大大提高nginx的性能
worker_connections 1024;#单个后台worker process进程的更大并发链接数
# multi_accept on;
}
#设定http服务器,利用它的反向 *** 功能提供负载均衡支持
http {
#设定mime类型,类型由mime.type文件定义
include /etc/nginx/mime.types;
default_type application/octet-stream;
#设定日志格式
access_log /var/log/nginx/access.log;
#sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,对于普通应用,
#必须设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,以平衡磁盘与 *** I/O处理速度,降低系统的uptime.
sendfile on;
#tcp_nopush on;
#连接超时时间
#keepalive_timeout 0;
keepalive_timeout 65;
tcp_nodelay on;
#开启gzip压缩
gzip on;
gzip_disable "MSIE [1-6].(?!.*SV1)";
#设定请求缓冲
client_header_buffer_size 1k;
large_client_header_buffers 4 4k;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
#设定负载均衡的服务器列表
upstream mysvr {
#weigth参数表示权值,权值越高被分配到的几率越大
#本机上的Squid开启3128端口
server 192.168.8.1:3128 weight=5;
server 192.168.8.2:80 weight=1;
server 192.168.8.3:80 weight=6;
}
server {
#侦听80端口
listen 80;
#定义使用www.xx.com访问
server_name www.xx.com;
#设定本虚拟主机的访问日志
access_log logs/www.xx.com.access.log main;
#默认请求
location / {
root /root; #定义服务器的默认网站根目录位置
index index.php index.html index.htm; #定义首页索引文件的名称
fastcgi_pass www.xx.com;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
# 定义错误提示页面
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /root;
}
#静态文件,nginx自己处理
location ~ ^/(images|javascript|js|css|flash|media|static)/ {
root /var/www/virtual/htdocs;
#过期30天,静态文件不怎么更新,过期可以设大一点,如果频繁更新,则可以设置得小一点。
expires 30d;
}
#PHP 脚本请求全部转发到 FastCGI处理. 使用FastCGI默认配置.
location ~ .php$ {
root /root;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /home/www/www$fastcgi_script_name;
include fastcgi_params;
}
#设定查看Nginx状态的地址
location /NginxStatus {
stub_status on;
access_log on;
auth_basic "NginxStatus";
auth_basic_user_file conf/htpasswd;
}
#禁止访问 .htxxx 文件
location ~ /.ht {
deny all;
}
}
}
以上是一些基本的配置,使用Nginx更大的好处就是负载均衡
如果要使用负载均衡的话,可以修改配置http节点如下:
#设定http服务器,利用它的反向 *** 功能提供负载均衡支持
http {
#设定mime类型,类型由mime.type文件定义
include /etc/nginx/mime.types;
default_type application/octet-stream;
#设定日志格式
access_log /var/log/nginx/access.log;
#省略上文有的一些配置节点
#。。。。。。。。。。
#设定负载均衡的服务器列表
upstream mysvr {
#weigth参数表示权值,权值越高被分配到的几率越大
server 192.168.8.1x:3128 weight=5;#本机上的Squid开启3128端口
server 192.168.8.2x:80 weight=1;
server 192.168.8.3x:80 weight=6;
}
upstream mysvr2 {
#weigth参数表示权值,权值越高被分配到的几率越大
server 192.168.8.x:80 weight=1;
server 192.168.8.x:80 weight=6;
}
#之一个虚拟服务器
server {
#侦听192.168.8.x的80端口
listen 80;
server_name 192.168.8.x;
#对aspx后缀的进行负载均衡请求
location ~ .*.aspx$ {
root /root; #定义服务器的默认网站根目录位置
index index.php index.html index.htm; #定义首页索引文件的名称
proxy_pass http://mysvr ;#请求转向mysvr 定义的服务器列表
#以下是一些反向 *** 的配置可删除.
proxy_redirect off;
#后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m; #允许客户端请求的更大单文件字节数
client_body_buffer_size 128k; #缓冲区 *** 缓冲用户端请求的更大字节数,
proxy_connect_timeout 90; #nginx跟后端服务器连接超时时间( *** 连接超时)
proxy_send_timeout 90; #后端服务器数据回传时间( *** 发送超时)
proxy_read_timeout 90; #连接成功后,后端服务器响应时间( *** 接收超时)
proxy_buffer_size 4k; #设置 *** 服务器(nginx)保存用户头信息的缓冲区大小
proxy_buffers 4 32k; #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2)
proxy_temp_file_write_size 64k; #设定缓存文件夹大小,大于这个值,将从upstream服务器传
}
}
}
user www-data;
#启动进程,通常设置成和cpu的数量相等
worker_processes 1;
#全局错误日志及PID文件
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
#工作模式及连接数上限
events {
use epoll; #epoll是多路复用IO(I/O Multiplexing)中的一种方式,但是仅用于linux2.6以上内核,可以大大提高nginx的性能
worker_connections 1024;#单个后台worker process进程的更大并发链接数
# multi_accept on;
}
#设定http服务器,利用它的反向 *** 功能提供负载均衡支持
http {
#设定mime类型,类型由mime.type文件定义
include /etc/nginx/mime.types;
default_type application/octet-stream;
#设定日志格式
access_log /var/log/nginx/access.log;
#sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,对于普通应用,
#必须设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,以平衡磁盘与 *** I/O处理速度,降低系统的uptime.
sendfile on;
#tcp_nopush on;
#连接超时时间
#keepalive_timeout 0;
keepalive_timeout 65;
tcp_nodelay on;
#开启gzip压缩
gzip on;
gzip_disable "MSIE [1-6].(?!.*SV1)";
#设定请求缓冲
client_header_buffer_size 1k;
large_client_header_buffers 4 4k;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
#设定负载均衡的服务器列表
upstream mysvr {
#weigth参数表示权值,权值越高被分配到的几率越大
#本机上的Squid开启3128端口
server 192.168.8.1:3128 weight=5;
server 192.168.8.2:80 weight=1;
server 192.168.8.3:80 weight=6;
}
server {
#侦听80端口
listen 80;
#定义使用www.xx.com访问
server_name www.xx.com;
#设定本虚拟主机的访问日志
access_log logs/www.xx.com.access.log main;
#默认请求
location / {
root /root; #定义服务器的默认网站根目录位置
index index.php index.html index.htm; #定义首页索引文件的名称
fastcgi_pass www.xx.com;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
# 定义错误提示页面
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /root;
}
#静态文件,nginx自己处理
location ~ ^/(images|javascript|js|css|flash|media|static)/ {
root /var/www/virtual/htdocs;
#过期30天,静态文件不怎么更新,过期可以设大一点,如果频繁更新,则可以设置得小一点。
expires 30d;
}
#PHP 脚本请求全部转发到 FastCGI处理. 使用FastCGI默认配置.
location ~ .php$ {
root /root;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /home/www/www$fastcgi_script_name;
include fastcgi_params;
}
#设定查看Nginx状态的地址
location /NginxStatus {
stub_status on;
access_log on;
auth_basic "NginxStatus";
auth_basic_user_file conf/htpasswd;
}
#禁止访问 .htxxx 文件
location ~ /.ht {
deny all;
}
}
}
以上是一些基本的配置,使用Nginx更大的好处就是负载均衡
如果要使用负载均衡的话,可以修改配置http节点如下:
#设定http服务器,利用它的反向 *** 功能提供负载均衡支持
http {
#设定mime类型,类型由mime.type文件定义
include /etc/nginx/mime.types;
default_type application/octet-stream;
#设定日志格式
access_log /var/log/nginx/access.log;
#省略上文有的一些配置节点
#。。。。。。。。。。
#设定负载均衡的服务器列表
upstream mysvr {
#weigth参数表示权值,权值越高被分配到的几率越大
server 192.168.8.1x:3128 weight=5;#本机上的Squid开启3128端口
server 192.168.8.2x:80 weight=1;
server 192.168.8.3x:80 weight=6;
}
upstream mysvr2 {
#weigth参数表示权值,权值越高被分配到的几率越大
server 192.168.8.x:80 weight=1;
server 192.168.8.x:80 weight=6;
}
#之一个虚拟服务器
server {
#侦听192.168.8.x的80端口
listen 80;
server_name 192.168.8.x;
#对aspx后缀的进行负载均衡请求
location ~ .*.aspx$ {
root /root; #定义服务器的默认网站根目录位置
index index.php index.html index.htm; #定义首页索引文件的名称
proxy_pass http://mysvr ;#请求转向mysvr 定义的服务器列表
#以下是一些反向 *** 的配置可删除.
proxy_redirect off;
#后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m; #允许客户端请求的更大单文件字节数
client_body_buffer_size 128k; #缓冲区 *** 缓冲用户端请求的更大字节数,
proxy_connect_timeout 90; #nginx跟后端服务器连接超时时间( *** 连接超时)
proxy_send_timeout 90; #后端服务器数据回传时间( *** 发送超时)
proxy_read_timeout 90; #连接成功后,后端服务器响应时间( *** 接收超时)
proxy_buffer_size 4k; #设置 *** 服务器(nginx)保存用户头信息的缓冲区大小
proxy_buffers 4 32k; #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2)
proxy_temp_file_write_size 64k; #设定缓存文件夹大小,大于这个值,将从upstream服务器传
}
}
}
nginx与tomcat通信使用的端口号为
1.首先将tomcat改为8080端口(具体细节不再阐述,可自行百度)
2.在nginx的安装目录下 (我的目录是 /usr/local/nginx )创建一个新的文件夹 vhosts,然后在vhosts文件夹下创建一个tomcats.conf文件
tomcats.conf文件内容如下:
server {
listen 80;
server_name xx.xx.xx.xx;(想要设置的访问地址)
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://xx.xx.xxx.xxx:8080;(现在想要设置的路径的访问地址)
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
3.打开nginx安装目录下的conf下的nginx.conf文件
4.在文件底部加上
include /usr/local/nginx/vhosts/*; (包含所有虚拟机主机文件,加在最后那个大括号前面)
1
5.然后在文件中间找到
location / {
proxy_pass http://xx.xx.xxx.xxx:8080; (加上这个,指定自己本机的tomcat的地址)
root html;
index index.html index.htm;
}
1
2
3
4
5
重启tomcat,nginx
另外补上一点,其实nginx一般是不用重启的,它可以通过与-s参数调用可执行来控制
nginx -s signal
1
其中,信号可以是下列之一:
stop — fast shutdown
quit — graceful shutdown
reload — reloading the configuration file
reopen — reopening the log files
1
2
3
4
在配置文件中所作的更改不会被应用,直到命令重新配置被发送到nginx的或重新启动。要重新加载配置,执行:
nginx -s reload
1
如果非要重新启动或停止,可采用下面的 ***
从容停止
1、查看进程号
ps -ef|grep nginx
1
2、杀死进程,注意一共有三个进程,一定要杀死后面带master的进程id
kill -QUIT xxxx
1
快速停止
1、查看进程号
ps -ef|grep nginx
1
2、杀死进程
kill -TERM 2132
1
或
kill -INT 2132
1
强制停止
pkill -9 nginx
1
在操作过程中遇到一个坑:
配置nginx 反向 *** 的时候出现了
nginx: [emerg] invalid URL prefix in /usr/local/nginx/conf/nginx.conf
2.在nginx的安装目录下 (我的目录是 /usr/local/nginx )创建一个新的文件夹 vhosts,然后在vhosts文件夹下创建一个tomcats.conf文件
tomcats.conf文件内容如下:
server {
listen 80;
server_name xx.xx.xx.xx;(想要设置的访问地址)
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://xx.xx.xxx.xxx:8080;(现在想要设置的路径的访问地址)
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
3.打开nginx安装目录下的conf下的nginx.conf文件
4.在文件底部加上
include /usr/local/nginx/vhosts/*; (包含所有虚拟机主机文件,加在最后那个大括号前面)
1
5.然后在文件中间找到
location / {
proxy_pass http://xx.xx.xxx.xxx:8080; (加上这个,指定自己本机的tomcat的地址)
root html;
index index.html index.htm;
}
1
2
3
4
5
重启tomcat,nginx
另外补上一点,其实nginx一般是不用重启的,它可以通过与-s参数调用可执行来控制
nginx -s signal
1
其中,信号可以是下列之一:
stop — fast shutdown
quit — graceful shutdown
reload — reloading the configuration file
reopen — reopening the log files
1
2
3
4
在配置文件中所作的更改不会被应用,直到命令重新配置被发送到nginx的或重新启动。要重新加载配置,执行:
nginx -s reload
1
如果非要重新启动或停止,可采用下面的 ***
从容停止
1、查看进程号
ps -ef|grep nginx
1
2、杀死进程,注意一共有三个进程,一定要杀死后面带master的进程id
kill -QUIT xxxx
1
快速停止
1、查看进程号
ps -ef|grep nginx
1
2、杀死进程
kill -TERM 2132
1
或
kill -INT 2132
1
强制停止
pkill -9 nginx
1
在操作过程中遇到一个坑:
配置nginx 反向 *** 的时候出现了
nginx: [emerg] invalid URL prefix in /usr/local/nginx/conf/nginx.conf
版权声明:本站内容部分来源于互联网,我们尊重所有原创作者的权益,如果存在侵权,对不起,联系我们立马删除。