环境说明

系统: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. 【分享】《美国数学本科生,研究生基础课程参考书目(个人整理)》[DJVU][VERYCD]

    目录: 第一学年 几何与拓扑: 1.James R. Munkres, Topology:较新的拓扑学的教材适用于本科高年级或研究生一年级: 2.Basic Topology by Armstrong ...

  2. arcgis python 随机取部分数据

    # -*- coding: cp936 -*- import arcpy import os import ylpy import random def main(): num=ylpy.getCou ...

  3. kotlin 之内联函数

    在lambda表达式内联函数,需要在定义函数使用inline关键字 未使用inline关键字 fun main(arg: Array<String>) { print(haha({name ...

  4. 009-DNS域名解析系统

    一.概述 DNS是域名系统(DomainNameSystem)的缩写,该系统用于命名组织到域层次结构中的计算机和网络服务.域名是由圆点分开一串单词或缩写组成的,每一个域名都对应一个惟一的IP地址,在I ...

  5. app怎么获取package与active name

    1.aapt dump badging apk名称 2.adb logcat | grep START 或者 adb shell "logcat | grep START" 然后在 ...

  6. Flutter Window环境运行(VSCode + 单独运行Android 虚拟机)

    官网以及很多网上文章的开发都是基于Android ,因为它能创建不同类型移动设备虚拟机.但个人始终觉得它太庞大,启动慢耗资源,但我们使用Flutter又离不开虚拟机. 经过实践,现在能成功的单独启动移 ...

  7. OpenGL学习(4)——纹理(补)

    完成章节后练习 练习 1. Make sure only the happy face looks in the other/reverse direction by changing the fra ...

  8. for 和 while 用于遍历时候的区别

    for: 以空格作为间隔符,输出字段. read: 以行作为间隔符,输出字段. 对于文件来说,如果只有一列,for  和  read 无区别, 多列的话, 有区别. read  用法详情: 见 如下转 ...

  9. Windows下的3389端口渗透

    1.Win7.Win2003.XP系统 在CMD命令行开启3389端口:REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" &qu ...

  10. AbstractQueuedSynchronizer 源码解读(转载)

    转载文章,拜读了一下原文感觉很不错,转载一下,侵删 链接地址:http://objcoding.com/2019/05/05/aqs-exclusive-lock/ Java并发之AQS源码分析(一) ...