3

实战基于Docker部署Nginx应用网站

 2 years ago
source link: https://www.51cto.com/article/713856.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
91ef9d8806d100d47d9887c782fb90ce33b137.png

​想了解更多关于开源的内容,请访问:​

​51CTO 开源基础软件社区​

​https://ost.51cto.com​

一、准备工作

首先我们需要准备一个服务器,一个打包好了的前端应用网站,动态网站的话还需要一个后端。

这里我就以华为云为例。当然服务器就全看大家的荷包了。

我们先打开华为云找到容器。

#夏日挑战赛# 实战基于Docker部署NGINX应用网站-开源基础软件社区

这里我们可以看到一个叫做容器镜像服务 SWR的产品,点进去。点击立即使用。找到这个点击,有了这个我们就可以进行镜像加速。

#夏日挑战赛# 实战基于Docker部署NGINX应用网站-开源基础软件社区
#夏日挑战赛# 实战基于Docker部署NGINX应用网站-开源基础软件社区

这个地址在后面就会使用到,当然我们这个不仅仅是华为云有,像阿里云, 腾讯云这些也是有的。找的方法也差不多,还有一些地址可以看我前面几篇的文章也是有写的。

接下来我们就可以去xshell里面进行操作了。

二、下载docker

这里我们使用docker来进行部署,所以我们需要先去下载一下docker。详细的可以看我​​这篇文章​​,这里我们就加加速。

(1)卸载旧版本

首先先使用。

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

卸载旧版本,如果有的话(看情况自己判断)。

(2)设置下载源

sudo yum install -y yum-utils  
sudo yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

设置好了之后就行进行下载了,下面是下载代码。

sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin

注意:这样下载的是最新版本的,如果需要下载指定版本的话可以看我上面说的那篇文章。

(3)设置镜像加速

这时我们刚刚进华为云复制的地址就有用处了。当然也还有很多选择。

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{ "registry-mirrors": ["你的加速地址"] }
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

完成之后可以使用docker info来查看是否修改成功。

#夏日挑战赛# 实战基于Docker部署NGINX应用网站-开源基础软件社区

这个registry mirrors变成你写进去的地址那么就成功了。

(4)下载nginx

接下来,我们就可以使用docker pull命令来下载nginx了。

#夏日挑战赛# 实战基于Docker部署NGINX应用网站-开源基础软件社区

下载完成之后我们再使用docker images命令来查看下载好的镜像。

#夏日挑战赛# 实战基于Docker部署NGINX应用网站-开源基础软件社区

可以看到到这里我们就已经基本做好准备工作了。接下来我需要对文件进行处理,方便我们对docker里的nginx服务器里的网页进行配置修改和网页修改。也就是使用我们的数据卷技术。

三、配置我们的nginx

(1)配置文件

首先我们需要先知道,nginx是怎么工作的,nginx有两个配置文件,conf.d 和 nginx.conf其中conf.d是个文件夹,里面有个文件是default.conf。

他们的地址分别为:

/etc/nginx/conf.d

/etc/nginx/nginx.conf

为什么我要提这一嘴呢,因为我们需要对这两个文件进行配置操作,满足我们后续的需求,而在docker中呢下载的nginx镜像是进行缩减过的,只保留了基础的功能,所以我们如果没有使用docker file生成镜像时对nginx进行基本配置是无法在里面使用vi和vim功能和其他一些所需的操作功能,而且就算有我们每次需要进去配置也是比较的不方便,所以我们需要进行数据卷操作,使我们能够更加简单的方便的来操作docker里的服务。

(2)配置网页

这里我需要让我的网址当用户进入是判断是手机用户还是电脑用户然后自行跳转相应的页面。

(3)操作

所以我们需要创建两个文件夹。

#夏日挑战赛# 实战基于Docker部署NGINX应用网站-开源基础软件社区

然后把自己准备好的打包好了的网页放进来。

#夏日挑战赛# 实战基于Docker部署NGINX应用网站-开源基础软件社区

接下来就去操作配置文件了。

#夏日挑战赛# 实战基于Docker部署NGINX应用网站-开源基础软件社区

像我这样创建几个文件夹和文件。这个创建语法这里就不赘述了。然后我们就可以把这几个配置文件给配置一下了。这里先解释一下这几个文件的用途,conf.d是个文件夹,里面有个文件叫default.conf和nginx.conf文件一样是nginx的配置文件,我们可以在这两个文件中书写一些你所需的配置,像啥负载均衡啊,代理,重写跳转页面啥的都是在这配置。当然我们这里是要通过数据卷和nginx里的配置文件连起来使其生效。这里需要注意一点当我们挂载的是文件时,我们需要给文件设置权限不然容器里的文件内容不会随着主机更改而更改chmod 777 nginx.conf。logs文件夹里是日志文件,可以让我们获取到nginx的日志。

建议:尽量挂载目录而不是挂载文件!

nginx.conf文件中,我这里进行如下操作。

#夏日挑战赛# 实战基于Docker部署NGINX应用网站-开源基础软件社区

意思就是当用户端访问时判断是手机端还是pc端然后跳转到相应的界面。conf.d文件夹中的default.conf也可以进行配置。另外的logs文件夹就不需要去操作了。

(4)docker run

接下来我们就可以运行这个容器了,使用docker run命令。

docker run -d -v /home/nginx-music/html/pc:/usr/share/nginx/html/pc -v /home/nginx-music/nginx/conf.d:/etc/nginx/conf.d -v /home/nginx-music/nginx/nginx.conf:/etc/nginx/nginx.conf -v /home/nginx-music/html/mo:/usr/share/nginx/html/mo -v /home/nginx-music/nginx/logs:/var/log/nginx -v /home/nginx-music/nginx/logs:/var/log/nginx -p 80:80 --name nginx-music-v1.0 nginx

将对应的主机目录和容器目录或文件进行挂载即可。设置端口映射,命名,后台执行,镜像名。这些命令不理解的话可以看我上两篇文章。

(5)查看是否成功

我们可以先通过docker exec -it nginx-music-v1.0 /bin/bash这个命令进入我们的nginx容器进行检测,使用nginx -t先进行测试看看我们的nginx.conf文件的配置语法有无错误。

#夏日挑战赛# 实战基于Docker部署NGINX应用网站-开源基础软件社区

之后我们就可以去网站上测试一下了看像是否成功。

#夏日挑战赛# 实战基于Docker部署NGINX应用网站-开源基础软件社区
#夏日挑战赛# 实战基于Docker部署NGINX应用网站-开源基础软件社区

这样就可以了。

​想了解更多关于开源的内容,请访问:​

​51CTO 开源基础软件社区​

​https://ost.51cto.com​​。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK