环境说明

系统: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 ;
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 /.html; # redirect server error pages to the static page /50x.html
#
error_page /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

DotNet跨平台 - .net core项目部署到centos7的更多相关文章

  1. .NET Core跨平台:.NET Core项目部署到linux(Centos7)

    1.开篇说明 a 上篇博客简单的说明了一下 使用.NET Core开发的一个总结,地址是:(http://www.cnblogs.com/hanyinglong/p/6442148.html),那么这 ...

  2. NET Core项目部署

    NET Core项目部署到linux(Centos7) 阅读目录 1.开篇说明 2.Jexus简单说明 3.Visual Studio 2015本地发布并且测试 4.配置Jexus并且部署.NET C ...

  3. .Net Core 项目部署IIS简单步骤

    1.新建一个解决方案: 我习惯会把运行文件移至一级目录 然后清除CoreTest 文件夹里面的文件 2.在解决方案中新建一个项目 点击确认有,这里有几种选择类型,我一般选择空类型(这里需要注意一下,空 ...

  4. .NET Core项目部署到Linux(Centos7)(六)发布.NET Core 项目到Linux

    目录 1.前言 2.环境和软件的准备 3.创建.NET Core API项目 4.VMware Workstation虚拟机及Centos 7安装 5.Centos 7安装.NET Core环境 6. ...

  5. .NET Core项目部署到Linux(Centos7)(一)前言

    目录 1.前言 2.环境和软件的准备 3.创建.NET Core API项目 4.VMware Workstation虚拟机及Centos 7安装 5.Centos 7安装.NET Core环境 6. ...

  6. .NET Core项目部署到Linux(Centos7)(十)总结

    目录 1.前言 2.环境和软件的准备 3.创建.NET Core API项目 4.VMware Workstation虚拟机及Centos 7安装 5.Centos 7安装.NET Core环境 6. ...

  7. .NET Core项目部署到Linux(Centos7)(七)启动和停止.NET Core项目

    目录 1.前言 2.环境和软件的准备 3.创建.NET Core API项目 4.VMware Workstation虚拟机及Centos 7安装 5.Centos 7安装.NET Core环境 6. ...

  8. .NET Core项目部署到Linux(Centos7)(八)为.NET Core项目创建Supervisor进程守护监控

    目录 1.前言 2.环境和软件的准备 3.创建.NET Core API项目 4.VMware Workstation虚拟机及Centos 7安装 5.Centos 7安装.NET Core环境 6. ...

  9. .NET Core项目部署到Linux(Centos7)(五)Centos 7安装.NET Core环境

    目录 1.前言 2.环境和软件的准备 3.创建.NET Core API项目 4.VMware Workstation虚拟机及Centos 7安装 5.Centos 7安装.NET Core环境 6. ...

随机推荐

  1. JS函数传递字符串参数(符号转义)

    原文链接:https://blog.csdn.net/Myname_China/article/details/82907965 JS函数传递字符串参数,如果没有转义处理,在接收的时候无法正确的接收字 ...

  2. ionic serve 报【ionic-app-scripts' 不是内部或外部命令 】问题解

    Error: Cannot find module 'E:\angular\ionic0515\node_modules\@ionic\app-scripts'    at Function.Modu ...

  3. ubantu 安装boost库 c++connector

    安装libmysqlcppconn: sudo apt-get install libmysqlcppconn-dev 安装libboost: sudo apt-get install libboos ...

  4. 003-jdk-数据结构-HashMap、HashTable、ConcurrentHashMap、TreeMap、LinkedHashMap、Set

    一.Map概述 Map:“键值”对映射的抽象接口.该映射不包括重复的键,一个键对应一个值. 1.1.HashTable[不常用] 基于“拉链法”实现的散列表. 底层数组+链表实现,无论key还是val ...

  5. spring 事务-使用@Transactional 注解(事务隔离级别)

    转: spring 事务-使用@Transactional 注解(事务隔离级别) 2016年08月11日 21:49:20 华华鱼 阅读数 15490 标签: spring事务Transactiona ...

  6. Node.js起一个web服务器

    开启服务: 代码如下: var http = require('http'); http.createServer(function (request, response) { // 发送 HTTP ...

  7. 用alert打印js对象

    用alert查看对象: function writeObj(obj){ var description = ""; for(var i in obj){ var property= ...

  8. 用JavaScript来实现单例模式

    首先,了解一下什么是单例模式,这里我直接把菜鸟教程中的定义给copy过来: 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一.这种类型的设计模式属于创建型模式,它提供 ...

  9. docker挂载本地目录的方法总结

    docker挂载本地目录的方法总结: Docker容器启动的时候,如果要挂载宿主机的一个目录,可以用-v参数指定. 譬如我要启动一个centos容器,宿主机的/test目录挂载到容器的/soft目录, ...

  10. 消息队列系列:Rabbitmq Trace 日志的使用

    一.什么是Trace       Trace是Rabbitmq用于记录每一次发送的消息,方便使用Rabbitmq的开发者调试.排错.可通过插件形式       提供可视化界面   二.Trace实现概 ...