ASP.NET Core快速入门之环境篇

前言

ASP.NET Core 是一个开源和跨平台的框架,用于构建如 Web 应用、物联网(IoT)应用和移动后端应用等连接到互联网的基于云的现代应用程序。ASP.NET Core 应用可运行于 .NET Core 和完整的 .NET Framework 之上。它整合了原来ASP.NET中的MVC和WebApi框架,你可以在 Windows、Mac 和 Linux 上跨平台的开发和运行你的 ASP.NET Core 应用。

vmware虚拟机安装

vmware哪里下载?360软件管家就可以下载。然后网上找个序列号。

我这里安装的是12.1.1

安装很简单一直下一步就好了。

CentOS7.3安装

下载CentOS http://isoredirect.centos.org/centos/7/isos/x86_64/ 我们可以选择163或阿里云的节点,速度会快点。

下载完成后打开vmware准备安装

菜鸟可以选择有界面的

选好后然后开始安装,然后设置密码,然后重启就好了。

Windows的客户端软件

下载安装Xshell https://www.baidu.com/baidu?word=Xshell
下载安装WinSCP https://www.baidu.com/baidu?word=WinSCP (你也可以使用Xftp,记得选sftp,不然需要服务器支持ftp)
进入CentOS,右键

开始第一个命令。查看IP

ifconfig -a

接下来,可以全部由Xshell操作。

打开Xshell

然后输入用户名密码登录。(使用root登录)

.NET Core1.1安装

根据微软资料 https://www.microsoft.com/net/core

在命令行执行:

sudo yum install libunwind libicu  #(安装libicu依赖)
curl -sSL -o dotnet.tar.gz https://go.microsoft.com/fwlink/?linkid=848821 #(下载sdk压缩包) 根据网速,可能快可能慢
sudo mkdir -p /opt/dotnet && sudo tar zxf dotnet.tar.gz -C /opt/dotnet #(解压缩)
sudo ln -s /opt/dotnet/dotnet /usr/local/bin #(创建链接)
dotnet new console -o hwapp   # 我们初始化一个示例Hello World应用程序 (这里稍微耗时点)
cd hwapp
dotnet restore
dotnet run   #运行应用程序 

看到打印的hello world证明 .net core的环境已经装好了。

【小白技巧】

  • "#"是注释
  • shirf + insert 粘贴 (不能ctrl + c v 有点不习惯)
  • ctrl + insert 复制

nginx1.12.1安装

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的开机启动

然后登录 CentOs系统 打开浏览器 输入 :192.168.233.129 (之前查到的IP)

看到这个页面就代表安装成功了。

配置防火墙

如果你在物理机的浏览器访问,你会发现访问不了。
那是因为CentOs的防火墙拦截了,我们打开端口。

firewall-cmd --zone=public --add-port=80/tcp --permanent #(开放80端口)
systemctl restart firewalld #(重启防火墙以使配置即时生效)

然后访问成功。

部署ASP.NET Core应用程序

打开VS2017 新建一个.net core 项目

右键发布(发布之前最好先在本地跑下看正常不)

然后打开我们的WinSCP(前面下载的)

点击登录,然后就可以看到CentOs系统的文件目录了。然后随便建个文件夹,准备放我们发布发好的程序。

右键上传

然后命令运行

cd /home/NetCoreDemo #这个目录 要输入你自己对应放的目录
dotnet netcoreDemo.dll # netcoreDemo.dll 这个对应你建的项目生成的dll

看到了5000 端口的一个网址,证明部署好了。
然后在虚拟机里面访问 http://localhost:5000 ,ok。

nginx 配置

前面我们只说了nginx,并没有说是干嘛的。nginx的作用有点先iis,是个web服务器。做转发。
我们发现http://localhost:5000 可以访问。但是通过ip却不能访问。那么我们现在就可以通过80访问nginx,然后nginx再帮我们访问5000。

打开路径 /etc/nginx/conf.d
编辑default.conf 文件内容替换为

server {
    listen 80;
    location / {
        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;
    }
}

将nginx添加至SELinux的白名单,否则会报502错误。

nginx -s reload #使其即时生效
【注意】然后这里访问下 http://192.168.233.130/ (对应你自己的centos ip,这一步好重要。应该是要先主动触发这个502错误吧。)
yum install policycoreutils-python  #(选y)
cat /var/log/audit/audit.log | grep nginx | grep denied | audit2allow -M mynginx
semodule -i mynginx.pp

SELinux 对nginx访问目录的影响
https://www.cnblogs.com/mywebnumber/p/5572984.html

然后我们就可以在物理机上通过ip访问了(不用带端口了,直接80 然后 nginx 转到了5000)。

配置守护服务(Supervisor)

yum install python-setuptools
easy_install supervisor  #安装Supervisor
mkdir /etc/supervisor
echo_supervisord_conf > /etc/supervisor/supervisord.conf  #配置Supervisor

文件的最后

;[include]
;files = relative/directory/*.ini

改成(【注意】去掉;且不能有空格)

[include]
files = conf.d/*.conf

进入目录 /etc/supervisor/ 新建 conf.d文件夹,conf.d文件夹下新建 netcoreDemo.conf文件
内容(【注意】看 第二行 第三行的 注释,根据实际名字填入

[program:netcoreDemo]
command=dotnet netcoreDemo.dll ; (注意)运行程序的命令
directory= /home/NetCoreDemo/ ; (注意 注意)对应的你的项目的存放目录,这个地方好多初学者搞错!!!
autorestart=true ; 程序意外退出是否自动重启
stderr_logfile=/var/log/WebApplication1.err.log ; 错误日志文件
stdout_logfile=/var/log/WebApplication1.out.log ; 输出日志文件
environment=ASPNETCORE_ENVIRONMENT=Production ; 进程环境变量
user=root ; 进程执行的用户身份
stopsignal=INT
supervisord -c /etc/supervisor/supervisord.conf
ps -ef | grep netcoreDemo  #【注意】netcoreDemo是上面 program:netcoreDemo 的命名
supervisorctl reload  #重新加载

然后就好了,现在关掉那个5000界面也可以访问。

配置Supervisor开机启动

打开目录 /usr/lib/systemd/system/ 新建文件 supervisord.service

内容:

# dservice for systemd (CentOS 7.0+)
# by ET-CS (https://github.com/ET-CS)
[Unit]
Description=Supervisor daemon

[Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf
ExecStop=/usr/bin/supervisorctl shutdown
ExecReload=/usr/bin/supervisorctl reload
KillMode=process
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=multi-user.target

执行命令:

systemctl enable supervisord
systemctl is-enabled supervisord #来验证是否为开机启动

systemctl stop supervisord      #关闭
systemctl disable supervisord #禁用

到此,完工。现在重新电脑什么都不用管,直接可以访问部署好的网站。

MySql5.6.37安装

http://www.cnblogs.com/starof/p/4680083.html (我用的方法二)

安装rar压缩

下载 http://www.rarsoft.com/download.htm

把文件放服务器上。然后cd到这个目录执行

tar -zxvf rarlinux-x64-5.4.0.tar.gz # rarlinux-x64-5.4.0.tar.gz是你下载的文件名
cd rar
make
rar #安装

安装好了后我们就可以打命令解压文件了

cd #跳到压缩文件目录
rar x ceshi.rar     #解压到当前文件夹 ceshi.rar是压缩文件名
rar a abc.rar ceshi #压缩文件夹 到 abc.rar

在CentOS中安装完rar命令,会自动安装zip命令

cd /home #进入/home目录
zip -r mydata.zip mydata      #把/home目录下面的mydata目录压缩为mydata.zip
unzip mydata.zip -d mydatabak #把/home目录下面的mydata.zip解压到mydatabak目录里面
zip -r abc123.zip abc 123.txt #把/home目录下面的abc文件夹和123.txt压缩成为abc123.zip
unzip wwwroot.zip             #把/home目录下面的wwwroot.zip直接解压到/home目录里面
unzip abc\*.zip               #把/home目录下面的abc12.zip、abc23.zip、abc34.zip同时解压到/home目录里面
unzip -v wwwroot.zip          #查看把/home目录下面的wwwroot.zip里面的内容
unzip -t wwwroot.zip          #验证/home目录下面的wwwroot.zip是否完整
unzip -j wwwroot.zip          #把/home目录下面wwwroot.zip里面的所有文件解压到第一级目录

常用linux命令

cd                 #目录跳转
cd /               #回到上一个目录
ls                 #查看目录下的文件
df -h              #查看文件使用情况
mkdir              #创建文件夹文件夹
vi                 # 编辑文件
:wq!               #强制保存文件,并退出vi

ifconfig -a        #查看ip
free #查看系统资源使用情况 http://blog.csdn.net/zhongluhuaok/article/details/52804187

firewall-cmd --zone=public --add-port=80/tcp --permanent     #开放80端口,也可以是其他端口
firewall-cmd --zone=public --remove-port=80/tcp --permanent  # 关闭端口
systemctl restart firewalld                                  #重启防火墙,使其生效

service mysqld restart #重启mysql
nginx -s reload        # nginx 生效
reboot                 # 重启系统

supervisorctl start program_name   #启动某个进程(program_name=你配置中写的程序名称)
supervisorctl stop program_name    #停止某一进程 (program_name=你配置中写的程序名称)
supervisorctl reload               #重新启动配置中的所有程序
supervisorctl stop all             #停止全部进程
supervisorctl update               #更新新的配置到supervisord
supervisorctl restart program_name #重启某一进程 (program_name=你配置中写的程序名称)
supervisorctl                      #查看正在守候的进程
http://blog.csdn.net/shudaqi2010/article/details/51153961

clear          #刷新终端屏幕 (或者 ctrl + l)
exit           #退出
shift + insert #粘贴
ctrl + insert  #复制

补充

centos上升级 .net core 2.0 需要先执行官网命令

curl -sSL -o dotnet.tar.gz https://aka.ms/dotnet-sdk-2.0.0-linux-x64
mkdir -p ~/dotnet && tar zxf dotnet.tar.gz -C ~/dotnet
export PATH=$PATH:$HOME/dotnet

然后再删除原有文件夹

rm -rf /opt/dotnet                              #删除原有文件夹
rm -rf /usr/local/bin/dotnet                    #删除原来定义的dotnet命令
sudo ln -s /root/dotnet/dotnet /usr/local/bin   #重新定义dotnet命令

项目程序也要升级到2.0,不然dotnet dll不能成功。

以上就是ASP.NET Core快速入门之环境篇的详细内容,更多关于ASP.NET Core环境搭建的资料请关注我们其它相关文章!

(0)

相关推荐

  • ASP.NET Core扩展库之Http通用扩展库的使用详解

    本文将介绍Xfrogcn.AspNetCore.Extensions扩展库对于Http相关的其他功能扩展,这些功能旨在处理一些常见需求, 包括请求缓冲.请求头传递.请求头日志范围.针对HttpClient与HttpRequestMessage.HttpResponseMessage的扩展方法. 一.开启服务端请求缓冲 ASP.NET Core 中请求体是不能多次读取的,由于在MVC中,框架已经读取过请求体,如果你在控制器中再次读取,将会引发异常,如下示例: [ApiController] [Ro

  • ASP.NET Core实现自动依赖注入

    在开发.NET Core web服务的时候,我们习惯使用自带的依赖注入容器来进行注入. 于是就会经常进行一个很频繁的的重复动作:定义一个接口->写实现类->注入 有时候会忘了写Add这一步,看到屏幕上的报错一脸懵逼,然后瞬间反应过来忘了注入了.赶紧补上serviceCollection.AddXXX这句话 虽然说有很多开源框架已经实现了类似的工作,比如AutoFac,Unity等依赖注入框架.但是这些库都太庞大了,我个人还是喜欢轻量级的实现. 定义一个枚举 [AttributeUsage(At

  • ASP.NET Core中使用LazyCache的全过程

    前言 微软的 ASP.NET Core 已经是一个非常流行的用于构建 高性能, 模块化 并能运行在 Windows, Linux, MacOS 上的 WEB 框架,通常能够让程序保持高性能的一个有效途径就是通过缓存热链上的数据来应对高频的请求. LazyCache 是一款基于内存的易于使用和线程安全的缓存组件,值得注意的是,这里的 Lazy 指的是 LazyCache 永远不会在 缓存未命中 时触发一次以上的缓存委托函数,因为内置了锁,换句话说,Lazy 减少了不必要的计算开销,这篇文章我们将会

  • 如何在ASP.Net Core中使用Serilog

    记录日志的一个作用就是方便对应用程序进行跟踪和排错调查,在实际应用上都是引入 日志框架,但如果你的 日志文件 包含非结构化的数据,那么查询起来将是一个噩梦,所以需要在记录日志的时候采用结构化方式. 将日志结构化可以更容易的查询和分析,做法就是在写入的时候定义好数据的格式,这种格式包括:xml,json,或者你希望转成的任何结构. Serilog 是一个第三方,开源的结构化日志框架,它的高层封装可以让开发者更容易的将日志记录到 console,file 和你能想到的各种 存储系统,这篇文章我们将会

  • ASP.NET Core扩展库之Http请求模拟功能的使用

    如今,完全独立的业务应用几乎不存在,不管是在企业内部微服务之间的调用,还是与外部第三方服务的调用,Http的API交互是常见的场景,这些实际情况给我们的开发带来了比较大的挑战,一是第三方服务可能会牵制我们的开发进度,特别是在多团队开发的情况下,由于依赖于其他团队的服务,有时候需要等待其他团队的进度,导致自己团队的无效等待.有时因为其他团队的延期,导致团队的被动延期.二是第三方服务的质量问题或开发过程中的频繁更新导致的部署问题,将严重拖累自己团队的开发进度,同时让你无法专心的开发自己的服务.三是单

  • ASP.NET Core自动生成小写破折号路由的实现方法

    默认情况下,ASP.NET Core使用如 http://localhost:5000/HomeIndex 类的大驼峰路由.但是如果想使用小写的路由,并且这些路由用破折号分隔:http://localhost:5000/home-index它们比较常见且一致. 举例.NET常见路由 http://localhost:5000/User/ListPages 想要的效果 http://localhost:5000/user/list-pages 1.如何生成小写的路由可以这样设置 services.

  • ASP.NET Core中使用令牌桶限流的实现

    在限流时一般会限制每秒或每分钟的请求数,简单点一般会采用计数器算法,这种算法实现相对简单,也很高效,但是无法应对瞬时的突发流量. 比如限流每秒100次请求,绝大多数的时间里都不会超过这个数,但是偶尔某一秒钟会达到120次请求,接着很快又会恢复正常,假设这种突发的流量不会对系统稳定性带来实质性的影响,则可以在一定程度上允许这种瞬时的突发流量,从而为用户带来更好的可用性体验.这就是令牌桶算法的用武之地. 该算法的基本原理是:有一个令牌桶,容量是X,每Y单位时间会向桶中放入Z个令牌,如果桶中的令牌数超

  • ASP.NET Core扩展库之实体映射使用详解

    在分层设计模式中,各层之间的数据通常通过数据传输对象(DTO)来进行数据的传递,而大多数情况下,各层数据的定义结构大同小异,如何在这些定义结构中相互转换,之前我们通过使用AutoMapper库,但AutoMapper功能庞大,使用较为复杂,而在很多场景下,可能我们只需要一些基础的对象映射功能,那么此时你可以选择扩展库中的轻量级AutoMapper实现. 实体映射包含以下核心功能: 在使用之前无需手动定义类型之间的映射关系 采用动态编译.缓存转换委托,提升性能. 支持通过特性定义属性映射关系 支持

  • ASP.NET Core 5中如何生成PDF文档

    前言 大家用 ASP.NET Core 进行项目开发时,常会有生成 PDF 的需求,那如何生成呢?这篇文章我们就来讨论如何通过 DinkToPdf 来生成 PDF 文档,DinkToPdf 封装了 C++ 的 wkhtmltopdf 工具包,前者通过 P/Invoke 的方式来调用后者,而底层的 wkhtmltopdf 利用 Qt WebKit 渲染引擎将 html 转成 pdf. 安装 DinkToPdf 要想安装 DinkToPdf,可以通过 Nuget 可视化界面或者通过 NuGet Pa

  • 如何在ASP.NET Core中使用HttpClientFactory

    ASP.Net Core 是一个开源的,跨平台的,轻量级模块化框架,可用它来构建高性能的Web程序,这篇文章我们将会讨论如何在 ASP.Net Core 中使用 HttpClientFactory. 为什么要使用 HttpClientFactory 可以用 HttpClientFactory 来集中化管理 HttpClient,工厂提供了对 HttpClient 的创建,配置和调度,值得一提的是:HttpClient 一直都是 Http 请求业务方面的一等公民. HttpClient 虽好,但它

随机推荐