#夏日挑战赛# 实战基于Docker部署NGINX应用网站 原创 精华
一.准备工作
首先我们需要准备一个服务器,一个打包好了的前端应用网站,动态网站的话还需要一个后端。
这里我就以华为云为例。当然服务器就全看大家的荷包了,
我们先打开华为云找到容器
这里我们可以看到一个叫做容器镜像服务 SWR
的产品,点进去。点击立即使用。找到这个点击,有了这个我们就可以进行镜像加速
这个地址在后面就会使用到,当然我们这个不仅仅是华为云有,像阿里云, 腾讯云这些也是有的。找的方法也差不多,还有一些地址可以看我前面几篇的文章也是有写的。
接下来我们就可以去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
来查看是否修改成功。
这个registry mirrors
变成你写进去的地址那么就成功了
(4)下载nginx
接下来,我们就可以使用docker pull
命令来下载nginx了。
下载完成之后我们再使用docker images
命令来查看下载好的镜像。
可以看到到这里我们就已经基本做好准备工作了。接下来我需要对文件进行处理,方便我们对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)操作
所以我们需要创建两个文件夹
然后把自己准备好的打包好了的网页放进来。
像这样
接下来就去操作配置文件了。
像我这样创建几个文件夹和文件。这个创建语法这里就不赘述了。然后我们就可以把这几个配置文件给配置一下了。这里先解释一下这几个文件的用途,
conf.d
是个文件夹,里面有个文件叫default.conf
和nginx.conf
文件一样是nginx的配置文件,我们可以在这两个文件中书写一些你所需的配置,像啥负载均衡啊,代理,重写跳转页面啥的都是在这配置。当然我们这里是要通过数据卷和nginx里的配置文件连起来使其生效。这里需要注意一点当我们挂载的是文件时,我们需要给文件设置权限不然容器里的文件内容不会随着主机更改而更改chmod 777 nginx.conf
。logs
文件夹里是日志文件,可以让我们获取到nginx的日志。
建议:尽量挂载目录而不是挂载文件!
nginx.conf
文件中,我这里进行如下操作。
意思就是当用户端访问时判断是手机端还是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文件的配置语法有无错误
像这样
之后我们就可以去网站上测试一下了看像是否成功。
可以了。。。
感谢楼主分享,除了华为云,阿里这种比较大平台可以购买服务器,楼主还有什么推荐的吗?
我觉得是个人开发者的话也可以使用云托管服务也是很划算的很香的
萌图好评
哈哈哈选图困难症,随便选的