网站部署后无法访问sqlserver_.NET Core跨平台部署

1. Windows-IIS

大家对于在IIS上部署.NET站点已经驾轻就熟了,部署.NET Core也没有什么本质区别,但是这其中仍然有一些细节是不同的,下面记录了一些我在部署时遇到的问题

1.1 安装.NET Core Windows Server Hosting

要在IIS上运行http://ASP.NET Core,必须安装.NET Core Windows Server Hosting

安装完成后最好重启IIS

如果没有安装该组件就直接打开部署的网站会出现 500.19 相关的配置数据无效

1.2 配置应用程序池

Core的IIS站点应用程序池的.NET CLR版本要选择 无托管代码

4612f564-4b24-eb11-8da9-e4434bdf6706.png

1.3 使用发布文件

我最开始测试的时候,仍然使用Web根目录作为网站的物理路径,但是网站无法访问,报HTTP403错误——Web 服务器被配置为不列出此目录的内容,也是就是这个文件夹下没有可以访问的文件,在查阅网上的资料后发现其他人都是使用了发布文件夹作为物理路径,生成发布版本设置相应路径后.NET Core的示例站点即可正常访问

4712f564-4b24-eb11-8da9-e4434bdf6706.png

发布文件夹结构

4812f564-4b24-eb11-8da9-e4434bdf6706.png

成功访问

4912f564-4b24-eb11-8da9-e4434bdf6706.png

2 Linux

微软官方给出了不同系统的部署方法Tutorial Guide,由于Linux有不同的版本,所以这里选择CentOS作为示例,有以下几个步骤

2.1 添加.NET产品依赖

在安装.NET之前,你需要注册微软的Key,注册产品仓库,并且安装需要的依赖,在每台机器上只需要做一次。

直接执行以下命令:

sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm

2.2 安装.NET SDK

更新可供安装的产品,然后安装.NET SDK

输入以下命令:

sudo yum update
sudo yum install dotnet-sdk-2.2

中间有两次手动确认,然后等待安装完成即可

2.3 创建你的应用

通过输入命令就可以创建一个官方的示例.NET Core程序

dotnet new console -o myApp
cd myApp

第一条命令新建应用,第二条进入应用文件夹

通过 ls 命令我们可以看到该文件夹下只有两个文件,obj是文件夹

4b12f564-4b24-eb11-8da9-e4434bdf6706.png

默认的主文件Program.cs的内容如下:

using System;namespace myApp
{class Program{static void Main(string[] args){Console.WriteLine("Hello World!");}}
}

2.4 运行应用

dotnet run

4d12f564-4b24-eb11-8da9-e4434bdf6706.png

2.5 创建web应用

使用mkdir命令新建一个文件夹mvc,然后进入目录

4e12f564-4b24-eb11-8da9-e4434bdf6706.png

创建网站

dotnet new mvc

4f12f564-4b24-eb11-8da9-e4434bdf6706.png

然后发布这个网站程序

dotnet restore
dotnet publish -c release

5112f564-4b24-eb11-8da9-e4434bdf6706.png

默认的发布目录是在/bin/release/netcoreapp2.x/publish/里,可以新建一个目录拷贝进去

scp -r /root/mvc/bin/release/netcoreapp2.2/publish/* /root/www/firstapp

2.6 从外网访问web应用

完成发布后,已经可以通过执行dotnet命令来启动网站了,但是只能在内网访问,显然这不是我们想要的,要想从外网访问,我们需要反向代理服务器,这里选择Nginx

使用yum命令远程安装

sudo yum install epel-release
yum install nginx

启动

systemctl start nginx #启用Nginx
systemctl enable nginx #设置开机启动

这时候已经可以直接通过服务器的IP地址的80端口访问Nginx的测试页了,需要注意的是如果使用阿里云服务器,需要在安全组配置中开放80端口才能够访问

5212f564-4b24-eb11-8da9-e4434bdf6706.png

5312f564-4b24-eb11-8da9-e4434bdf6706.png

接下来根据需要进行一些端口的配置,dotnet默认的访问端口为5000,但是我测试的时候好像是在linux上被占用了,所以对 Program.cs 进行修改,使其可以通过其他端口访问,这里使用8080

public class Program
{public static void Main(string[] args){CreateWebHostBuilder(args).Build().Run();}public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>WebHost.CreateDefaultBuilder(args).UseUrls("http://*:8080").UseStartup<Startup>();
}

改完之后需要重新生成发布,开始我使用的是微软官方的示例程序,这里为了对比端口,我在自己Windows系统下新建了一个2.1的示例程序,使用VS2017进行程序修改,发布后通过xftp再上传到Linux服务器上

然后去修改Nginx的配置,默认的路径应该是/etc/nginx/nginx.conf,在server节点下的location节点加一句 proxy_pass http://localhost:8080; 就可以

server {listen       80 default_server;listen       [::]:80 default_server;server_name  _;root         /usr/share/nginx/html;# Load configuration files for the default server block.include /etc/nginx/default.d/*.conf;location / {proxy_pass http://localhost:8080;}error_page 404 /404.html;location = /40x.html {}error_page 500 502 503 504 /50x.html;location = /50x.html {}
}

修改完成后测试并重启Nginx服务

sudo nginx -t         #测试配置
sudo nginx -s reload  #重新加载配置

配置完成之后,启动网站访问服务器IP地址的8080端口即可

5612f564-4b24-eb11-8da9-e4434bdf6706.png

但是启动网站这里存在一个问题,如果像上面那样没有使用cd命令进入网站目录启动,样式和脚本等文件的路径就会出现错误,导致页面显示不正常所以要在网站目录启动

5812f564-4b24-eb11-8da9-e4434bdf6706.png

基本的网站部署就到这里,下一次讲讲用Docker如何进行.NET Core的部署与开发

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/340335.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

先装vs还是先装sql_【家装话题】装修师先装门还是先装地板?

装修先装门还是先装地板从成品保护角度说&#xff0c;先装门&#xff0c;成品保护相对容易&#xff0c;不管是发泡胶的滴落&#xff0c;玻璃胶的污染&#xff0c;安装门用的电动工具&#xff0c;包装垃圾&#xff0c;锯末&#xff0c;钻孔钉凿的冲击。直接在水泥地面上操作&…

s905各种型号的区别_梯式桥架和槽式桥架的区别介绍

电缆桥架是我们日常生活中经常可以看到的一种既可以保护电缆电线不受外界因素损坏&#xff0c;并保障着我们用电安全的一种建筑材料。电缆桥架是由支架、托臂以及安装附件组成的&#xff0c;桥架既可独立架设安装&#xff0c;也可以敷设在建筑物和管廊支架上。对于电缆桥架型号…

shell中正则表达式详解_Linux中的正则表达式

点击上方Linux迷&#xff0c;关注我们正文来自&#xff1a;https://www.linuxmi.com/linux-zhengzebiaodashi.html正则表达式就是用于匹配每行输入的一种模式&#xff0c;模式是指一串字符序列。拥有强大的字符搜索功能。也非常方便的搜索过滤出我们想要的内容。Linux系统&…

android 编辑9图片,Android基础入门教程——1.6 .9(九妹)图片怎么玩

Android基础入门教程——1.6 .9(九妹)图片怎么玩Android基础入门教程1.本节引言&#xff1a;可能有的一些疑问&#xff1a;1.什么是.9图片&#xff1f;答&#xff1a;图片后缀名前有.9的图片,如pic1.9.png这样的图片2. .9图片能干嘛&#xff1f;答&#xff1a; 在图片拉伸的时候…

2台电脑一根网线传文件_Iphone 和PC如何共享文件

iphone上有个隔空传送的功能&#xff0c;传文件非常方便&#xff0c;但是需要苹果全家桶才能使用&#xff0c;和个人pc如何传文件&#xff0c;特别是家里的主力台式机&#xff0c;需要传个视频文件&#xff0c;微信25m限制&#xff0c;插线也不太方便&#xff0c;能否和隔空传送…

如何将原图和json融合_双曲知识嵌入:如何将知识“融合”带入新空间?

知识图谱作为人类知识的结构化数据&#xff0c;是构建人工智能的基石。然而目前的知识图谱都是不完备的&#xff0c;所以需要将多个知识图谱融合以获得更完备的知识库。基于表示学习的知识关联作为知识图谱融合的新方法受到了许多关注。但知识关联模型面临着参数多、复杂性高、…

android viewgroup点击变色,Android ViewGroup事件分发

上篇文章已经分析了Android的Touch事件分发。如果没看的建议先看一下。Android View的Touch事件分发。接下来我们开始写几种场景&#xff0c;得出一个初步的执行顺序&#xff0c;然后我们按照这个顺序开始分析。首先我们自定义一个ViewGroup和一个View&#xff0c;然后重写相关…

qq数据泄露_真良心,腾讯这个app竟然能查账号泄露

最近有朋友都在分享腾讯手机管家&#xff0c;纷纷表示这是一个良心app&#xff0c;能查到自己账号泄露。仔细想一下&#xff0c;这么多年下来确实忘了自己都在什么平台或网站注册过账号&#xff0c;在黑客泛滥的今天&#xff0c;黑客很容易从一些平台窃取数据库&#xff0c;拿到…

vue 如何获取图片的原图尺寸_阳台洗衣机组合柜如何设计|尺寸规范|案例图片...

对于阳台装洗衣机来说&#xff0c;不只是简单的装修&#xff0c;还需要我们考虑水电、尺寸以及美观实用等问题&#xff0c;以免后期出现问题的时候会更加麻烦。接下来深圳装修网小编就为你们带来阳台洗衣机组合柜的案例赏析&#xff0c;以及装修的尺寸规范等内容&#xff0c;一…

print2flashwindows7旗舰版下载哪一个_JUJUMAO_MSDN原版 win 7 二合一 旗舰版32位 64位原版ISO镜像...

文件: F:\JUJUMAO_msdn_Win7_ultimate_x86_x64.iso大小:4.73G(5082120192 字节) MD5: AA4C7E80C52AC0DEDC757EF86CF8057BSHA1: 66505AD9424ED2D2B0DEDE7067917B708A67C7DDCRC32: 0E2FAB2C高速下载地址&#xff1a;https://jujumao.cowtransfer.com/s/3220a80131744fJUJUMAO_MSD…

android readonly file system,安卓ROOT权限下“Read-only file sytem”解决办法

今天用安卓模拟器&#xff1a;BlueStacks&#xff0c;打开apk终端模拟器&#xff1a;Terminal&#xff0c;在shell操作命令的时候提示“Read-only file sytem”&#xff1a;第一种方法&#xff1a;在 Android 系统中&#xff0c;我们通过 adb 登录到 shell 进行操作时&#xff…

HTML5怎样设置站点,我是怎样让网站用上HTML5 Manifest

Manifest是用来做离线页面的&#xff0c;即使断网也能正常打开页面&#xff0c;用起来简单&#xff0c;但是在实际使用中存在以下问题&#xff1a;(1)如何自动缓存所有的页面的资源&#xff1f;因为manifest不能使用*通配符进行cache(2)如果网站资源更新&#xff0c;怎么让mani…

wallpaper怎么设置锁屏_Apple ID密码忘了怎么找回?丨如何让面容和指纹解锁立马失效?...

忘记Apple ID这种事肯定不少果粉都经历过&#xff0c;像小编也是如此&#xff0c;因为密码都比较复杂&#xff0c;如果太久没输入过密码&#xff0c;久而久之就忘了。哪一天突然需要用的时候&#xff0c;怎么想也想不起来。想不起来的话我们就别想了&#xff0c;直接重置密码就…

jq监听子元素被点击_vue开发app点击字母展示地区列表(兄弟组件之间联动)

下图这种地区搜索方式在很多app中都很常见&#xff0c;今天就使用vue框架中的 better-scroll 第三方包来实现页面滚动和点击侧边栏字母该字母开头的地区列表置顶功能。1、A子组件通过使用 this.$emit(事件名字&#xff0c;事件携带内容) 向外触发事件首先&#xff0c;在组件每个…

e-mobile帐号状态存在异常_一文掌握异常检测的实用方法 | 技术实践

作者 | Vegard Flovik译者 | Tianyu责编 | Jane出品 | AI科技大本营&#xff08;ID: rgznai100&#xff09;【导读】今天这篇文章会向大家介绍几个有关机器学习和统计分析的技术和应用&#xff0c;并展示如何使用这些方法解决一些具体的异常检测和状态监控实例。相信对一些开发…

单片机sleep函数的头文件_单片机代码模块化设计思想浅谈

前言&#xff1a;前段时间分享的文章【单片机裸机代码框架设计思路】&#xff0c;很多读者给我留言&#xff0c;觉得很不错&#xff0c;对于初学者而言&#xff0c;这是一个进阶的技巧&#xff0c;对于我而言&#xff0c;这是对自己总结和表达能力的一个提升。本文章我们再谈谈…

jquery 字符串查找_JQuery、Vue等考点

一. 写出下面程序的运行结果for结果&#xff1a;1秒后一下子打印出5个5。当循环完成时才会轮到setTimeout异步执行其回调函数function&#xff0c;此时i已经变成5&#xff0c;故5个console.log(i)里的i全使用的是5。易错点&#xff1a;千万别写成“打印5个4”啊&#xff01;暴风…

html网页效果分析,熟手的html编写风格与原因分析_HTML/Xhtml_网页制作

一、导航&#xff1a;无序列表 对 其它标签元素用最常用的“无序列表“来写导航的理由是显而易见的&#xff0c;它代表一列链接&#xff0c;这本身就有足够的理由应选择列表标签。但需要移除list列表的默认样式&#xff0c;以使其更有意义。另一个好处可能超出你的想象&#xf…

qgis 图片_QGIS入门教程公告!!!

从本周开始&#xff0c;我将每周日更新一期QGIS入门教程视频&#xff0c;带讲解&#xff0c;估计这也是很多朋友所希望的。操作中用到的数据下载链接我会放在每一期的视频下方。以下是入门课程的目录&#xff1a;1.开启你的QGIS之旅——制作你的第一张地图2.属性表基础——字段…

css less 不要作用到子对象_CSS-预处理语言Sass、Less简述

CSS作为前端开发的三驾马车之一&#xff0c;无时无刻不在影响着前端的发展。为了让 CSS 变得更加的好用&#xff0c;出现了一些预处理语言。 它们让 CSS 彻底变成一门可以使用变量 、循环 、继承 、自定义方法等多种特性的标记语言&#xff0c;逻辑性得以大大增强SassSass是成熟…