本篇文章给大家谈谈sentos上部署.net网站,以及linux部署netcore对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
如何在Linux服务器上部署.Net Core?.Net Core是.Net Framework的新一代版本,对于新手来说,将.Net Core部署在Linux服务器上是一件相当困难的事,为了帮助大家解决困难,今天小编要给大家分享如何在Linux服务器上部署.Net Core?
1、简介
一直以来,微软只对自家平台提供.NET支持,这样等于让这个“理论上”可以跨平台的框架在Linux和macOS上的支持只能由第三方项目提供(比如Mono .NET)。直到微软推出完全开源的.NET Core。这个开源的平台兼容.NET Standard,并且能在Windows、Linux和MacOS上提供完全一致的API。虽然这个小巧的.NET框架只是标准.NET的一个子集,但是已经相当强大了。
一方面,这个小巧的框架可以让某些功能性应用同时运行在三个平台上(就像某些功能性的Python脚本一样),另一方面,这也可以让服务器运维人员将ASP .NET服务程序部署在Linux服务器上(特别是对于运行Windows Server较为吃力的服务器)。
2、部署.NET Core
由于我没有可用的macOS设备,我将仅用Linux(服务器)作示范。我作示范的服务器是CentOS7操作系统。
SSH连接至服务器,安装.NET Core的依赖项:
然后从微软官方获取.NET Core的主程序:
如果你的服务器不能正确访问这个地址,你可能需要手动访问后面的地址,下载完毕之后,用任意一种方法传递进服务器,并命名为dotnet.tar.gz。
执行指令将组件解压至指定的位置:
创建链接以在任何路径下直接引用dotnet指令:
至此,.NET Core框架应该就在你的服务器上搭建好了。
3、尝试部署一个ASP .NET服务程序
在本地计算机上,修改Visual Studio功能,确保这一项是被安装的:
启动Visual Studio,新建一个ASP .NET Core项目:
类型选择Web应用程序。我们不对示例作太大的修改,仅仅是为了演示ASP .NET运行于.NET Core的状况。在项目资源管理器内打开Program.cs,依然是熟悉的C#代码:
为了能正常运行,我们稍稍修改代码,让host的对象初始化器看起来是这个样子:
保存工程,将整个解决方案上传至服务器。再次连接服务器,导航到你存放工程文件的目录下,执行指令:
该指令指挥.NET Core恢复这个工程引用的包,耐心等待指令执行完毕。
接着,执行指令:
这条指令将使.NET Core编译并运行这个工程。控制台没有错误信息并产生类似输出,你的ASP .NET Core应用程序就应该在正确运行了:
试着在任意设备上访问你服务器的IP地址(或者域名),如果能正确加载默认页面,你的.NET Core环境就算部署完毕了:
这个.NET框架只是.NET标准的一个子集,不一定能100%兼容一个复杂的ASP .NET服务程序。但是利用这个框架,你可以把服务器切换至Linux系统,却仍然采用ASP .NET作为服务程序的具体实现方法。你也不必为了调试运行于Linux的服务程序而专门去配置一个Linux工作环境——因为.NET Core也可以运行在Windows上,Visual Studio本身就支持使用IIS Express来本地调试一个ASP .NET Core应用程序。
建议参考: 在linux centos7上部署asp.net core应用
在linux centos7上部署asp.net core
C++撸桌面app通常都是辣鸡。基本上都有(大量)逗比接口的私货需要额外学习;要么就是干脆包装Web内核糊了一坨,不仔细优化就渣体验,而且依赖库的二进制体积都不小,部署成本很容易明显不符合题主要求。
如果只是做单独的app(而不是搞框架二次开发),Qt勉强凑数。虽然金玉其外败絮其中,而且经常不是纯C++(依赖moc/QML),但矮子里面挑将军,整体工具(构建工具、设计器、包括VS在内的IDE集成)完成度相对比较高也支持多个主流平台(Windows/Linux/OS X等),许可证要求宽松(LGPL),可选商业支持,对单独的app项目来讲风险比较低。虽然需要发布的二进制体积还是偏大,但容易做到比主流Web和.NET之类的方案紧凑,自己控制要发布的动态库(Windows上一般是一些dll,不需要注册)对普通app项目不算太不友好而可以接受。
把在本地开发的php+mysql程序通过FTP架设到web服务器,并能通过域名正常访问网站。
END
步骤/方法
第一步:创建FTP
================================================================
chmod go+rwx /data 《给data分配权限》
cd /data 《进入data分区》
mkdir web 《建立web目录》
chmod go+rwx /data/web
cd / 《回到根目录,个人操作习惯,可跳过这步》
useradd ftpusername -d /data/web/cqwebseo.com 《添加FTP,ftpusername改为你的FTP用户、cqwebseo.com改为你FTP对就的网站目录》
passwd cqwebseo 《设置FTP密码》
echo cqwebseo /etc/ftpchroot 《设置FTP用户只访问自己网站目录内的文件,不能访问其它目录 。这点很重要》vi /etc/vsftpd/vsftpd.conf 《修改FTP配置文件》
注:按一下i进入到编辑模式,修改完后按一下ESC退出编辑模式,再输入《:wq》(其作用是保存改修改并退出)《:q!》退出不保存《:q》没有做过修改用这个退出
idle_session_timeout
data_connection_timeout
找到这两个,,修改其值大于900,如果不修改这个的话,,FTP链接很慢
#xferlog_file
找到这个,删除# 。。。作用是记录FTP的日志
/etc/init.d/vsftpd restart 《重启FTP后配置文件才会生效》
到此第一步OK 你可用FTP登陆啦!
注:我这配置有这个问题没解决,登陆报超时,但你耐心的等一会,就会链接好,如果有盆友知道解决方法的,请帮解答一下。。。谢谢。。
======================================================================
第三步:配置mysql
==============================================================================
/usr/local/mysql/bin/mysql -uroot -p 《登陆mysql,按一下ENTER然后输入mysql密码,默认和万网root密码一样》
use mysql; 《选择mysql表》
grant all on cqwebseo_db.* to cqwebseo@localhost identified by 'cqwebseomysql'; 《添加一个数据,有所有权限,cqwebseo_db为数据库名,cqwebseo为用户名,cqwebseomysql为密码》
flush privileges; 《不用解释吧,真就度娘一下。》
exit; 《这个也不用说吧》
/usr/local/mysql/bin/mysqladmin -uroot -p8y6v8a3c7u shutdown 《停止mysql》
/usr/local/mysql/bin/mysqld_safe 《启动mysql》
到此。。就Ok。注意。。注意。。。。。分号 分号 分号
/usr/local/mysql/var 《数据库存放目录》
================================================================================
第二步:配置httpd.conf
=======================================================================
echo hi! Tis test! /data/web/cqwebseo.com index.php 《在cwebseo.com里面建立一个内容为hi!Tis test!的index.php文件》
vi /var/www/conf/httpd.conf 《进入主战场》
按上下键,翻到文档最后,然后加入下列表代码(不知道怎么加进的,看第一步的注意事项)
VirtualHost *:80
DocumentRoot /data/web/cqwebseo
DirectoryIndex index.php
ServerAdmin [email protected]
ServerName cqwebseo.com
ServerAlias www.cqwebseo.com
#ErrorLog /data/web/sanmao/log/error.log
#TransferLog /data/web/sanmao/log/access.log
/VirtualHost
简单说一下。。。。。。网上有很多这方面的资料
DocumentRoot /data/web/cqwebseo 这个就是网站的决对地址 说白就是你分配给他的FTP地址
DirectoryIndex index.php 这个表示网站默认首页是index.php
ServerAdmin [email protected] 服务管理员的邮箱
ServerName cqwebseo.com 这个你懂的
ServerAlias www.cqwebseo.com 这个也不需要解释吧
余下的两个被我注释掉喽,,,意思是网站的日志文件存放地
var/www/bin/apachectl restart 重启apachectl
var/www/bin/apachectl stop 停止apachectl
var/www/bin/apachectl start 启动apachectl
OK到这里。。第二步就完。。。你能输入网址。。。看到这个目录啦。。不过有个前题条件。。这个个域名要解析过来了滴哈。。不然的话。。你就不要输入域名那两个。。直接用你服务的IP地址访问也行的。。。。如果你操作正确啦。。就能看到网页上出现hi! Tis test!
步骤如下: 打开终端(Ctrl+Alt+T) 键入#netconfig。 进去之后,选择IP V4。 在里面选择自动获取ip。或者固定ip,填写你自己想要的ip就行。 配好后还没完 健入#service network restart。 重启下服务就好了。
C#语言由于需要编译后才可以在 CoreCLR 虚拟机中运行。因此在 SCF 中的使用方式,和 Python、Node.js 这类脚本型语言不同,和Java一样有如下限制:
不支持上传代码:使用 C# 语言,仅支持上传已经开发完成,编译打包后的 zip 包。SCF 环境不提供 C# 的编译能力。
不支持在线编辑:不能上传代码,所以不支持在线编辑代码。CoreCLR 运行时的函数,在代码页面仅能看到再次通过页面上传或 COS 提交代码的方法。
自定义.NET Custom runtime
Custom Runtime的封装工作就是要把各种trigger 的事件封装一个.NET Standard库,开发云函数。自 .NET Core 2.0 开始, 提供了名为 IHostedService 的新接口,有助于轻松实现托管服务,文章《ASP.NET Core 3.x控制IHostedService启动顺序浅探》有深入的实现分析,基于IHostedService 实现一个SCFHostService:
这里我们把SCF的Custom Runtime 抽象到ISCFHost 中
在SCFHost 类中完成Custom Runtime的业务处理,接收来自SCF 的事件,转发给函数进行处理,函数处理的接口 IFunctionInvoker:
默认实现了FunctionInvoker 把请求信息 返回给 SCF:
responseBody 代表了SCF函数的不同Trigger事件信息,我们可以根据不同的Trigger 定义不同的处理函数,例如我们处理HttpTrigger的函数为HttpFunctionInvoker:
上面我们已经完成了最小的MVP封装,利用.NET Core的依赖注入容器封装起来,我们定义了一个ISCFBuilder 来组装函数的配置和服务:
SCF 云函数开发
我们使用.NET Core的控制台程序来开发云函数,创建一个控制台程序, 引用Yhd.TencentCloud.SCF 包,把Program.cs 替换成类似代码:
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using System.Threading.Tasks;
using Yhd.FindJob;
using Yhd.TencentCloud.SCF.Executors;
public class Index
{
static async Task Main(string[] args)
{
var builder = new HostBuilder()
.ConfigureSCF((context, scfbuilder) =
{
var configuration = scfbuilder.Configuration;
scfbuilder.Services.AddFindJob(configuration);
scfbuilder.Services.AddEasyCaching(options =
{
options.UseInMemory();
//use redis cache that named redis
options.UseRedis(configuration)
.WithJson()
;
});
scfbuilder.Services.AddTransientIFunctionInvoker, JobsHttpFunctionInvoker();
})
.UseConsoleLifetime();
var host = builder.Build();
using (host)
{
await host.RunAsync();
}
}
}
通过ConfigureSCF 可以添加函数的依赖服务,例如上面例子中的EasyCaching 以及函数的服务, 关键的一句是 scfbuilder.Services.AddTransientIFunctionInvoker, JobsHttpFunctionInvoker(); 把函数的处理逻辑使用JobsHttpFunctionInvoker 进行注入。把函数的配置放到appsettings.json。
现在SCF 云函数有个问题是本地Windows开发问题,本地的函数逻辑的测试可以通过单元测试进行。还有函数打包必须在Linux环境下进行。
云函数部署
创建 bootstrap 文件
bootstrap 是运行时入口引导程序文件,Custom Runtime 加载函数时固定检索 bootstrap 同名文件,并执行该程序来启动 Custom Runtime 运行时。Custom Runtime 支持任意语言及版本开发运行函数,主要基于 bootstrap 引导程序由开发者自定义实现。其中,bootstrap 需具备以下条件:
需具有可执行权限。
能够在 SCF 系统环境(CentOS 7.6)中运行。
下面这个是 .NET Core 3.1的云函数 bootstrap 文件
#!/bin/sh
echo "Start dotnet bootstrap ~~~"
export DOTNET_ROOT=/opt/rt
export PATH=$(pwd):/opt/rt:${PATH}
dotnet ./index/bin/Release/netcoreapp3.1/index.dll
index.dll 就是我们开发的函数文件。
成功创建 bootstrap 和 函数文件 后,目录结构如下所示:
├ bootstrap
└ index
需要在Linux 下执行以下命令,设置文件可执行权限,并将其添加至 ZIP 包
部署包准备好后,可以通过 云函数控制台 来创建和发布函数
在腾讯云云函数计算上部署.NET Core 3.1的更多相关文章
阿里云函数计算上部署.NET Core 3.1
使用阿里云ECS或者其他常见的VPS服务部署应用的时候,需要手动配置环境,并且监测ECS的行为,做补丁之类的,搞得有点复杂.好在很多云厂商(阿里云.Azure等)提供了Serverless服务,借助于 ...
IIS上部署Net.Core
部署: 1.安装vc_redist.x64vc_redist.x64 2.安装DotNetCore.1.0.0.RC2-WindowsHosting 3.安装DotNetCore.1.0.0-SDK. ...
So Easy - 在Linux服务器上部署 .NET Core App
.NET Core 是微软提供的免费.跨平台和开源的开发框架,可以构建桌面应用程序.移动端应用程序.网络应用程序.物联网应用程序和游戏应用程序等.如果你是 Windows 平台下的 dotnet 开发 ...
在IIS上部署 .Net Core 3.0 项目踩坑实录
在IIS上部署 .Net Core 3.0 项目的主要流程有: 安装并启用IIS 安装AspNetCoreModuleV2 添加.配置网站 设置应用程序池 通过VS发布 一.安装并启用IIS: 安装了 ...
在CentOS 8 上 部署 .Net Core 应用程序
在Centos 8 上 部署 .Net Core 应用程序 -- 记录篇 1.更新dnf 源 1 dnf update 2.安装 Asp.Net Core 运行时 1 dnf install ...
在腾讯云amp;阿里云上部署JavaWeb项目(Tomcat+MySQL)
之前做项目都是在本地跑,最近遇到需要在在云服务器(阿里云或者腾讯云都可以,差不多)上部署Java Web项目的问题,一路上遇到了好多坑,在成功部署上去之后写一下部署的步骤与过程,一是帮助自己总结记忆, ...
ASP.NET Core学习之四 在CentOS上部署.net core
一.安装CentOs 以前在大学学过linux,但是对命令行总是有一种深深的排斥感,几年之后,还是又回来了. 1.下载 现在没法FQ,就算是FQ网速也是蜗牛一样慢,我使用阿里云的镜像站进行下载速度还是 ...
【netcore入门】在Windows IIS上部署.NET Core 2.1项目
部署之前先检查下面2个先决条件是否满足 1.安装了 IIS 模块 win7 在 控制面板→程序和功能→打开或关闭Windows功能→勾选Internet 信息服务(Internet Informati ...
CentOS7系统上部署.net core程序
一.准备工作 首先安装 xshell 和 xftp ,前者用于SSH连接Linux服务器,后者用于FTP上传下载文件. xshell和xftp个人使用是免费的,下载地址 之后分别输入用户名和密码登录主 ...
关于sentos上部署.net网站和linux部署netcore的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
今天给各位分享洛杉矶芝加哥服务器那里快的知识,其中也会对美国洛杉矶服务器地址进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文导读目录: 1、美国服务器是不是洛杉矶地区的机房国...
今天给各位分享扁平式的网站的知识,其中也会对扁平式网站结构进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文导读目录: 1、网站的逻辑结构可以分为哪些形式 2、扁平化网站结...
本篇文章给大家谈谈公司域名可以以个人名义注册吗,以及域名注册企业跟个人的区别对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 本文导读目录: 1、公司网站空间域名申请,可以用个人名义备案吗?...
本文导读目录: 1、上海哪里有组装电脑的? 2、在上海去哪里组装电脑啊? 3、去上海哪里组装电脑比较好。谁知道信誉度比较好的店 4、上海有什么地方组装电脑最好最可靠 5、上海 去哪里买...
本篇文章给大家谈谈好的网站建设价格,以及企业网站建设价格对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 本文导读目录: 1、建设网站的收费标准是什么? 2、网站建设一般需要多少钱? 3...
今天给各位分享山东青岛网站建设公司哪家专业的知识,其中也会对青岛网站搭建进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!文章目录列表: 1、青岛网站制作哪家好?? 2、想问下...
本篇文章给大家谈谈asp国外网站,以及asp网站怎么打开对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 文章目录列表: 1、哪位仁兄给我些国外比较好的军事网站? 2、谁能帮我找到一些国外C...
今天给各位分享i34160配gtx750ti的知识,其中也会对i33240配gtx750怎么样进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文导读目录: 1、我的电脑是750...