网络服务部署安装
yum 官方源安装(目录结构会比较标准/是会下载最稳定版)
第一个历程:更新yum下载源
vim /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
module_hotfixes=true
第二个历程:
[root@web01 ~]# yum install -y nginx
编译安装nginx
第一个历程:需要解决依赖问题
yum install -y pcre-devel openssl-devel
pcre-devel 可以实现兼容perl语言正则表达式
openssl-devel 可以实现基于HTTPS协议方式进行数据传输
第二个历程:创建服务进程管理用户
useradd -M -s /sbin/nologin nginx
第三个历程:下载编译安装源码包
wget xxxxxx(包的网址)
tar xf nginx-xxxxxx.tar.gz
cd nginx-xxxxx/
第四个历程:进行编译安装
编译:
make
安装:
make install
第五个历程:启动nginx服务程序
网站服务目录结构信息
[root@web01 ~]# rpm -ql nginx
/etc/logrotate.d/nginx --保存日志切割文件的
---------------------------------------------
补充:系统默认日志切割程序logrotate服务配置信息
logrotate服务使用方法:
第一个历程:查看logrotate服务配置信息
/etc/logrotate.conf
weekly ---日志切割周期时间(每天 每小时 每周 每月)
rotate 4 ---最多保留几份切割后的日志文件
create ---再次创建新的日志文件信息
dateext ---日志切割后的文件以时间信息作为后缀
compress ---是否压缩切割后的日志信息
include /etc/logrotate.d ---单独加载额外服务日志切割配置文件
第二个历程:查看不同服务日志切割配置:
[root@web01 ~]# cd /etc/logrotate.d/
[root@web01 logrotate.d]# cat nginx
/var/log/nginx/*.log {
daily
missingok
rotate 52
compress
delaycompress
notifempty
create 640 nginx adm
sharedscripts
postrotate
if [ -f /var/run/nginx.pid ]; then
kill -USR1 `cat /var/run/nginx.pid`
fi
endscript
}
=============================================================
如果是编译安装,默认是没有切割处理的
需要手动对服务日志做切割处理---定时任务
定时时间:0 0 * * *
任务信息:sh nginx_cut.sh &>/dev/null
#!/bin/bash
mv /var/log/nginx/www_access.log /var/log/nginx/www_access_$(date_%F_%H).log
systemctl restart nginx
问题:为什么切割日志后,需要重启服务程序
原日志文件inode信息在被服务进程占用着,需要重启服务解除原有占用,让服务进程识别新的日志文件(识别新文件的inode)
==============================================================
/etc/nginx --保存nginx服务配置文件
/etc/nginx/conf.d
/etc/nginx/conf.d/default.conf
/etc/nginx/fastcgi_params
/etc/nginx/mime.types
/etc/nginx/modules
/etc/nginx/nginx.conf
/etc/nginx/scgi_params
/etc/nginx/uwsgi_params
/usr/lib/systemd/system/nginx-debug.service ---保存nginx服务启动文件信息
/usr/lib/systemd/system/nginx.service
/usr/lib64/nginx ---保存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 ---保存nginx服务命令信息
命令参数介绍:
-V : show version and configure options then exit
显示nginx服务版本/显示默认配置信息
-t : test configuration and exit
测试配置文件语法信息是否符合要求
-s signal : send signal to a master process: stop, quit, reopen, reload
控制服务运行状态 nginx -s stop 停止服务程序 nginx -s reload 平滑重启nginx
/usr/sbin/nginx-debug
/usr/share/doc/nginx-1.20.2 ---nginx服务相关文档信息
/usr/share/doc/nginx-1.20.2/COPYRIGHT
/usr/share/man/man8/nginx.8.gz
/usr/share/nginx
/usr/share/nginx/html ---nginx服务代码存放的站点目录
/usr/share/nginx/html/50x.html
/usr/share/nginx/html/index.html
/var/cache/nginx ---缓存数据保存目录信息
/var/log/nginx ---日志文件保存路径
网站服务配置信息介绍
nginx服务主配置文件:
/etc/nginx/nginx.conf
[root@web01 logrotate.d]# grep -Ev "^$|#" /etc/nginx/nginx.conf
user nginx; ---指定Nginx服务worker进程用户
master进程:控制服务运行状态
worker进程:用于处理用户请求
worker_processes auto; ---指定worker进程数量
worker数量<=服务器总核心数
error_log /var/log/nginx/error.log notice; ---定义错误日志保存路径/以及错误日志级别
pid /var/run/nginx.pid; ---定义服务程序进程pid文件(master进程数值)保存路径
events {
worker_connections 1024; ---定义worker进程并发最大连接
并发连接总数=worker_connection*worker_processes<=系统打开文件数据
如何优化增加系统打开文件数限制
------------------------
永久增加打开文件数方法(重启生效)
/etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
-------------------------
}
http {
include /etc/nginx/mime.types; ---包含加载其他的文件信息
mime.types 媒体资源类型文件,可以指定nginx服务可以处理静态资源
可以访问静态资源,是会显示在页面上
不可以访问动态资源,会默认进行下载处理
default_type application/octet-stream; ---定义默认识别文件类型
xxx.html 解析里面代码内容信息
xxx.txt xxx.doc xxx.pdf 直接显示内容信息
xxx 采用默认方式处理 现在所默认的是会将信息默认下载
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;
keepalive_timeout 65; ---连接的超时时间 可以避免空闲连接占用服务资源
include /etc/nginx/conf.d/*.conf; ---加载其他网站配置信息
}
服务无法正常启动95%原因 配置文件有错误
PS:避免nginx配置文件出错注意点:
- 配置文件指令信息请放在正确区域中
- 配置文件区域花括号信息必须成对出现
- 配置文件指令信息后面必须有分号(英文)
nginx服务主配置文件: nginx.conf
nginx服务扩展配置文件:cof.d/xxx.conf
网站服务多虚拟主机访问
第一个历程:创建多个网站配置文件
cd /etc/nginx/conf.d/
cp www.conf bbs.conf
cp www.conf blog.conf
[root@web01 conf.d]cat www.conf
server {
listen 80;
server_name www.oldboy.com;
location / {
root /html/www;
index index.hyml index.htm;
}
}
[root@web01 conf.d]cat bbs.conf
server {
listen 80;
server_name bbs.oldboy.com;
location / {
root /html/bbs;
index index.hyml index.htm;
}
}
[root@web01 conf.d]cat blog.conf
server {
listen 80;
server_name blog.oldboy.com;
location / {
root /html/blog;
index index.hyml index.htm;
}
}
第二个历程:创建站点目录,并上传网站代码信息
mkdir /html/{www.bbs.blog} -p
上传代码信息:代码资源
网站服务客户端访问方式
基于域名方式进行访问:需要进行域名解析配置(本地)
基于端口方式进行访问:需要配置监听地址信息 负载均衡/反向代理
基于地址方式进行访问:需要配置监听地址信息 用于企业内部访问页面信息(了解)
PS:如果监听地址配置改动了,必须重启服务程序,不能平滑重启
网站服务日志文件部署配置
网站服务有两个日志文件:
用户访问网站相关:access.log 访问日志
服务运行状态相关:error.log 错误日志 错误级别
错误级别:
debug (调试级别--信息显示会更全)
info (信息级别--提示输出信息)
notice (通知级别)
warn (警告级别) ***
error (错误级别) ***
crit (严重级别)
alert (极其严重的错误)
emerg (灾难级别)
access.log 可以自定义日志格式信息
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
不同网站服务日志配置
[root@web01 conf.d]cat www.conf
server {
listen 80;
server_name www.oldboy.com;
error_log /var/log/nginx/error_www.log notice;
access_log /var/log/nginx/access_www.log main;
location / {
root /html/www;
index index.hyml index.htm;
}
}
访问日志信息介绍
$remote_addr --记录访问服务端客户地址信息
$remote_user --记录登录网站用户信息
$time_local --用户访问网站时间信息
$request --请求行信息
$status --网站返回给用户状态码
$body_bytes_sent --访问资源消耗流量信息
$http_referer --是哪个网站给我引流过来资源(记录盗链信息)
$http_user_agent --记录用户浏览器客户端信息
$http_x_forwarded_for
网站服务实现数据共享功能
----yum仓库
第一个历程:需要创建共享目录/存放资源信息
[root@web01 nginx]# mkdir /html/data
[root@web01 nginx]# cd /html/data/
[root@web01 data]# ll
总用量 0
[root@web01 data]# mkdir 运维资料数据
[root@web01 data]# mkdir 开发资料数据
[root@web01 data]# mkdir 资料数据
[root@web01 data]# echo 开发资源 >开发资料数据/data.txt
[root@web01 data]# echo 网络资源 >网络资料数据/data.txt
[root@web01 data]# echo 运维资源 >运维资料数据/data.txt
第二个历程:编写配置共享资源网站文件
PS:页面显示403错误状态码:
- 用户被禁止访问了
- 用户访问网站没有首页文件存在
[root@web01 conf.d]# cat data.conf
server {
listen 80;
server_name data.nana.com;
error_log /var/log/nginx/error_data.log notice;
access_log /var/log/nginx/access_data.log main;
location / {
root /html/data;
autoindex on; ---在没有首页文件存在时,将站点目录下数据信息全部展现在页面上
charset utf-8; ---设置字符集
}
网站服务安全访问控制功能
[root@web01 conf.d]# cat data.conf
server {
listen 80;
server_name data.nana.com;
error_log /var/log/nginx/error_data.log notice;
access_log /var/log/nginx/access_data.log main;
location / {
root /html/data;
autoindex on;
charset utf-8;
}
location /隐私文件/ {
allow 10.0.0.1;
allow 10.0.0.2;
deny all;
}
实现网站页面访问认证功能
第一个历程:生成服务端密码文件
#下载工具
[root@web01 conf.d]# yum install -y httpd-tools
#创建新的密码文件:
[root@web01 conf.d]# htpasswd -bc /etc/nginx/password.txt oldboy 123456
Adding password for user oldboy
#密码文件添加用户信息
[root@web01 conf.d]# htpasswd -b /etc/nginx/password.txt oldgirl 123456
#删除用户信息
[root@web01 conf.d]# htpasswd -D /etc/nginx/password.txt oldgirl
第二个历程:编写配置文件信息实现
[root@web01 conf.d]# cat data.conf
server {
listen 80;
server_name data.nana.com;
error_log /var/log/nginx/error_data.log notice;
access_log /var/log/nginx/access_data.log main;
location / {
root /html/data;
autoindex on;
charset utf-8;
}
location /隐私文件/ {
root /html/data;
autoindex on;
charset utf-8;
auth_basic "查看隐私文件";
auth_basic_user_file /etc/nginx/password.txt;
}
网络服务访问状态检测信息
第一个历程:开启nginx服务状态信息检测功能
[root@web01 conf.d]# cat default.conf
server {
listen 80;
server_name www.nana.com;
#access_log /var/log/nginx/host.access.log main;
location / {
root /html/www;
index index.html index.htm;
}
location = /nginx_status {
stub_status;
}
打开网址
http://www.nana.com/nginx_status
出现以下信息
Active connections: 1
server accepts handled requests
21 21 54
Reading: 0 Writing: 1 Waiting: 0
Active connections ---网站服务并发访问量
accepts ---服务运行开始,总的接收连接请求数量
handled ---服务运行开始,总得处理连接请求数量
requests ---客户端总的请求数据包数量
Reading ---服务端读取HTTP报文数量 服务器负载压力过大时
Writing ---服务端响应HTTP报文数量
Waiting ---等待处理HTTP请求数量
epoll模型: 异步队列处理机制
服务器负载压力过大 nginx服务处理性能降低 5000 队列
思考:以上数据信息如何单独调取出来
[root@web01 conf.d]# vi /etc/hosts
[root@web01 conf.d]# curl www.nana.com/nginx_status
Active connections: 1
server accepts handled requests
22 22 55
Reading: 0 Writing: 1 Waiting: 0