常用的网站服务软件

处理动态资源的语言

  • PHP
  • Tomcat(java)
  • python

nginx服务特点

主机名称和IP地址规划

服务 主机名 eth0网卡IP eth1网卡IP 软件
防火墙服务器 firewalld 10.0.0.81 172.16.1.81 firewalld
负载均衡服务器 lb01 10.0.0.5 172.16.1.5 nginx,keepalived
负载均衡服务器 lb02 10.0.0.6 172.16.1.6 nginx,keepalived
web服务器 web01 10.0.0.7 172.16.1.7 nginx
web服务器 web02 10.0.0.8 172.16.1.8 nginx
web服务器 web03 10.0.0.9 172.16.1.9 nginx
存储服务器 nfs01 10.0.0.31 172.16.1.31 nfs
备份服务器 backup 10.0.0.41 172.16.1.41 rsync
数据库服务器 db01 10.0.0.51 172.16.1.51 mysql,mariaDB
批量管理服务器 m01 10.0.0.61 172.16.1.61 ansible
跳板机服务器 jumpserver 10.0.0.71 172.16.1.71 jumpserver
监控服务器 zabbix 10.0.0.72 172.16.1.72 zabbix
缓存服务器 暂无 暂无 暂无 暂无
  1. 支持高并发,消耗内存资源少
  2. 具有多种功能,web服务,负载均衡,缓存
  3. 在多种系统平台都可以进行部署
  4. nginx实现网络通讯时使用的时异步网络IO模型 epoll模型(apache -- select模型)

apache对比nginx.png

nginx服务安装部署

yum安装

使用官方yum源进行安装(推荐)

  • 安装的是最新版本
  • 软件目录结构比较标准

非官方yum源进行安装

  • 安装的不是最新版
  • 目录结构会发生变化

官方yum源安装步骤

  • 创建该文件后使用yum install -y nginx
vi /etc/yum.repos.d/nginx.repo

[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
  • 启动nginx和设置开机启动
systemctl start nginx
systemctl enable nginx

编译安装

  • 下载安装包,解压
wget http://nginx.org/download/nginx-1.16.0.tar.gz
tar -xf nginx-1.16.0.tar.gz
  • 进入目录,进行配置操作
#进入解压后的目录
cd nginx-1.16.0.tar.gz
#--help 可以查看参数
./configure --help
#配置参数后的命令
./configure --prefix=/opt/demo/nginx --add-module=/home/fastdfs-nginx-module/src  --with-http_stub_status_module --with-http_ssl_module

参数说明

  • --prefix : 用于指定nginx编译后的安装目录
  • --add-module : 为添加的第三方模块,此次添加了fdfs的nginx模块
  • --with..._module : 表示启用的nginx模块,如此处启用了http_ssl_module模块

可能出现的错误

  • ./configure: error: the HTTP rewrite module requires the PCRE library.
  • 解决方法:yum install -y pcre-devel
  • SSL modules require the OpenSSL library.
  • 解决方法:yum install -y openssl-devel

查看软件的目录结构

rpm -ql nginx.png

[root@web01 ~]# rpm -ql nginx
/etc/logrotate.d/nginx
/etc/nginx
/etc/nginx/conf.d
/etc/nginx/conf.d/default.conf
/etc/nginx/fastcgi_params
/etc/nginx/koi-utf
/etc/nginx/koi-win
/etc/nginx/mime.types
/etc/nginx/modules
/etc/nginx/nginx.conf
/etc/nginx/scgi_params
/etc/nginx/uwsgi_params
/etc/nginx/win-utf
/etc/sysconfig/nginx
/etc/sysconfig/nginx-debug
/usr/lib/systemd/system/nginx-debug.service
/usr/lib/systemd/system/nginx.service
/usr/lib64/nginx
/usr/lib64/nginx/modules
/usr/libexec/initscripts/legacy-actions/nginx
/usr/libexec/initscripts/legacy-actions/nginx/check-reload
/usr/libexec/initscripts/legacy-actions/nginx/upgrade
/usr/sbin/nginx
/usr/sbin/nginx-debug
/usr/share/doc/nginx-1.16.1
/usr/share/doc/nginx-1.16.1/COPYRIGHT
/usr/share/man/man8/nginx.8.gz
/usr/share/nginx
/usr/share/nginx/html
/usr/share/nginx/html/50x.html
/usr/share/nginx/html/index.html
/var/cache/nginx
/var/log/nginx

总结

  • /etc/nginx : 配置文件
  • /var/log/nginx : 日志文件
  • /usr/bin/nginx : 命令文件
  • /usr/share/nginx/html : 站点目录

nginx日志文件定时切割处理

  • 方法一 利用脚本实现切割
#!/bin/bash


#重命名文件
mv /var/log/nginx/access.log  /var/log/nginx/access_$(date +%F).log
#重启nginx
systemctl restart nginx
  • 方法二 利用专用文件切割程序--logrotate
vi /etc/logrotate.conf

# see "man logrotate" for details
# rotate log files weekly
#定义默认日志切割的周期
weekly

# keep 4 weeks worth of backlogs
#定义只保留几个切割后的文件
rotate 4

# create new (empty) log files after rotating old ones
#创建出一个相同的源文件
create

# use date as a suffix of the rotated file
#定义角标(扩展名称信息)
dateext

# uncomment this if you want your log files compressed
#是否对切割后的文件进行压缩处理
#compress

# RPM packages drop log rotation information into this directory
#加载包含/etc/logrotate.d/目录中文件配置
include /etc/logrotate.d

# no packages own wtmp and btmp -- we'll rotate them here
#单独对某个文件进行切割配置
/var/log/wtmp {
    monthly
    create 0664 root utmp
        minsize 1M
    rotate 1
}

/var/log/btmp {
    missingok
    monthly
    create 0600 root utmp
    rotate 1
}

# system-specific logs may be also be configured here.

nginx服务配置文件

  • 主配置文件 : /etc/nginx/nginx.conf
#定义worker进程管理的用户
user  nginx;
#定义有几个worker进程
worker_processes  1;
#定义错误日志路径信息
error_log  /var/log/nginx/error.log warn;
#定义pid文件路径信息
pid        /var/run/nginx.pid;
#一个worker进程可以同时接收1024访问请求
events {
    worker_connections  1024;
}
http {
#加载一个配置文件
    include       /etc/nginx/mime.types;
#指定默认识别文件类型
    default_type  application/octet-stream;
#定义日志的格式
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
#指定日志路径
    access_log  /var/log/nginx/access.log  main;
    sendfile        on;
    #tcp_nopush     on;
#超时时间
    keepalive_timeout  65;
    #gzip  on;
#加载名称匹配的配置文件
    include /etc/nginx/conf.d/*.conf;
}

nginx的进程

  • master process : 主进程 管理服务是否能够正常运行
  • worker process : 工作进程 处理用户的访问请求
[root@web03 ~]# ps -ef|grep nginx
root       6486      1  0 19:05 ?        00:00:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
nginx      6487   6486  0 19:05 ?        00:00:00 nginx: worker process
root       7094   6353  0 19:25 pts/0    00:00:00 grep --color=auto nginx
  • 扩展配置(虚拟主机配置文件) : /etc/nginx/conf.d/default.conf
server {
#监听端口
    listen       80;
#网站域名
    server_name  localhost;
    location / {
#站点目录位置
        root   /usr/share/nginx/html;
#首页文件
        index  index.html index.htm;
    }
#错误页面信息
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}