前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >本地项目部署到服务器——docker-nginx

本地项目部署到服务器——docker-nginx

原创
作者头像
流眸
修改2020-06-15 17:22:23
7.4K2
修改2020-06-15 17:22:23
举报

写在前面

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

0. 准备

  • 云服务器——CentOS 7.x,低配置即可,如[1核 1GB 1Mbps]
  • 域名——已备案
  • 终端远程工具——如:xshell、FinalShell等

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


1. 安装docker

1.1 卸载旧版本

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

代码语言:javascript
复制
$ sudo yum remove docker \                  docker-client \                  docker-client-latest \                  docker-common \                  docker-latest \                  docker-latest-logrotate \                  docker-logrotate \                  docker-engine
1.2 使用官方脚本自动安装

以下两种方式任选其一

  • 命令: curl-fsSL https://get.docker.com | bash -s docker --mirror Aliyun
  • 国内 daocloud 命令 curl-sSL https://get.daocloud.io/docker | sh
1.3 启动docker

$ sudo systemctl start docker


2. Docker 安装 Nginx

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

2.1 docker查看nginx可用版本
  • docker search nginx
代码语言:javascript
复制
[root@VM_0_10_centos zxm]# docker search nginxNAME                               DESCRIPTION                                     STARS               OFFICIAL            AUTOMATEDnginx                              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

代码语言:javascript
复制
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZEnginx               latest              2622e6cca7eb        5 days ago          132MB

如上,有nginx,成功。


3. 创建docker-nginx实例

$ docker run--name[name]-p8080:80-d nginx

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

4. 运行容器

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

代码语言:javascript
复制
[root@VM_0_10_centos zxm]# docker ps -aCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMESdaad54bac361        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/。 出现页面提示如下,表示成功运行。


6. 上传文件到服务器

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

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

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

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

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

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

7.1 查找docker-nginx容器目标文件路径
  • 进入容器: dockerexec-it daad54bac361 bash
代码语言:javascript
复制
$ docker exec -it daad54bac361 bash
  • 目录: ls
代码语言:javascript
复制
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
  • 查找配置文件: cd etc/nginx/conf.d/
代码语言:javascript
复制
root@daad54bac361:/# cd etc/nginx/conf.d/root@daad54bac361:/etc/nginx/conf.d# lsdefault.conf
  • 查看配置文件: catdefault.conf
代码语言:javascript
复制
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;    ...}
  • 复制(记录)文件中 server>location>root 如: /usr/share/nginx/html 这个目录则是容器的目标目录,接下来则需将其他位置的资源通过docker命令拷贝到该文件目录下。
  • 退出容器: exit
代码语言:javascript
复制
root@daad54bac361:/etc/nginx/conf.d# exite xit
7.2 拷贝
  • 先回到刚才本地上传文件至服务器步骤的文件所在服务器位置中
  • cd到该目录下
  • docker命令拷贝到容器中 docker cp[源文件目录][容器id]:[目标目录] 例如,在我的服务器中,想要将 Loading.html传入到容器中,则是: docker cpLoading.html daad54bac361:/usr/share/nginx/html/
7.3 完成,访问

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


8. nginx域名映射配置

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

8.1 docker内安装vim工具
  • 进入docker容器 dockerexec-it[容器id或者name]bash
  • docker内安装vim 依次执行以下命令: apt-getupdate apt-getinstall vim
8.2 配置 default.conf文件
  • cd到配置文件目录
代码语言:javascript
复制
root@daad54bac361:/# cd etc/nginx/conf.d/ root@daad54bac361:/etc/nginx/conf.d# lsdefault.conf
  • 编辑default.conf文件: vimdefault.conf
  • 修改如下: 将 server>server_name的localhost改成自己的域名地址,如我的是 www.zhuxingmin.com,但我可能会设置二级域名等,将 www改成 *。则配置如下: server_name*.zhuxingmin.com;
代码语言:javascript
复制
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;    }    ...}
  • 退出容器 exit
8.3 重启docker-nginx容器

docker restart[容器name或id] 如:

代码语言:javascript
复制
[root@VM_0_10_centos zxm]# docker restart zxm-nginx-testzxm-nginx-test[root@VM_0_10_centos zxm]# docker psCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMESdaad54bac361        nginx               "/docker-entrypoint.…"   40 hours ago        Up 5 seconds        0.0.0.0:8080->80/tcp   zxm-nginx-test

9. 域名解析

  • 前提: 域名已备案
  • 打开域名解析
  • 添加记录(解析)
代码语言:javascript
复制
记录类型:   A主机记录:   test.zhuxingmin.com解析线路:   默认记录值:    服务器公网ipTTL:       10分钟

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

以上。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 写在前面
  • 0. 准备
  • 1. 安装docker
    • 1.1 卸载旧版本
      • 1.2 使用官方脚本自动安装
        • 1.3 启动docker
        • 2. Docker 安装 Nginx
          • 2.1 docker查看nginx可用版本
            • 2.2 安装最新的nginx镜像
              • 2.3 查看本地镜像
              • 3. 创建docker-nginx实例
              • 4. 运行容器
              • 5. 测试访问
              • 6. 上传文件到服务器
              • 7. 拷贝文件到docker-nginx容器
                • 7.1 查找docker-nginx容器目标文件路径
                  • 7.2 拷贝
                    • 7.3 完成,访问
                    • 8. nginx域名映射配置
                      • 8.1 docker内安装vim工具
                        • 8.2 配置 default.conf文件
                          • 8.3 重启docker-nginx容器
                          • 9. 域名解析
                          相关产品与服务
                          容器镜像服务
                          容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
                          领券
                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档