Java最新基于Docker的Nginx部署教程_如何使用docker部署nginx,Java开发社招面试解答之性能优化

独家面经总结,超级精彩

本人面试腾讯,阿里,百度等企业总结下来的面试经历,都是真实的,分享给大家!

image

image

image

image

Java面试准备

准确的说这里又分为两部分:

  1. Java刷题
  2. 算法刷题

Java刷题:此份文档详细记录了千道面试题与详解;

image

image

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

创建配置目录

mkdir -p /data/nginx/conf

创建日志目录

mkdir -p /data/nginx/log

创建前端显示目录

mkdir -p /data/nginx/html
#对nginx本地文件进行递归赋权
chmod -R 755 /data/nginx


如下图


![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/9f227d8d9da549769fa86c0b241b2f14.png#pic_center)


#### 部署Nginx容器


##### 1.生成容器



先简单启动容器

docker run -p 80:80 --name nginx -d nginx:1.22.0

进入容器内部

docker exec -it 容器id /bin/bash


##### 2.复制容器配置到宿主机



将容器nginx.conf文件复制到宿主机

docker cp nginx:/etc/nginx/nginx.conf /data/nginx/conf/nginx.conf

将容器conf.d文件夹下内容复制到宿主机

docker cp nginx:/etc/nginx/conf.d /data/nginx/conf/conf.d

将容器中的html文件夹复制到宿主机

docker cp nginx:/usr/share/nginx/html/index.html /data/nginx/html
docker cp nginx:/usr/share/nginx/html/50x.html /data/nginx/html


##### 3.重启容器



使用数据卷重启nginx容器

docker run -p 80:80 --name nginx -v /data/nginx/conf/nginx.conf:/etc/nginx/conf/nginx.conf -v /data/nginx/conf/conf.d:/etc/nginx/conf.d -v /data/nginx/log:/var/log/nginx -v /data/nginx/html:/usr/share/nginx/html -d nginx:1.22.0


查看容器是否启动成功


![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/5d9b97315919430dbae9b5d1a62b6237.png#pic_center)


##### 4.测试验证


访问服务器ip:80端口(请先保证防火墙的端口已经打开,或者已经关闭),如下图所示,则安装成功。


![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/90f4f12cceb54488b58ebbf950b05d2b.png#pic_center)


##### 5.Nginx配置


进入本地宿主机配置目录,由于我们启用的是include模式,所以在内部创建了conf.d目录


![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/3f3b3886d95c4a3b99698687bfa772f3.png#pic_center)


![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/797e8bb7b0f149e3b7c1647bc1937aaf.png#pic_center)


我们设置一个简单测试的配置,默认只有一个`default.conf`配置文件,如果有其他配置需要可以在conf.d目录下继续添加配置,我们在这里增加一个`mydoc.conf`的配置文件


![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/a2b49dffb7624f3daefbdd5f3dfd750c.png#pic_center)


**配置mydoc.conf**



server {
listen 8001;
listen [::]:8001;
server_name localhost;

location / {
    root   /usr/share/nginx/html/mydoc;
    index  index.html index.htm;
}

}


**配置default.conf**



server {
listen 80;
listen [::]:80;
server_name localhost;

#access_log  /var/log/nginx/host.access.log  main;

location / {
    root   /usr/share/nginx/html/home;
    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/home;
}

# 配置mydoc的测试代理
location /mydoc {
    proxy_pass   http://127.0.0.1:8001/;
	proxy_set_header Host $host;
 }



# 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/mydoc;
#    #fastcgi_pass   127.0.0.1:9000;
#    fastcgi_pass   192.168.2.103:9000;
#    fastcgi_index  index.php;
#    #fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
#    #fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
#    fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$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;
#}

}


在/data/nginx/html的目录下创建对应的mydoc目录,并在目录内创建一个index.html,我们这边直接复制根目录下的index.html进行一些修改作为标识,如下图:


![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/cf1f78ccec834d258fd6cbd060953c9d.png#pic_center)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/53367f1c0cb44b1686e940362c9a4f6e.png#pic_center)


构建完成后,我们需要重启Nginx容器,这里多提一点,我们在使用二进制部署的Nginx时,会使用`Nginx -s reload`的重载命令,那么Docker部署的Nginx的重载命令如下:



docker exec -it [容器id/容器名称] nginx -s reload


执行完毕后,我们测试访问  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/9f1ad0b6a5da45178158460ebb3cbca6.png#pic_center)


至此Nginx简单的单机部署完成。后续大家可以在部署好的容器进行配置修改,以适应新的服务需求。


### 自定义配置模块部署


Nginx之所以能够适应很多复杂的应用场景,在于他的具有扩展配置模块的能力。开发者根据业务场景组合配置扩展模块就变得尤为重要。开发者往往需要编译配置Nginx的很多扩展模块,比如stream、http\_stub\_status\_module、http\_ssl\_module等,来适应变化的需求场景。


由于直接使用Docker部署的Nginx本身就开启可很多模块。虽然这些模块很多有用,但是没用到的也很多。如下图:


![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/efe68929203d46758ef51caf99639ab0.png#pic_center)


如果觉得以上这些开启的模块够用,那么可以直接使用。


#### 1.自制对应镜像


我们使用Dockerfile制作定制化的Nginx镜像,这里提供两种Dockerfile


**编译好的Nginx直接打包成镜像**


一般用于已经有nginx服务的情况,直接将以前的编译过的包直接封装进入Docker镜像中就可以了,代码如下:



使用Centos7作为基础镜像

FROM centos:7

安装必要的工具

RUN yum -y update && yum -y install tar && yum clean all

将已编译好的 Nginx 文件复制到容器中

COPY nginx.tar /usr/local/

进入 Nginx 安装目录

WORKDIR /usr/local/

解压 Nginx 包

RUN tar -xvf nginx.tar

暴露 Nginx 端口

EXPOSE 80

在容器启动时运行 Nginx

最后

2020年在匆匆忙忙慌慌乱乱中就这么度过了,我们迎来了新一年,互联网的发展如此之快,技术日新月异,更新迭代成为了这个时代的代名词,坚持下来的技术体系会越来越健壮,JVM作为如今是跳槽大厂必备的技能,如果你还没掌握,更别提之后更新的新技术了。

更多JVM面试整理:

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

865229)]

更多JVM面试整理:

[外链图片转存中…(img-e4K7mfEY-1715428865229)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值