docker-nginx部署web项目

2020-06-15  本文已影响0人  流眸Tel

写在前面

作为web端开发er,几乎从未接触过后端及服务端相关知识。但有些场景下又需要将自己的一些东西从公网(域名)上展示出来,比如自己的可开源项目、博客、简历、demo等。有时候我们可以麻烦后台或者运维同事来帮我们搞一搞,但终究授之以鱼不如授之以渔,在同事的帮助下,我也成功的通过一条简单的途径实现了本地文件上传至服务器并从域名访问。本片博客记录下实现过程。
本实现途径是在linux服务器中安装docker,然后启用docker-nginx代理实现的,希望对与我面对同样困境的小白有所帮助。
第一次接触服务端知识,有错敬请指教,感谢!
那么,开始吧~

0. 准备

提示:以下命令行内容均在服务器中完成~自行通过终端远程工具连接自己的服务器


1. 安装docker

1.1 卸载旧版本

如已安装想重新安装,或者是旧版本,则执行。
如已是新版,跳过本步。

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

1.2 使用官方脚本自动安装

以下两种方式任选其一

1.3 启动docker

$ sudo systemctl start docker


2. Docker 安装 Nginx

Nginx 是一个高性能的 HTTP 和反向代理 web 服务器,同时也提供了 IMAP/POP3/SMTP 服务 。
docker内安装nginx,作为web服务器来提供我们所需要的的web服务。

2.1 docker查看nginx可用版本

[root@VM_0_10_centos zxm]# docker search nginx
NAME                               DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
nginx                              Official build of Nginx.                        13333               [OK]                
jwilder/nginx-proxy                Automated Nginx reverse proxy for docker con…   1822                                    [OK]
richarvey/nginx-php-fpm            Container running Nginx + PHP-FPM capable of…   777                                     [OK]
linuxserver/nginx                  An Nginx container, brought to you by LinuxS…   115                                     
bitnami/nginx                      Bitnami nginx Docker Image                      84                                      [OK]
tiangolo/nginx-rtmp                Docker image with Nginx using the nginx-rtmp…   75                                      [OK]
alfg/nginx-rtmp                    NGINX, nginx-rtmp-module and FFmpeg from sou…   66                                      [OK]
...
...

2.2 安装最新的nginx镜像

$ docker pull nginx:latest

2.3 查看本地镜像

运行命令查看是否安装成功:$ docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              2622e6cca7eb        5 days ago          132MB

如上,有nginx,成功。


3. 创建docker-nginx实例

$ docker run --name [name] -p 8080:80 -d nginx

  • [name]—— 容器名称
  • [-p 8080:80]—— 端口进行映射,将本地 8080 端口映射到容器内部的 80 端口
  • [-d nginx]—— 设置容器在在后台一直运行

4. 运行容器

创建容器后默认是运行状态。可以通过$ docker ps命令查看运行中的容器,通过$ docker ps -a查看docker的所有容器。
如,我创建的容器名为zxm-nginx-test,可以在下面容器列表中查看到容器的运行状态及容器信息(id、name等)

[root@VM_0_10_centos zxm]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
daad54bac361        nginx               "/docker-entrypoint.…"   41 hours ago        Up About an hour    0.0.0.0:8080->80/tcp   zxm-nginx-test

如果容器未启动,则可以通过$ docker start [容器name或id]来启动容器。


5. 测试访问

运行容器启动之后,可以通过服务器公网ip地址测试访问。
如:http://[ip]:8080/
出现页面提示如下,表示成功运行。

serve_nginx.png

6. 上传文件到服务器

上传本地文件/文件夹(我们的web项目,静态资源)到自己的服务器任意位置。
比如我在root下创建了文件夹zxm,通过工具直接将本地文件Loading.html拖入其中。

serve_upload.gif

然后本地资源就上传到了服务器中~


serve_file.jpg

7. 拷贝文件到docker-nginx容器

首先,我们已经将需要的项目(资源)从本地上传到了服务器上;
然后我们需要做的则是从服务器上的项目资源从目前所在的地方拷贝到docker-nginx容器内,那么我们就需要知道三个东西:

  1. 目标路径
  2. 项目所在路径
  3. docker 拷贝命令

接下来,我们一步一步来。

7.1 查找docker-nginx容器目标文件路径

$ docker exec -it daad54bac361 bash
root@daad54bac361:/# ls 
bin  boot  dev  docker-entrypoint.d  docker-entrypoint.sh  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@daad54bac361:/# cd etc/nginx/conf.d/
root@daad54bac361:/etc/nginx/conf.d# ls
default.conf
root@daad54bac361:/etc/nginx/conf.d# cat default.conf 
server {
    listen       80;
    listen  [::]:80;
    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;

    ...
}
root@daad54bac361:/etc/nginx/conf.d# exit
e xit

7.2 拷贝

7.3 完成,访问

浏览器中输入ip:8080/Loading.html,正常访问到页面,收工~~

serveLoading.gif

8. nginx域名映射配置

以上内容我们完成了基本的服务器项目部署,也就是从公网可以访问自己的项目啦~但是我们不能一直使用公网来访问,不够安全,且不够优雅!那么我们怎么使用域名来访问自己的项目呢?
接下来我们操作一下域名映射。

8.1 docker内安装vim工具

8.2 配置default.conf文件

root@daad54bac361:/# cd etc/nginx/conf.d/ 
root@daad54bac361:/etc/nginx/conf.d# ls
default.conf
server {
    listen       80;
    listen  [::]:80;
    server_name  *.zhuxingmin.com;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

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

    ...
}

8.3 重启docker-nginx容器

docker restart [容器name或id]
如:

[root@VM_0_10_centos zxm]# docker restart zxm-nginx-test
zxm-nginx-test
[root@VM_0_10_centos zxm]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
daad54bac361        nginx               "/docker-entrypoint.…"   40 hours ago        Up 5 seconds        0.0.0.0:8080->80/tcp   zxm-nginx-test

9. 域名解析

记录类型:   A
主机记录:   test.zhuxingmin.com
解析线路:   默认
记录值:    服务器公网ip
TTL:       10分钟

然后,打开浏览器,输入自己配置的域名,即可访问到docker-nginx容器中的项目啦~~

serve_url.gif

以上。

上一篇下一篇

猜你喜欢

热点阅读