centos nginx安装保姆级教程
一、安装nginx依赖环境准备
1. gcc 安装
安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装:
yum install gcc-c++
2. PCRE pcre-devel 安装
PCRE(Perl Compatible Regular Expressions) 是一个Perl库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库,pcre-devel 是使用 pcre 开发的一个二次开发库。nginx也需要此库。
yum install -y pcre pcre-devel
3. zlib 安装
zlib 库提供了很多种压缩和解压缩的方式, nginx 使用 zlib 对 http 包的内容进行 gzip ,所以需要在 Centos 上安装 zlib 库。
yum install -y zlib zlib-devel
4. OpenSSL 安装
OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。
nginx 不仅支持 http 协议,还支持 https(即在ssl协议上传输http),所以需要在 Centos 安装 OpenSSL 库。
yum install -y openssl openssl-devel
二、安装
以nginx-1.23.3.tar.gz版本为例
1.下载
http://nginx.org/download/nginx-1.23.3.tar.gz
2.上传nginx-1.23.3.tar.gz安装包
3.解压
tar -zxvf nginx-1.23.3.tar.gz
cd nginx-1.23.3
4.安装
# 执行 # 添加https 和 tcp支持
./configure --with-http_ssl_module --with-stream
# 编译安装
make
make install
执行完后会打印出安装信息如下:
whereis nginx
Configuration summary
+ using system PCRE library
+ OpenSSL library is not used
+ using system zlib library
nginx path prefix: "/usr/local/nginx"
nginx binary file: "/usr/local/nginx/sbin/nginx"
nginx modules path: "/usr/local/nginx/modules"
nginx configuration prefix: "/usr/local/nginx/conf"
nginx configuration file: "/usr/local/nginx/conf/nginx.conf"
nginx pid file: "/usr/local/nginx/logs/nginx.pid"
nginx error log file: "/usr/local/nginx/logs/error.log"
nginx http access log file: "/usr/local/nginx/logs/access.log"
nginx http client request body temporary files: "client_body_temp"
nginx http proxy temporary files: "proxy_temp"
nginx http fastcgi temporary files: "fastcgi_temp"
nginx http uwsgi temporary files: "uwsgi_temp"
nginx http scgi temporary files: "scgi_temp"
三、启动、重新加载、停止
# 如果没有配置环境变量则这样启动,注意后面的nginx.conf路径
# 指定配置文件启动
/usr/local/nginx/sbin/nginx -c /etc/nginx/nginx.conf
# 重启
/usr/local/nginx/sbin/nginx -s reload
# 停止
/usr/local/nginx/sbin/nginx -s stop
四、Nginx日志按日期自动分割
# 1.创建文件
vim /usr/local/nginx/sbin/cut_nginx_log.sh
# 2.复制一下内容至cut_nginx_log.sh
#!/bin/bash
#此脚本⽤于⾃动分割Nginx的⽇志,包括access.log和error.log
#每天00:00执⾏此脚本将前⼀天的access.log重命名为access-xxxx-xx-xx.log格式,并重新打开⽇志⽂件
#Nginx⽇志⽂件所在⽬录
LOG_PATH=/usr/local/nginx/logs/
#获取昨天的⽇期
YESTERDAY=$(date -d "yesterday" +%Y-%m-%d)
#获取pid⽂件路径
PID=/usr/local/nginx/logs/nginx.pid
#分割⽇志
mv ${LOG_PATH}access.log ${LOG_PATH}access-${YESTERDAY}.log
mv ${LOG_PATH}error.log ${LOG_PATH}error-${YESTERDAY}.log
#向Nginx主进程发送USR1信号,重新打开⽇志⽂件
kill -USR1 `cat ${PID}`
# 3.保存
:wq
# 4.修改脚本文件权限
chmod +x /usr/local/nginx/sbin/cut_nginx_log.sh
crontab -e
# 5.可根据需要修改执行时间
00 00 * * * /bin/bash /usr/local/nginx/sbin/cut_nginx_log.sh
五、完成,烟花……
六、经验之谈
1. 抽取配置文件避免主配置爆满
本人在使用nginx时,期初一个简单配置就满足业务需要了,可是配置越加越多,最后越来越难维护,到最后主配置文件几百行。像这种配置较多情况建议把配置按功能、按监听域名、监听端口分文件放置文件夹。
做法如下:
1.1 修改 /usr/local/nginx/conf/nginx.conf
vim /usr/local/nginx/conf/nginx.conf
#user nobody;
worker_processes auto;
error_log /data/cloud/logs/nginx/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
pid /data/cloud/logs/nginx/nginx.pid;
events {
worker_connections 1024;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
include mime.types;
default_type application/octet-stream;
access_log /data/cloud/logs/nginx/access.log;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
server_tokens off;
gzip on;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 512k;
fastcgi_buffers 8 512k;
fastcgi_busy_buffers_size 512k;
fastcgi_temp_file_write_size 512k;
client_header_buffer_size 64k;
large_client_header_buffers 8 64k;
client_body_buffer_size 20m;
#websocket
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
#此处为配置文件放置目录
include /etc/conf.d/*.conf;
}
# tcp请求只能放主配置
stream {
upstream tcp_backend {
server 192.168.0.1:8080 max_fails=2 fail_timeout=10s weight=10;
}
server {
listen *:7890;
proxy_pass tcp_backend ;
}
}
1.2 创建conf.d及子配置
mkdir /etc/conf.d
2. 创建快捷操作
为了在任何目录都操作nginx不用带上签名那么长一串路径,这里配置下环境变量
#运行
vim /etc/profile
#在最后面加入:
export NGINX_HOME=/usr/local/nginx
export PATH=$PATH:$NGINX_HOME/sbin
#然后运行:让配置文件生效
source /etc/profile
# 检验是否成功,输入下面命令是否有版本号输出
nginx -v
3. 快捷命令
有了上面配置完环境变量后,操作Nginx后非常简单
# 启动命令
nginx
# 停止命令
nginx -s stop
nginx -s quit
# 重新加载命令
nginx -s reload