一、前言
由于我们的项目中使用到了nginx,同时我们的nginx是通过docker镜像进行安装的,由于nginx出现了问题,需要重新安装。于是。。。
二、通过docker进行安装
docker pull nginx:latest
1.5.2 脚本文件
在/home/docker/script路径下创建一个脚本文件“nginx.sh”,内容为:
docker run -d \
--name nginx \
--net=host \
-v /home/docker/apps/nginx/www:/usr/share/nginx/html \
-v /home/docker/apps/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /home/docker/apps/nginx/logs:/var/log/nginx \
-v /home/docker/apps/nginx/conf.d:/etc/nginx/conf.d \
-v /home/docker/apps/nginx/cert:/etc/nginx/cert \
nginx
(注意:以上内容需注意linux中的特殊字符,可用vim编辑文件,去掉特殊字符,否则运行脚本文件时会报错;cert为安全证书相关,不需要时可以去掉)
nginx文件
1.在/home/docker/apps路径下创建“nginx”文件夹
2.在/home/docker/apps/nginx路径下分别创建“www”、 “logs”、 “conf”、 “conf.d”四个文件夹;”www”文件夹用于存放前端代码,“logs”文件夹用于存放日志,“conf”文件夹用于存放nginx总配置文件,“conf.d”用于存放项目配置文件;如需安全证书相关,还要创建“cert”文件夹。
3.nginx总配置文件:
在/home/docker/apps/nginx/conf路径下创建“nginx.conf”文件,作为nginx的总配置文件,内容为:
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
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;
client_max_body_size 1024m;
include /etc/nginx/conf.d/*.conf;
}
4.项目配置分文件
在/home/dokcer/apps/nginx/conf.d路径下创建“xxx.conf”文件,“xxx”为项目名,内容为:
#server
#{
## 80端口是http正常访问的接口
#listen 80;
#server_name XXX.com;
## 在这里,我做了https全加密处理,在访问http的时候自动跳转到https
#rewrite ^(.*) https://${server_name}$1 permanent;
#}
server {
# listen 自定义监听端口
listen 80;
#定义使用 访问域名
server_name localhost;
# 如需域名则配置如下
# 侦听443端口,这个是ssl访问端口
# listen 443 ssl;
# ssl_certificate /etc/nginx/cert/xxx.crt;
# ssl_certificate_key /etc/nginx/cert/安全私钥文件名;
location / {
root /var/nginx/html/xxx;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /404.html {
root error;
}
}
运行nginx
1.通过脚本文件nginx.sh运行,脚本文件的运行需授予权限,在文件目录下命令:
chmod 755 nginx.sh
2.运行脚本命令:./nginx.sh
nginx常用命令
1.启动: docker start nginx
2.重启: docker restart nginx
3.停止: docker stop nginx
三、但是问题来了
镜像在阿里云上不再维护了,已经搜不到
于是我就想通过其他服务器的容器制作一份镜像复制到现在的机器上
下面是一顿操作
# 提交当前运行的nginx容器为新镜像
docker commit nginx nginx:1.19.0
# 导出镜像为tar文件
docker save -o nginx.tar nginx
# 加载镜像
docker load -i nginx.tar
# 运行新容器,可以根据需要修改名字和端口
docker run -d --name nginx nginx
# 提交当前运行的nginx容器为新镜像
docker commit nginx nginx:1.19.0# 导出镜像为tar文件
docker save -o nginx.tar nginx# 加载镜像
docker load -i nginx.tar# 运行新容器,可以根据需要修改名字和端口
docker run -d --name nginx nginx
然后最好去启动镜像的时候,还是去找镜像源,然而源已经不复存在了,所以最终没有成功。
四、于是使用了替代方法,进行离线安装,不使用docker了
官网下载NGINX
官网地址:
http://nginx.org/en/download.html
最终成功,但是隐藏的风险是没法使用http2 可能还会存在其他未知漏洞。
具体安装步骤参考这篇博文
linux 安装 nginx - 绯颜旧雨 - 博客园