最近一直在搞前后端分类,一直在想前端的html页面应该用什么部署

想来想去,如果用tomcat好像有点浪费资源,作为程序员自然要时时刻刻追求新的东西

一直以来都是在apache tomcat上面运行,今天来尝试一下nginx

至于两个性能和效果如何,大家可以参看​

废话少说

我们来利用docker来部署nginx项目

首先我们假设docker 安装成功,并且也获取了nginx镜像,如果还没有安装可以安装一下

docker nginx部署前端项目_nginx

从镜像上面我们可以看到的是nginx和tomcat大小比较区别还是很大的,对于我们这种在阿里云上购买一个小的服务器,运行着开发的人员来说,内存小还想追求高的性能,可以考虑使用nginx

第一步启动nginx :docker run -d -p 80:80 --name nginx2 nginx

docker nginx部署前端项目_html_02

 上面的解释一下:

docker run -d 表示后台运行

-p 80:80  第一个80是宿主机的端口,第二个是容器的端口

-p(小写)则可以指定要映射的IP和端口,但是在一个指定端口上只可以绑定一个容器。支持的格式有 ​​hostPort:containerPort​​​、​​ip:hostPort:containerPort​​​、 ​​ip::containerPort​​。

--name nginx2 表示容器的名称

最后的一个nginx 表示镜像

我们先把这个容器删了,换一个容器端口

我们映射容器为nginx端口为:3766

docker nginx部署前端项目_docker_03

这个时候去访问页面是打不开的

docker nginx部署前端项目_html_04

其实这个就是说,我们docker在启动nginx容器的时候,需要默认用容器的80端口这样才能进行访问

真的是这样的,我们能不能修改nginx默认的80端口

 docker cp nginx2:/etc/nginx/conf.d/default.conf default.conf

docker nginx部署前端项目_docker_05

docker cp default.conf nginx2:/etc/nginx/conf.d/default.conf

docker restart nginx2

docker nginx部署前端项目_nginx_06

 修改了配置文件之后我们要做重新访问页面

docker nginx部署前端项目_html_07

发现就可以了

上面我们介绍的是如何启动ngxin和如何修改nginx的默认的的端口

我们可以看到的是我们每次修改nginx的配置文件需要复制出来,修改,然后复制回去

这样来说甚是麻烦

我们可以通过挂载的方式来解决来回cp的问题

我们把前面创建的nginx2的default.conf放到一个文件夹里面

比如:我们把default.conf 存放在/home/nginx/default.conf

然后我们启动:

docker run -d -p 80:3766 -v /home/nginx/default.conf:/etc/nginx/conf.d/default.conf --name nginx2 nginx

docker nginx部署前端项目_nginx_08

 再次访问:

docker nginx部署前端项目_html_09

此时此刻我们的default.conf配置文是放在容器外部的

server {
listen 3766;
server_name localhost;

#charset koi8-r;
#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
#

如果我们修改上面的 nginx监听的端口,然后重启容器发现无法访问页面了

这个时候说明的是我们的配置文件生效了

docker nginx部署前端项目_nginx_10

我修改成为:3767 容器中这个端口是没有开放的

docker nginx部署前端项目_html_11

看来我们的配置文件是有效果的

我们来看这个命令

 

docker run -d -p 80:3766 -v /home/nginx/default.conf:/etc/nginx/conf.d/default.conf --name nginx2 nginx

-v 创建一个挂载,前端是宿主机的路径 后面的 是容器中的路径

docker nginx部署前端项目_docker_12

我们发现nginx里面有一个location / 这个是静态文件的路径

我们想,如果我们将我们的静态文件夹存放在宿主机上,然后做一个挂载放在容器里这个路径,那么我们是不是修改宿主机上面的 静态文件,对应的容器的静态文件也会进行修改

这个就是实现了我们前端页面用nginx显示的需求吗

docker nginx部署前端项目_html_13

我在home目录下创建一个wwww文件来存放我的静态文件

先放一个index.html文件吧

docker nginx部署前端项目_nginx_14

其实里面就是一个hello world 

下面我们要启动nginx

docker run -d -p 80:3766 -v /home/nginx/default.conf:/etc/nginx/conf.d/default.conf -v /home/www:/usr/share/nginx/html --name nginx2 nginx

docker nginx部署前端项目_html_15

 

 上面就是部署的整个过程

希望对你有所帮助