Mrli
别装作很努力,
因为结局不会陪你演戏。
Contacts:
QQ博客园

2019年8月23号运维笔记

2019/11/26 编程笔记 运维
Word count: 1,492 | Reading time: 6min

2019年8月23号运维笔记

docker

docker stop containerID,以后再重新启动时报错

1
Error response from daemon: driver failed programming external connectivity on endpoint app (3c0c01ac6b42b7a420644fc2b4debfbbcc0e1d2e74e6294155c28aca82f794c4):  (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 12345 -j DNAT --to-destination 172.17.0.2:80 ! -i docker0: iptables: No chain/target/match by that name.

A: 重启docker即可:systemctl restart docker

再开启你的容器: docker run xxxxdocker start xxx

查看docker容器的运行日志

docker logs containerID

docker端口映射到宿主机后外网仍无法访问容器的web

A:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 解决办法:
$ sudo vi /etc/sysctl.conf
或者
$ sudo vi /usr/lib/sysctl.d/00-system.conf
# 添加如下代码:
net.ipv4.ip_forward=1

重启network服务
$ sudo systemctl restart network

查看是否修改成功
$ sudo sysctl net.ipv4.ip_forward

#如果返回为“net.ipv4.ip_forward = 1”则表示成功了

nginx

查看nginx安装路径

ps -ef | grep nginx

查看nginx日志

systemctl status nginx.service

journalctl -xe

指定运行配置文件

直接运行nginx可执行文件即可启动,nginx会自动读取配置文件目录下的“nginx.conf”配置文件,也可以在后面接“-c”参数来指定配置文件:

/usr/sbin/nginx -c /etc/nginx/sites-enabled/nginx.conf

校验配置文件是否正确

由于nginx的配置文件比较复杂容易出错,修改配置后可以用“-t”参数来校验配置文件是否正确:

1
2
nginx -t    # 校验默认的配置文件
nginx -t -c /path/to/configfile # 校验指定配置文件

了解日志管理

我们查看nginx安装目录下(/var/log/nginx)有个logs,包含了三个文件 “access.logerror.lognginx.pid”。

当然,日志配置肯定也是通过nginx.conf配置文件来进行配置的 ,那我先来看配置文件是怎么写的。

  • access_log logs/access.log main这个是指access.log日志用main格式来显示。
  • error_log logs/error.log error

main格式是什么?mian格式是我们已经定义好了的一种各种,并取个名字便于引用。

默认的main格式中具体用了哪些选项来记录日志呢?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$remote_addr, $http_x_forwarded_for 记录客户端IP地址
$remote_user 记录客户端用户名称
$request 记录请求的URL和HTTP协议
$status 记录请求状态
$body_bytes_sent 发送给客户端的字节数,不包括响应头的大小; 该变量与Apache模块mod_log_config里的“%B”参数兼容。
$bytes_sent 发送给客户端的总字节数。
$connection 连接的序列号。
$connection_requests 当前通过一个连接获得的请求数量。
$msec 日志写入时间。单位为秒,精度是毫秒。
$pipe 如果请求是通过HTTP流水线(pipelined)发送,pipe值为“p”,否则为“.”。
$http_referer 记录从哪个页面链接访问过来的
$http_user_agent 记录客户端浏览器相关信息
$request_length 请求的长度(包括请求行,请求头和请求正文)。
$request_time 请求处理时间,单位为秒,精度毫秒; 从读入客户端的第一个字节开始,直到把最后一个字符发送给客户端后进行日志写入为止。
$time_iso8601 ISO8601标准格式下的本地时间。
$time_local 通用日志格式下的本地时间。

nginx.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
//该文件是存放到nginx安装目录下conf文件夹中

//全局区

//代表着当前有一个工作的子进程,可以自行修改,但是太多了无益因为会争夺cpu资源。一般最多设置成cpu数*核数
worker_processes 1;

//一般配置nginx的连接特性
events {
//这里是指一个子进程最大允许连接1024个连接
worker_connections 1024;
}

//这里是配置http服务器的主要段
http {

include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;


//这里配置的是日志的显示格式
#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 logs/access.log main;


//这里是配置虚拟主机段
server {
listen 80;//监听的端口
server_name localhost;//监听访问地址

#charset koi8-r;

#access_log logs/host.access.log main;

//定位,把特殊的文件或者路径再次定位
location / {
root html;//定位的目录,默认是ngxin安装目录下的html文件夹中
index index.html index.htm;//定位的具体文件
}

nginx日志分析

分析截止目前为止访问量最高的IP排20名。

awk'{print $1}' /usr/local/nginx/logs/access.log |sort | uniq-c I|sort -nr

分析从早上9点至中午12点总的访问量。

sed-n"/2016:09:00/,/2016:12:00/" paccess_20161121.log

分析上一秒的访问请求数。

sed -n"/2016:09:00:00/" paccess_20161121.log

https签名:https://www.jianshu.com/p/0d455c7a9326

Q:nginx和uwsgi区别

nginx的作用:
1.反向代理,可以拦截一些web攻击,保护后端的web服务器
2.负载均衡,根据轮询算法,分配请求到多节点web服务器
3.缓存静态资源,加快访问速度,释放web服务器的内存占用,专项专用

uWSGI的适用:
1.单节点服务器的简易部署
2.轻量级,好部署

Q:已知一个使用nginx配置的web服务器的域名为www.my.com监听80端口,假设在服务器的/var/www/html这个目录下面有静态文件index.html,那么在配置文件其它部分相同的情况下,分别使用下面两种配置:

1
2
3
4
5
6
7
8
Location /abc {
root /var/www/html;
index index.html;
}
location/abc {
alias /var/ww/html/;
index index.html;
}

访问http://www.my.com/abc分别会有什么结果?

A:

  • root 的为/var/www/html/abc/index.html
  • alias的为/var/www/html/index.html

Q:所以使用浏览器访问的话这两种配置会有什么区别?

A:root的为404,alias的为200.

注:如果通过两个路径都能访问到的话,那无论哪个配置都是200

Author: Mrli

Link: https://nymrli.top/2019/11/26/2019年8月23号运维笔记/

Copyright: All articles in this blog are licensed under CC BY-NC-SA 3.0 unless stating additionally.

< PreviousPost
PIL的Image笔记
NextPost >
app测试
CATALOG
  1. 1. 2019年8月23号运维笔记
    1. 1.1. docker
      1. 1.1.1. docker stop containerID,以后再重新启动时报错
      2. 1.1.2. docker端口映射到宿主机后外网仍无法访问容器的web
    2. 1.2. nginx
      1. 1.2.1. 查看nginx安装路径
    3. 1.3. 查看nginx日志
      1. 1.3.1. 指定运行配置文件
    4. 1.4. 校验配置文件是否正确
    5. 1.5. 了解日志管理
    6. 1.6. nginx日志分析
    7. 1.7. Q:nginx和uwsgi区别