资讯专栏INFORMATION COLUMN

Mono、Nginx、Jexus组合测试

刘福 / 583人阅读

摘要:因为要将平台和应用化,需要测试并选择部署工具及方式。页面部署独立版相关部署独立版说明独立版是指将的集成进来的,据说使用上跟差不多。接下来新建文件夹点击下载打包好的文件文件中的文件夹分别用于存放要部署的三类文件。

因为要将平台和应用Docker化,需要测试并选择部署工具及方式。

页面部署:
Nginx;Jexus;Jexus独立版;

.Net相关(MVC、API、exe)部署:
Mono + Nginx;Mono + Jexus;Mono + Jexus独立版;

说明:Jexus独立版是指将Mono的RunTime集成进来的Jexus,据说使用上跟Mono + Jexus差不多。
接下来新建文件夹:

</>复制代码

  1. sudo mkdir /opt/webapi && cd /opt/webapi

点击下载打包好的demo文件;
文件中的web mvc api文件夹分别用于存放要部署的三类demo文件。

点击下载打包好的Dockerfile和脚本文件;
文件中的jexus nginx jexus-mono mono-jexus mono-jexus-mono mono-nginx文件夹分别存放了构建镜像的Dockerfile文件和一些构建镜像的脚本以及容器启停的脚本,以免测试过程中总是重复输入一些指令或上下翻找这些重复的指令。

注意:这些文件夹要放到同一路径下,因为容器的启动脚本中使用了相对路径,这里我放到了新建的文件夹webapi下面,即/opt/webapi路径下。web mvc api文件夹下放的都是要部署的demo文件,这里就不贴出来了。

jexus

官方网站

Dockerfile

</>复制代码

  1. FROM debian:jessie
  2. MAINTAINER Mongo
  3. RUN apt-get update
  4. && apt-get -y install wget
  5. && cd /usr
  6. && wget linuxdot.net/down/jexus-5.8.1.tar.gz
  7. && tar -zxvf jexus-5.8.1.tar.gz
  8. && ./jexus-5.8.1/install
  9. && rm -r jexus-5.8.1.tar.gz jexus-5.8.1
  10. && apt-get -y autoremove --purge wget
  11. && rm -rf /var/lib/apt/lists/*
  12. EXPOSE 80
  13. WORKDIR /usr/jexus
  14. CMD /usr/jexus/jws start && tail -f

build.sh

</>复制代码

  1. #!/bin/bash
  2. ./stop.sh
  3. docker build -t jexus/debian .
  4. docker rmi $(docker images | awk "$1 == "" && $2 == "" {print $3}")

start.sh

</>复制代码

  1. #!/bin/bash
  2. ./stop.sh
  3. EXPORT="11110"
  4. docker run -d -p $EXPORT:80 --name jexus-web -v $(pwd)/../web:/var/www/default --restart always jexus/debian:latest
  5. echo
  6. ip addr show eth1 | awk "$1 == "inet" {split($2,ip,"/");print "Please use the browser to access this address => http://"ip[1]":""""$EXPORT"""}"
  7. echo

stop.sh

</>复制代码

  1. #!/bin/bash
  2. docker rm -f jexus-web

jexus-mono

Dockerfile

</>复制代码

  1. FROM debian:jessie
  2. MAINTAINER Mongo
  3. RUN apt-get update
  4. && apt-get -y install wget
  5. && cd /usr
  6. && wget linuxdot.net/down/jexus-5.8.1-x64.tar.gz
  7. && tar -zxvf jexus-5.8.1-x64.tar.gz
  8. && rm -r jexus-5.8.1-x64.tar.gz
  9. && apt-get -y autoremove --purge wget
  10. && rm -rf /var/lib/apt/lists/*
  11. EXPOSE 80
  12. WORKDIR /usr/jexus
  13. CMD /usr/jexus/jwss

build.sh

</>复制代码

  1. #!/bin/bash
  2. ./stop.sh
  3. docker build -t jexus/mono:debian .
  4. docker rmi $(docker images | awk "$1 == "" && $2 == "" {print $3}")

start.sh

</>复制代码

  1. #!/bin/bash
  2. ./stop.sh
  3. webport="11120"
  4. mvcport="11122"
  5. apiport="11124"
  6. docker run -d -p $webport:80 --name jexus-mono-web -v $(pwd)/../web:/var/www/default --restart always jexus/mono:debian
  7. docker run -d -p $mvcport:80 --name jexus-mono-mvc -v $(pwd)/../mvc:/var/www/default --restart always jexus/mono:debian
  8. docker run -d -p $apiport:80 --name jexus-mono-api -v $(pwd)/../api:/var/www/default --restart always jexus/mono:debian
  9. echo
  10. ip addr show eth1 | awk "$1 == "inet" {split($2,ip,"/");print "(OK)WEB - Please use the browser to access this address => http://"ip[1]":""""$webport"""}"
  11. echo
  12. ip addr show eth1 | awk "$1 == "inet" {split($2,ip,"/");print "MVC - Please use the browser to access this address => http://"ip[1]":""""$mvcport"""}"
  13. echo
  14. ip addr show eth1 | awk "$1 == "inet" {split($2,ip,"/");print "API - Please use the browser to access this address => http://"ip[1]":""""$apiport"""}"
  15. echo

stop.sh

</>复制代码

  1. #!/bin/bash
  2. docker rm -f jexus-mono-web jexus-mono-api jexus-mono-mvc

nginx

官方网站 ; Nginx中文文档 ; nginx官方镜像及使用说明

Dockerfile(官方)

</>复制代码

  1. FROM debian:jessie
  2. MAINTAINER NGINX Docker Maintainers "docker-maint@nginx.com"
  3. ENV NGINX_VERSION 1.11.1-1~jessie
  4. RUN apt-key adv --keyserver hkp://pgp.mit.edu:80 --recv-keys 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62
  5. && echo "deb http://nginx.org/packages/mainline/debian/ jessie nginx" >> /etc/apt/sources.list
  6. && apt-get update
  7. && apt-get install --no-install-recommends --no-install-suggests -y
  8. ca-certificates
  9. nginx=${NGINX_VERSION}
  10. nginx-module-xslt
  11. nginx-module-geoip
  12. nginx-module-image-filter
  13. nginx-module-perl
  14. nginx-module-njs
  15. gettext-base
  16. && rm -rf /var/lib/apt/lists/*
  17. # forward request and error logs to docker log collector
  18. RUN ln -sf /dev/stdout /var/log/nginx/access.log
  19. && ln -sf /dev/stderr /var/log/nginx/error.log
  20. EXPOSE 80 443
  21. CMD ["nginx", "-g", "daemon off;"]

start.sh

</>复制代码

  1. #!/bin/bash
  2. ./stop.sh
  3. webport="11160"
  4. # OK
  5. docker run -d -p $webport:80 --name nginx-web -v $(pwd)/nginx.conf:/etc/nginx/nginx.conf -v $(pwd)/../web:/usr/share/nginx/html --restart always nginx:latest
  6. echo " "
  7. ip addr show eth1 | awk "$1 == "inet" {split($2,ip,"/");print "(OK)WEB - Please use the browser to access this address => http://"ip[1]":""""$webport"""}"

stop.sh

</>复制代码

  1. #!/bin/bash
  2. docker rm -f nginx-web

mono (official)

官方网站 ; Mono-Wiki ; DockerHub-Mono

Dockerfile(官方)

</>复制代码

  1. FROM debian:wheezy
  2. MAINTAINER Jo Shields
  3. #based on dockerfile by Michael Friis
  4. RUN apt-get update
  5. && apt-get install -y curl
  6. && rm -rf /var/lib/apt/lists/*
  7. RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
  8. RUN echo "deb http://download.mono-project.com/repo/debian wheezy/snapshots/4.4.0.182 main" > /etc/apt/sources.list.d/mono-xamarin.list
  9. && apt-get update
  10. && apt-get install -y mono-devel ca-certificates-mono fsharp mono-vbnc nuget referenceassemblies-pcl
  11. && rm -rf /var/lib/apt/lists/*

start.sh

</>复制代码

  1. #!/bin/bash
  2. ./stop.sh
  3. path="/usr/src/app/source"
  4. cmd="mono ./example.exe"
  5. cname="mono-official-exe"
  6. docker run -d -v $(pwd)/../exe:$path -w $path --name $cname mono:latest $cmd
  7. docker logs -f $cname

stop.sh

</>复制代码

  1. #!/bin/bash
  2. docker rm -f mono-official-exe

mono (seif/mono)

DockerHub-seif/mono ; 需要说明的是Mono的官方镜像也是seif在更新维护的,另外他还上传了其他Mono的相关镜像:seif/mono-nginx ; seif/docker-mono-fastcgi-nginx (就是下面用到的mono/nginx) ; seif/mono-apache ; seif/mono-runit ;

Dockerfile

</>复制代码

  1. FROM debian
  2. MAINTAINER Seif Attar
  3. RUN apt-get update
  4. && apt-get install wget -y --no-install-recommends
  5. && echo "deb http://download.mono-project.com/repo/debian wheezy/snapshots/4.0.0 main" > /etc/apt/sources.list.d/mono-xamarin.list
  6. && wget -qO - http://download.mono-project.com/repo/xamarin.gpg | apt-key add -
  7. && apt-get update
  8. && apt-get install mono-runtime -y --no-install-recommends
  9. && apt-get purge wget -y
  10. && apt-get autoremove -y
  11. && apt-get clean
  12. && rm -rf /var/lib/apt/lists/* /var/tmp/*

start.sh

</>复制代码

  1. #!/bin/bash
  2. ./stop.sh
  3. path="/usr/src/app/source"
  4. cmd="mono ./example.exe"
  5. cname="mono-seif-exe"
  6. docker run -d -v $(pwd)/../exe:$path -w $path --name $cname mono:latest $cmd
  7. docker logs -f $cname

stop.sh

</>复制代码

  1. docker rm -f mono-seif-exe

mono-jexus

Dockerfile

</>复制代码

  1. FROM mono:latest
  2. MAINTAINER Mongo
  3. RUN apt-get update
  4. && apt-get -y install wget
  5. && cd /usr
  6. && wget linuxdot.net/down/jexus-5.8.1.tar.gz
  7. && tar -zxvf jexus-5.8.1.tar.gz
  8. && ./jexus-5.8.1/install
  9. && rm -r jexus-5.8.1.tar.gz jexus-5.8.1
  10. && apt-get -y autoremove --purge wget
  11. && rm -rf /var/lib/apt/lists/*
  12. EXPOSE 80
  13. WORKDIR /usr/jexus
  14. CMD /usr/jexus/jws start && tail -f

build.sh

</>复制代码

  1. #!/bin/bash
  2. ./stop.sh
  3. docker build -t mono/jexus .
  4. docker rmi $(docker images | awk "$1 == "" && $2 == "" {print $3}")

start.sh

</>复制代码

  1. #!/bin/bash
  2. ./stop.sh
  3. mvcport="11132"
  4. apiport="11134"
  5. tiport="11136"
  6. docker run -d -p $mvcport:80 --name mono-jexus-mvc -v $(pwd)/../mvc:/var/www/default mono/jexus
  7. docker run -d -p $apiport:80 --name mono-jexus-api -v $(pwd)/../api:/var/www/default mono/jexus
  8. echo " "
  9. ip addr show eth1 | awk "$1 == "inet" {split($2,ip,"/");print "MVC - Please use the browser to access this address => http://"ip[1]":""""$mvcport"""}"
  10. echo " "
  11. ip addr show eth1 | awk "$1 == "inet" {split($2,ip,"/");print "API - Please use the browser to access this address => http://"ip[1]":""""$apiport"""}"
  12. echo " "
  13. ip addr show eth1 | awk "$1 == "inet" {split($2,ip,"/");print "(OK)MVC-tiMode - Please use the browser to access this address => http://"ip[1]":""""$tiport"""}"
  14. echo " "
  15. # OK
  16. docker run --rm -ti -p $tiport:80 --name jexus-mono-mvc-ti -v $(pwd)/../mvc:/var/www/default mono/jexus

stop.sh

</>复制代码

  1. #!/bin/bash
  2. docker rm -f mono-jexus-mvc mono-jexus-api

mono-jexus-mono

Dockerfile

</>复制代码

  1. FROM mono:latest
  2. MAINTAINER Mongo
  3. RUN apt-get update
  4. && apt-get -y install wget
  5. && cd /usr
  6. && wget linuxdot.net/down/jexus-5.8.1-x64.tar.gz
  7. && tar -zxvf jexus-5.8.1-x64.tar.gz
  8. && apt-get -y autoremove --purge wget
  9. && rm -rf jexus-5.8.1-x64.tar.gz /var/lib/apt/lists/*
  10. # COPY default /usr/jexus/siteconf/default
  11. EXPOSE 80
  12. WORKDIR /usr/jexus
  13. CMD /usr/jexus/jwss

build.sh

</>复制代码

  1. #!/bin/bash
  2. ./stop.sh
  3. docker build -t mono/jexus:mono .
  4. docker rmi $(docker images | awk "$1 == "" && $2 == "" {print $3}")

start.sh

</>复制代码

  1. #!/bin/bash
  2. ./stop.sh
  3. mvcport="11142"
  4. apiport="11144"
  5. tiport="11146"
  6. docker run -d -p $mvcport:80 --name mono-jexus-mono-mvc -v $(pwd)/../mvc:/var/www/default mono/jexus:mono
  7. docker run -d -p $apiport:80 --name mono-jexus-mono-api -v $(pwd)/../api:/var/www/default mono/jexus:mono
  8. echo
  9. ip addr show eth1 | awk "$1 == "inet" {split($2,ip,"/");print "MVC - Please use the browser to access this address => http://"ip[1]":""""$mvcport"""}"
  10. echo
  11. ip addr show eth1 | awk "$1 == "inet" {split($2,ip,"/");print "API - Please use the browser to access this address => http://"ip[1]":""""$apiport"""}"
  12. echo
  13. ip addr show eth1 | awk "$1 == "inet" {split($2,ip,"/");print "tiMode - Please use the browser to access this address => http://"ip[1]":""""$tiport"""}"
  14. echo
  15. docker run --rm -ti -p $tiport:80 -v $(pwd)/../api:/var/www/default mono/jexus:mono

stop.sh

</>复制代码

  1. #!/bin/bash
  2. docker rm -f mono-jexus-mono-mvc mono-jexus-mono-api

mono-nginx(fastcgi)

Dockerfile

</>复制代码

  1. FROM seif/mono
  2. MAINTAINER Seif Attar
  3. ADD service/ /etc/service/
  4. ADD config/runit/1 /etc/runit/1
  5. ADD config/runit/1.d/cleanup-pids /etc/runit/1.d/cleanup-pids
  6. ADD config/runit/2 /etc/runit/2
  7. ADD runit_bootstrap /usr/sbin/runit_bootstrap
  8. RUN echo "deb http://download.mono-project.com/repo/debian wheezy-libjpeg62-compat main" | tee -a /etc/apt/sources.list.d/mono-xamarin.list
  9. && apt-get update
  10. && apt-get install runit nginx mono-fastcgi-server4 -y --no-install-recommends
  11. && apt-get clean
  12. && rm -rf /var/lib/apt/lists/* /var/tmp/* /tmp/*
  13. && mkdir -p /etc/mono/registry /etc/mono/registry/LocalMachine
  14. && find /etc/service/ -name run -exec chmod u+x {} ;
  15. && chmod u+x /usr/sbin/runit_bootstrap;
  16. ADD config/default /etc/nginx/sites-available/
  17. ADD config/fastcgi_params /etc/nginx/
  18. ADD runit_bootstrap /usr/sbin/runit_bootstrap
  19. EXPOSE 80

start.sh

</>复制代码

  1. #!/bin/bash
  2. ./stop.sh
  3. mvcport="11152"
  4. apiport="11154"
  5. path="/var/www:ro"
  6. image="--restart always mono/nginx:latest"
  7. cmd="/usr/sbin/runit_bootstrap"
  8. docker run -d -p $mvcport:80 -v $(pwd)/../mvc:$path --name mono-nginx-mvc $image $cmd
  9. docker run -d -p $apiport:80 -v $(pwd)/../api:$path --name mono-nginx-api $image $cmd
  10. echo
  11. ip addr show eth1 | awk "$1 == "inet" {split($2,ip,"/");print "MVC - Please use the browser to access this address => http://"ip[1]":""""$mvcport"""}"
  12. echo
  13. ip addr show eth1 | awk "$1 == "inet" {split($2,ip,"/");print "API - Please use the browser to access this address => http://"ip[1]":""""$apiport"""}"
  14. echo

stop.sh

</>复制代码

  1. #!/bin/bash
  2. docker rm -f mono-nginx-mvc mono-nginx-api

测试结果

镜像大小:

</>复制代码

  1. REPOSITORY TAG SIZE DESCRIPTION
  2. mono/jexus latest 637.2 MB FROM mono,install jexus
  3. jexus/mono debian 170.8 MB FROM debian,install jexus with mono runtime
  4. jexus/debian latest 127.2 MB FROM debian,install jexus
  5. mono/jexus mono 674.3 MB FROM mono,install jexus with mono runtime
  6. nginx latest 182.6 MB FROM debian,install nginx(official)
  7. mono/nginx latest 480.9 MB FROM seif/mono,install nginx
  8. mono(official) latest 628.6 MB FROM debian:wheezy,install mono 4.4.0.182
  9. mono(seif/mono) latest 153.7 MB FROM debian,install mono 4.0

Web部署及访问正常的方式:
jexus-mono:debian-d); nginx:latest-d);

Exe部署运行正常的方式:
mono(official)-d) ; mono(seif/mono)-d);

MVC部署及访问正常的方式:
mono-jexus:latest-ti);mono-nginx(fastcgi)-d);

API部署及访问正常的方式:

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/26647.html

相关文章

  • MonoNginxJexus组合测试

    摘要:因为要将平台和应用化,需要测试并选择部署工具及方式。页面部署独立版相关部署独立版说明独立版是指将的集成进来的,据说使用上跟差不多。接下来新建文件夹点击下载打包好的文件文件中的文件夹分别用于存放要部署的三类文件。 因为要将平台和应用Docker化,需要测试并选择部署工具及方式。 页面部署:Nginx;Jexus;Jexus独立版; .Net相关(MVC、API、exe)部署:Mono ...

    whinc 评论0 收藏0
  • 搭建同时支持PHP和ASP.NET的Linux服务器环境

    摘要:我的服务器安装的是最新版,上面的代码贴的是参考文章的原文。换成域名或者服务器,测试结果应该为载入页面时到服务器的连接被重置。火狐此时测试结果应该为默认页此时测试结果应该为的默认页,或者是报出的错误。个人认为,避免和混用才是上上策。 注:本文只是个人研究以及探索的方法,可能不太严谨,如果犯了什么专业性的错误,还希望各位看官加以指正,谢谢。(´・ω・`) 特别感谢:阔空晴云(每次遇到什么...

    王军 评论0 收藏0
  • 搭建同时支持PHP和ASP.NET的Linux服务器环境

    摘要:我的服务器安装的是最新版,上面的代码贴的是参考文章的原文。换成域名或者服务器,测试结果应该为载入页面时到服务器的连接被重置。火狐此时测试结果应该为默认页此时测试结果应该为的默认页,或者是报出的错误。个人认为,避免和混用才是上上策。 注:本文只是个人研究以及探索的方法,可能不太严谨,如果犯了什么专业性的错误,还希望各位看官加以指正,谢谢。(´・ω・`) 特别感谢:阔空晴云(每次遇到什么...

    wwq0327 评论0 收藏0
  • awk在删除镜像过程中的用法及说明

    摘要:实际上,认为文本文件都是结构化的,它将每一个输入行定义为一个记录,行中的每个字符串定义为一个域段,域和域之间使用分割符分割。 看到一篇Docker 技巧:删除 Docker 容器和镜像其中提到删除标签为none的镜像的方法,其中用到了awk,就去查了下,下面举例说明: docker rmi $(docker images | awk $1 == && $2 == {print $3...

    lentoo 评论0 收藏0
  • Docker利用Jexus独立版部署MVC Demo

    摘要:在独立版出来之前都是需要采用的方式来部署项目。现在只需用独立版就可以完成部署工作。 在Jexus独立版出来之前都是需要采用Mono + Jexus的方式来部署Asp.NET MVC项目。现在只需用Jexus独立版就可以完成部署工作。 Jexus部署Asp.NET需要的文件 Dockerfile FROM ubuntu:latest MAINTAINER Mongo RUN apt...

    CoreDump 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<