-
Nginx安装、配置、优化
普通类 -
- 支持
- 批判
- 提问
- 解释
- 补充
- 删除
-
-
一、安装步骤
1、安装linux操作系统(略)
2、如果要装第三方模块,那么要装第三方库的支持
GCC(GNU Compiler Collection)编译器及相关工具:yum –y install gcc gcc-c++ autoconf automake
gzip模块需要zlib库,rewrite模块需要pcre库,ssl功能需要openssl库等。yum –y install zlib zlib-devel openssl openssl-devel pcre pcre-devel
3、Nginx的安装
去http://nginx.org/en/download.html 下载相关安装文件并拷贝到linux服务器的根目录下
安装命令如下:
tar zxvf nginx-0.x.xx.tar.gz
cd nginx-0.x.xx
./configure
make
sudo make install
按照上面的命令,Nginx被默认安装到/usr/local/nginx目录下,您可以通过./configure –help命令查看Nginx可选择的编译选项。
4、Nginx的基本命令
启动:/usr/local/nginx/sbin/nginx –c /usr/local/nginx/conf/nginx.conf
停止:
通过发送系统信号给Nginx主进程的方式来停止,查找Nginx主进程号:ps –ef | grep nginx,备注信息是”master process”的才是主进程。如果在nginx.conf配置文件中指定了pid文件存放的路径(如:pid /usr/local/nginx/logs/nginx.pid),该文件存放的就是Nginx当前的主进程号。如果没有指定pid文件存放的路径,nginx.pid文件默认存放在Nginx安装目录的logs目录下。可以直接通过以下命令来完成平滑重启,省下寻找Nginx主进程号的步骤:
Kill – 信号类型 ‘/usr/local/nginx/logs/nginx.pid’
(1) 从容停止Nginx:kill –QUIT Nginx主进程号
或 kill –QUIT ‘/usr/local/nginx/logs/nginx.pid’
(2) 快速停止Nginx:kill – TERM Nginx主进程号 或 kill –INT Nginx主进程号 Nginx主进程号也可用pid文件路径代替
(3) 强制停止所有Nginx进程:pkill -9 nginx
Nginx的平滑重启:如果改变了Nginx的配置文件(nginx.conf),想重启Nginx,同样可以通过发送系统信号给Nginx主进程的方式来进行。不过,重启前要确认Nginx的配置文件的语法是否正确,否则Nginx将不会加载新的配置文件。判断配置文件是否正确:
/user/local/nginx/sbin/nginx –t –c /user/local/nginx/conf/nginx.conf
如果配置文件不正确会提示第几行出错,如果正确就可以平滑重启了:
Kill –HUP Nginx主进程号 或者 kill –HUP ‘/usr/local/nginx/logs/nginx.pid’
Nginx的信号控制
TERM,INT 快速关闭
QUIT 从容关闭
HUP 平滑重启,重新加载配置文件
USR1 重新打开日志文件,在切割日志时用途较大
USER2 平滑升级可执行程序
WINCH 从容关闭工作进程
Nginx的平滑升级:略-
二、Nginx的基本配置与优化
/usr/local/nginx/nginx.conf
# 使用的用户和组
user www www;
# 指定工作衍生进程数(一般等于CPU的总核数或总核数的两倍,例如两个四核CPU,则总核数为8)
worker_processes 8;
# 指定错误日志存放的路径,错误日志记录级别可选项为:[ debug | info | notice | warn | error | crit ]
error_log /data1/logs/nginx_error.log crit;
# 指定 pid 存放的路径
pid /usr/local/nginx/nginx.pid;
# 指定文件描述符数量
worker_rlimit_nofile 51200;
events
{
# 使用的网络I/O模型,Linux系统推荐采用epoll模型,FreeBSD系统推荐采用kqueue模型
use epoll;
# 允许的连接数
worker_connections 51200;
}
http
{
include mime.types;
default_type application/octet-stream;
# 设置使用的字符集,如果一个网站有多种字符集,请不要随便设置,应让程序员在HTML代码中通过Meta标签设置
#charset gb2312;
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
# 设置客户端能够上传的文件大小
client_max_body_size 8m;
sendfile on;
tcp_nopush on;
keepalive_timeout 60;
tcp_nodelay on;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
# 开启gzip压缩
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on;
#limit_zone crawler $binary_remote_addr 10m;
server
{
listen 80;
server_name www.yourdomain.com yourdomain.com;
index index.html index.htm index.php;
root /data0/htdocs;
#limit_conn crawler 20;
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 1h;
}
log_format access '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $http_x_forwarded_for';
access_log /data1/logs/access.log access;-
编写每天定时切割Nginx日志的脚本
1、创建脚本/usr/local/nginx/sbin/cut_nginx_log.sh
vi /usr/local/nginx/sbin/cut_nginx_log.sh
输入以下内容:
#!/bin/bash
# This script run at 00:00
# The Nginx logs path
logs_path="/usr/local/nginx/logs/"
mkdir -p ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/
mv ${logs_path}access.log ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/access_$(date -d "yesterday" +"%Y%m%d").log
kill -USR1 `cat /usr/local/nginx/nginx.pid`
2、设置crontab,每天凌晨00:00切割nginx访问日志
crontab -e
输入以下内容:
引用
00 00 * * * /bin/bash /usr/local/nginx/sbin/cut_nginx_log.sh -
-
- 标签:
- 进程
- 配置
- nginx
- usr
- 优化
- 学习元
- local
-
加入的知识群:
学习元评论 (0条)
聪明如你,不妨在这 发表你的看法与心得 ~