CentOS安装 .NET Core 运行环境 并运行 .NET Core 程序
版权申明:本文为原创文章,转载请注明原文出处
索引
CentOS7安装.Net Core
安装前准备
安装 .NET 之前,请运行以下命令,将 Microsoft 包签名密钥添加到受信任密钥列表,并添加 Microsoft 包存储库。 打开终端并运行以下命令
sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm首先运行 升级所有包同时也升级软件和系统内核
sudo yum update
安装
如果你只是运行asp.net core的web程序 执行下面安装指令 只安装aspnetcore-runtime运行时
sudo yum install aspnetcore-runtime-3.1如果你运行.net core应用程序 安装dotnet-runtime运行时
sudo yum install dotnet-runtime-3.1如果你需要在centos上编译开发.net core应用则需要安装SDK
sudo yum install dotnet-sdk-3.1
注:如果是服务器,安装运行环境,只需要安装aspnetcore-runtime和dotnet-runtime就可以了
使用
查看信息
1 | [root@localhost ~]# dotnet --info |
运行
进入项目文件夹 运行
1
2
3
4
5
6
7
8
9
10
11[root@localhost dome2]# dotnet dome2.dll
info: Microsoft.Hosting.Lifetime[0]
Now listening on: http://localhost:5000
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Production
info: Microsoft.Hosting.Lifetime[0]
Content root path: /root/dome2
^Cinfo: Microsoft.Hosting.Lifetime[0]
Application is shutting down...进入上传的asp.net core程序所在文件夹
注意:运行dll程序是必须在当前文件夹运行 否者 会影响站点根目录路径 造成不可预计错误 如静态文件404可以在后面增加参数来修改默认的5000端口 如:
dotnet xxx.dll --urls http://localhost:4000上面的指令表示:启动后监听所有可访问 域名或IP 的4000端口
增加参数来实现后台运行 如:
nohup dotnet /路径/xxx.dll --urls http://localhost:4000 &简单说明 nohup 表示不挂断的运行命令 后面的 & 表示这个命令放在后台执行
创建服务 实现开机启动
创建服务文件
vim /usr/lib/systemd/system/testApp.service文件内容
1 | [Unit] |
常用命令
//设置开机启动testApp.service服务 systemctl enable testApp.service //开启服务 systemctl start testApp.service //查询服务状态 systemctl status testApp.service //停止服务 systemctl stop testApp.service //重启服务 systemctl restart testApp.service //修改service文件后 执行重载命令 systemctl daemon-reload
配置 nginx 反向代理到 asp.net core 程序
在命令行输入whereis nginx 找到nginx的安装目录 通常为:/usr/local/nginx/
配置文件 找到配置文件/usr/local/nginx/conf/nginx.conf
编辑修改 可以使用vi 或则使用sftp工具编辑修改
找到需要配置反向代理的server块 添加下面反向代理参数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21server {
listen 80; #此配置的是80端口 也可以配置443 ssl端口的HTTPS
server_name 192.168.1.2;
access_log /usr/local/nginx/localhost/logs/access.log; #自定义日志路径
error_log /usr/local/nginx/localhost/logs/error.log; #自定义日志路径
location / {
# root abc.com;
# index index.html index.htm;
proxy_pass http://127.0.0.1:4000; #反向代理目标服务器
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 500 502 503 504 /50x.html;
location = /50x.html {
root localhost;
}
}修改后保存
返回到/usr/local/nginx/目录 执行指令:
./sbin/nginx -s reload加载修改后到 新配置
外网现在可以访问了 http://api.test.net 或 https:// api.test.net
注意问题
在linux上运行asp.net core时需要注意 静态文件404看次文档
wwwroot是放静态文件的,Startup的配置里面要app.UseStaticFiles();
在不同的目录下donet xxx.dll,其目录就作为基目录。
也就是说假如你在/root文件夹内执行dotnet MySite.dll,你站点就会把/root作为基目录,
而你的wwwroot是放在其他目录的 如:/usr/mysite/wwwroot 那你所有静态文件就404了。
正确的操作姿势是,需要cd 进入站点目录启动站点,再启动站点更新站点的时候也要注意。与IIS不同,在Linux上dotnet不占用dll,更新站点可以直接删除/替换所有文件。但是站点需要重启,不然运行的还是更新前的
CentOS安装 .NET Core 运行环境 并运行 .NET Core 程序

