欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 名人名企 > docker版nginx快速部署脚本

docker版nginx快速部署脚本

2024/10/25 2:25:29 来源:https://blog.csdn.net/shanshanqwertyuiop/article/details/141855484  浏览:    关键词:docker版nginx快速部署脚本

文章目录

  • 应用场景
  • 拉取Nginx镜像
  • 部署脚本

应用场景

容器版nginx默认安装后需要把相关配置文件映射到宿主机进行配置更改,太麻烦,写个脚本自动映射出来方便些,包括包括映射nginx.conf配置文件、default.conf配置文件、放置网页或数据目录的html文件夹、日志文件夹。

拉取Nginx镜像

docker pull nginx

部署脚本

  • 当前目录新建nginx.sh文件,填入下面的脚本内容,赋予执行权限chmod +x nginx.sh,会在当前目录新建nginx_conf_site文件夹,配置文件及网站文件夹会映射到该文件夹。
  • 如果不是最新版的nginx,nginx_install()函数docker运行脚本里加上nginx的版本号。
#!/bin/bash
# 获取脚本当前目录
current_dir=$(pwd)
# 定义文件夹名称,用来存储配置文件、日志、以及需要发布的文件或网站。
nginx_dir=nginx_conf_site# 初始化文件夹,$1为函数传的第一个参数。用法initial_dir() $nginx_dir
initial_dir(){echo -e "\033[31m 将在当前目录新建$1目录用于存储nginx配置文件和数据! \033[37m"mkdir -p ./$1/conf/conf.d/mkdir -p ./$1/conf/log/mkdir -p ./$1/nginx_www
}# 写nginx.conf默认内容,来自容器的该文件/etc/nginx/nginx.conf。S1参数为$nginx_dir目录,即当前脚本所在目录下新建的用于存储nginx配置文件和数据的目录。函数用法write_nginx_conf $nginx_dir
write_nginx_conf(){
cat > ./$1/conf/nginx.conf <<EOFuser  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;include /etc/nginx/conf.d/*.conf;}
EOF
}# 写default.conf默认内容,来自容器的该文件/etc/nginx/conf.d/default.conf。$1为脚本相同目录新建的文件$nginx_dir变量值。用法write_nginx_default() $nginx_dir
write_nginx_default(){
cat > ./$1/conf/conf.d/default.conf <<EOFserver {listen       80;listen  [::]:80;server_name  localhost;#access_log  /var/log/nginx/host.access.log  main;location / {root   /usr/share/nginx/html;index  index.html index.htm;}#error_page  404              /404.html;# redirect server error pages to the static page /50x.html#error_page   500 502 503 504  /50x.html;location = /50x.html {root   /usr/share/nginx/html;}# proxy the PHP scripts to Apache listening on 127.0.0.1:80##location ~ \.php$ {#    proxy_pass   http://127.0.0.1;#}# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000##location ~ \.php$ {#    root           html;#    fastcgi_pass   127.0.0.1:9000;#    fastcgi_index  index.php;#    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;#    include        fastcgi_params;#}# deny access to .htaccess files, if Apache's document root# concurs with nginx's one##location ~ /\.ht {#    deny  all;#}}
EOF
}# 安装nginx。函数用法nginx_install() $current_dir $nginx_dir
nginx_install(){# -v 映射的目录组装,$1为传参引用当前脚本所在目录$current_dir,$2为创建的用于存储Nginx配置文件和数据的目录$nginx_dirconf_d=$1/$2/conf/conf.d/conf_f=$1/$2/conf/nginx.confconf_log=$1/$2/conf/log/www=$1/$2/nginx_www/# 运行docker容器docker run -d \--restart=always \--privileged=true \-p 80:80 \--name some-nginx \-v $conf_d:/etc/nginx/conf.d/ \-v $conf_f:/etc/nginx/nginx.conf \-v $conf_log:/var/log/nginx/ \-v $www:/usr/share/nginx/html/ \nginx
}# 主函数,$1代表引用的第一个传参,用法main $nginx_dir	
main(){if test -e ./$1/conf/nginx.conf;thenecho 'nginx.conf文件已存在,请确保不存在同名的nginx容器,然后输入对应的数字选项进行安装。'echo '1.使用已有的nginx.conf配置文件进行安装。'echo '2.重新初始化nginx.conf配置文件进行安装。'echo '3.输入其他任意值退出安装。'read mynumberif [ "$mynumber" == "1" ]; thenecho "安装开始..."nginx_install $current_dir $nginx_direlif [ "$mynumber" == "2" ]; thenecho "初始化nginx.conf,开始安装..."write_nginx_conf $nginx_dirwrite_nginx_default $nginx_dirnginx_install $current_dir $nginx_direlseecho "退出!"fielseecho '开始安装...'initial_dir $nginx_dirwrite_nginx_conf $nginx_dirwrite_nginx_default $nginx_dirnginx_install $current_dir $nginx_dir	echo -e "\033[31m Done! \033[37m"fi
}main $nginx_dir

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com