zoukankan      html  css  js  c++  java
  • DotNet跨平台

    环境说明     

    系统:CentOS Linux release 7.2.1511 (Core)

    相关工具:VS2017  xftp

    服务器软件:.net core2.0,nginx

    准备.net core应用程序

     .NET Core分为两种应用类型:Portable applications(便携应用)          Self-contained application(自宿主应用)

    我们选择便携应用,这样发布的项目会小一点,也是微软推荐的发布方式。

    .NET Core SDK 下载地址:https://www.microsoft.com/net/download  (还需要安装server host,是否安装成功 iis模块与处理程序映射中查看




    • 确保这份发布应用可以在windows上运行,以减少后续的问题。

    服务器安装CentOS7

    这个不多说了,网上好多教程。

    服务器安装.net sdk for .net core

    sudo yum install libunwind libicu(安装libicu依赖)
    
    curl -sSL -o dotnet.tar.gz https://go.microsoft.com/fwlink/?LinkID=809131(下载sdk压缩包,1.0 

      curl -sSL -o dotnet.tar.gz https://download.microsoft.com/download/7/3/A/73A3E4DC-F019-47D1-9951-0453676E059B/dotnet-sdk-2.0.2-linux-x64.tar.gz  (2.0)

    sudo mkdir -p /opt/dotnet && sudo tar zxf dotnet.tar.gz -C /opt/dotnet(解压缩)
    
    sudo ln -s /opt/dotnet/dotnet /usr/local/bin(创建链接)

    官方教程:https://www.microsoft.com/net/download/linux-package-manager/centos/sdk-current

    输入 dotnet –info 来查看是否安装成功

    如果可以执行则表明.NET Core SDK安装成功

    部署.net core应用程序到服务器

    使用Xftp上传到服务器,需要注意一点,配置xftp时,协议选择sftp,不要选ftp,否则会出现连不上服务器的情况。

    项目上传至服务 home/WebApp

    检查项目是否能够运行

    命令:dotnet /home/WebApp/WebApp.dll
    

      

    可以看到端口号是5000:Now listening on: http://localhost:5000

    安装Nginx

    curl -o  nginx.rpm http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
    
    rpm -ivh nginx.rpm
    
    yum install nginx

    输入:systemctl start nginx 来启动nginx。

    
    

    输入:systemctl enable nginx 来设置nginx的开机启动(linux宕机、重启会自动运行nginx不需要连上去输入命令)。

    配置Nginx对Asp .Net Core的转发

    修改 /etc/nginx/conf.d/default.conf 文件。

    将文本内容替换为上图:

    server {
        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;
            proxy_pass http://localhost:5000;
           #proxy_http_version 1.1;
           #proxy_set_header Upgrade $http_upgrade;
           #proxy_set_header Connection keep-alive;
           #proxy_set_header Host $host;
           #proxy_cache_bypass $http_upgrade;
        }
    
        #error_page  404              /404.html;
    
        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }
    }

    :wq 覆盖保存。

    执行:nginx –s reload 使其即时生效

    可能出现的问题

     CentOS 7.0默认使用的是firewall作为防火墙,我参考了一些资料,改为iptables防火墙:

    1.关闭firewall:
    systemctl stop firewalld.service #停止firewall
    systemctl disable firewalld.service #禁止firewall开机启动
    firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)

    2.iptables防火墙安装

    #先检查是否安装了iptables  
    service iptables status  
    #安装iptables  
    yum install -y iptables  
    #升级iptables  
    yum update iptables   
    #安装iptables-services  
    yum install iptables-services  
    

    3.开启iptables  

    #注册iptables服务  
    #相当于以前的chkconfig iptables on  
    systemctl enable iptables.service  
    #开启服务  
    systemctl start iptables.service  
    #查看状态  
    systemctl status iptables.service
    

    4.配置iptables,开放端口,输入命令:# vi /etc/sysconfig/iptables

    # Generated by iptables-save v1.4.21 on Wed Oct 18 11:53:01 2017
    *mangle
    :PREROUTING ACCEPT [135197:27080837]
    :INPUT ACCEPT [63155:19657469]
    :FORWARD ACCEPT [0:0]
    :OUTPUT ACCEPT [11793:12614289]
    :POSTROUTING ACCEPT [11891:12626324]
    -A POSTROUTING -o virbr0 -p udp -m udp --dport 68 -j CHECKSUM --checksum-fill
    COMMIT
    # Completed on Wed Oct 18 11:53:01 2017
    # Generated by iptables-save v1.4.21 on Wed Oct 18 11:53:01 2017
    
    *filter
    :INPUT ACCEPT [62:5588]
    :FORWARD ACCEPT [0:0]
    :OUTPUT ACCEPT [29:2860]
    -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
    -A INPUT -p icmp -j ACCEPT
    -A INPUT -i lo -j ACCEPT
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 5000 -j ACCEPT
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 5900 -j ACCEPT   
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 5901 -j ACCEPT    #vnc远程桌面连接
    -A INPUT -j REJECT --reject-with icmp-host-prohibited
    -A FORWARD -j REJECT --reject-with icmp-host-prohibited
    
    COMMIT
    # Completed on Wed Oct 18 11:53:01 2017
    

    5.重启iptables

    # systemctl restart iptables.service

    后续出现的问题

     配置好守护服务(supervisor)后,自己手贱,reboot了一下服务器,结果服务器再起来后,不知道是不是我重启了下nginx还是什么原因,项目跑不起来了,提示已运行,我就按网上说的kill了几个进程,kill完后,项目是起来了,可是所有静态文件加载不了css,js,后来又按网上说的,配置nginx访问js后仍不行,重装了下nginx后还不行,最后重新安装了dotnet core后问题解决了,所以感觉出现问题后,最快的方法就是重装以上软件!

    后来又出过一次问题,我的数据库服务器IP地址变了,然后项目跑是能跑起来,只是涉及到连接数据的操作都挂了,我把项目更新后还是跑不起来,重启nginx、kill .net进程都不行,重装.net core还是不行,最后把supervisor停了再启动
    ( supervisord -c /etc/supervisor/supervisord.conf) 就好了。

    卸载SDK命令
    
    sudo yum remove dotnet-sdk-*
    sudo yum remove libunwind libicu
    sudo yum remove /etc/yum.repos.d/dotnetdev.repo

    或者

    rm -rf /usr/share/dotnet​ 删除旧版cli

    1、配置dotnet产品Feed
    sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
    sudo sh -c 'echo -e "[packages-microsoft-com-prod]
    name=packages-microsoft-com-prod 
    baseurl= https://packages.microsoft.com/yumrepos/microsoft-rhel7.3-prod
    enabled=1
    gpgcheck=1
    gpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/dotnetdev.repo'

    2、安装SDK,注意版本!!!
    sudo yum update
    sudo yum -y install libunwind libicu
    sudo yum install dotnet-sdk-2.1.4

    *****************************************end**********************************************

     感谢博客园的大牛园友的无私奉献!!

    参考:http://www.cnblogs.com/ants/p/5732337.html

  • 相关阅读:
    iOS学习笔记:iOS核心动画中的常用类型
    SqlServer中获取数据库中每个表的行数
    python--setUp()和tearDown()应用
    python--获取文件路径
    测试用例设计方法基础理论知识
    软件测试的基础理论
    Linux理论基础知识
    APP测试理论知识点
    Python30个基础题(三)
    Python30个基础题(二)
  • 原文地址:https://www.cnblogs.com/nowar/p/7698769.html
Copyright © 2011-2022 走看看