# 一些常用的 linux 命令汇总

# Centos 安装 nginx

  1. 安装 Nginx yum 安装 nginx 非常简单,就输入一条命令即可。
$ sudo yum -y install nginx   # 安装 nginx
$ sudo yum remove nginx  # 卸载 nginx

使用 yum 进行 Nginx 安装时,Nginx 配置文件在 /etc/nginx 目录下。

默认路径

  • Nginx 配置路径:/etc/nginx/
  • PID 目录:/var/run/nginx.pid
  • 错误日志:/var/log/nginx/error.log
  • 访问日志:/var/log/nginx/access.log
  • 默认站点目录:/usr/share/nginx/html
  1. 配置 Nginx 服务
$ sudo systemctl enable nginx # 设置开机启动
$ sudo systemctl disable nginx # 禁止开机启动
$ sudo service nginx start # 启动 nginx 服务
$ sudo service nginx stop # 停止 nginx 服务
$ sudo service nginx restart # 重启 nginx 服务
$ sudo service nginx reload # 重新加载配置,一般是在修改过 nginx 配置文件时使用。

# Centos 安装 docker

# 安装最新版node
curl --silent --location https://rpm.nodesource.com/setup_10.x | sudo bash
yum -y install nodejs
# 安装docer
yum -y install docker
# 查看docker版本
docker version
# 启动docker服务
service docker start
# 列出docker的image
docker image ls

# docker 安装 nginx

【参考】 (opens new window)

docker pull nginx
#使用命令查看拉取到的镜像
docker images
#  运行Nginx镜像
docker run -d -p 80:80 --name nginx nginx
# 运行上面的命令就可以使用ip地址进行访问了

参数说明

  • -d 以守护模式运行镜像,也就是后台运行
  • -p 宿主机端口映射的镜像端口,左边是宿主机端口,右边是镜像端口,80 是 Nginx 访问端口
  • --name 给容器起一个唯一的别名

# 配置 Nginx

  • 我们首先需要在宿主机创建用于存放 nginx 日志、配置文件和相关静态资源的目录,并将其挂载到容器内对应路径。
  • 后续更新我们只需要更改宿主机目录下的配置文件或者静态文件就可以更新容器内资源,这样可以确保容器挂掉只需要重新启动一个容器挂载上数据去就完美无缺的还原,这也是容器轻量快速方便的原因。不只是 nginx 容器,其余的像 mysql 容器也一定要记得挂载/data 数据文件,防止容器宕掉丢失数据。

mkdir -p /home/service/nginx/log
mkdir -p /home/service/nginx/conf
mkdir -p /home/service/nginx/conf.d
mkdir -p /home/service/nginx/static
mkdir -p /home/service/nginx/ssl

然后从 Nginx 容器中复制一份配置文件到宿主机刚刚创建的 conf 目录

# 复制配置文件
docker cp nginx:/etc/nginx/nginx.conf /home/service/nginx/conf/nginx.conf
# 由于nginx.conf文件中依赖了/etc/nginx/conf.d/,所以也需要将其复制出来
docker cp nginx:/etc/nginx/conf.d/default.conf /home/service/nginx/conf.d/default.conf

# 还记得我们前面访问nginx的时候那个页面吗?是的,那个页面也要复制到宿主机;/home/service/nginx/static/index.html就是我们的首页

docker cp nginx:/usr/share/nginx/html/index.html /home/service/nginx/static/index.html

修改 nginx.conf 配置文件

user  nginx;
worker_processes  1;
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
worker_rlimit_nofile 65535;

events {
    use epoll;
    worker_connections 65535;
}


http {
    include /etc/nginx/mime.types;
    default_type application/octet-stream;
    charset utf-8;
    keepalive_timeout 60;
    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;
    server {
        listen 80;
        server_name  www.roes.top;
        location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm;
        }
    }
    include /etc/nginx/conf.d/*.conf;
}


停止上次的 nginx 容器并删除容器

docker stop nginx
docker rm nginx

重新启动一个镜像

# -v的意思就是把宿主机目录挂载到冒号后面的容器目录

docker run -p 443:443 -p 80:80 --name nginx \
    -v /home/service/nginx/static:/usr/share/nginx/html  \
    -v /home/service/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
    -v /home/service/nginx/log:/var/log/nginx  \
    -v /home/service/nginx/conf.d:/etc/nginx/conf.d \
    -v /home/service/nginx/ssl:/ssl \
    -d nginx

如果有 https,则修改 nginx.conf

user  nginx;
worker_processes  1;
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
worker_rlimit_nofile 65535;

events {
    use epoll;
    worker_connections 65535;
}


http {
    include /etc/nginx/mime.types;
    default_type application/octet-stream;
    charset utf-8;
    server_names_hash_bucket_size 128;
    client_header_buffer_size 2k;
    large_client_header_buffers 4 4k;
    client_max_body_size 8m;
    sendfile on;
    tcp_nopush on;
    keepalive_timeout 60;
    open_file_cache max=204800 inactive=20s;
    open_file_cache_min_uses 1;
    open_file_cache_valid 30s;
    tcp_nodelay on;
    gzip on;
    gzip_min_length 1k;
    gzip_buffers 4 16k;
    gzip_http_version 1.0;
    gzip_comp_level 2;
    gzip_types text/plain application/x-javascript text/css application/xml;
    gzip_vary on;
    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;
    server {
        listen  80;
        server_name   www.example.com ;
        rewrite ^(.*)$  https://$host$1 permanent;
    }
    server {
        #监听的端口号
        listen  443 ssl;
        server_name  www.example.com ;
        ssl_certificate      /ssl/1492507_www.example.com.pem;# 换成自己的地址
        ssl_certificate_key  /ssl/1492507_www.example.com.key;# 换成自己的地址
        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;
        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;
        location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm;
        }
    }
    include /etc/nginx/conf.d/*.conf;
}

更改完成,重启容器

注意:这里更新的是宿主机上的 nginx.conf

然后进入容器重启 nginx 即可 也可以不用进入容器重启,直接重启容器也可以 docker restart nginx

或者:

docker exec -it nginx /bin/bash
nginx -s reload
【未经作者允许禁止转载】 Last Updated: 5/17/2022, 7:37:18 AM