Popular blog tags

记一次真实的 asp .net core 3.0网站部署到阿里云ubuntu18.04 *64的经历。

1.准备工作

1.1台ubuntu 18.04 64位主机

AspNetCore 3.0 在ubuntu上运行的条件是ubuntu 版本号必须在16.04及以上,最好是64位版本。32位版本当然也能装,方式不一样,需要另外安装个什么包,没看,被我直接无视了。本次购买的是ubuntu 18.04 64位主机。

1.2 域名1个

先备案,手续并不复杂但我觉得超级麻烦,过程不想多说。

2.实施步骤

为避免中间出错查找原因花时间,我是一步一步往下走的。

step 1:修改ubuntu 18.04 64的实例root用户密码,安装客户端winscp,连上ubuntu 18.04 64位主机

在阿里云web控制台修改ubuntu 18.04 64的实例root用户密码,然后用winscp连上主机。以前我在阿里云web控制台直接登陆ubuntu 18.04 64位主机,然后照着手册敲命令,一长串命令敲进去运行不对,还要按循序逐个字母对照检查哪里敲掉了、敲多了,敲错了,敲错循序了,累死。装上winscp后,直接把手册上的命令复制、粘贴到终端窗口、回车执行,一气呵成。

step 2:在ubuntu 18.04 64位主机上运行一个网站,确保本机运行正常。

2.1 首先安装 .NET core sdk 3.0

操着手册:https://dotnet.microsoft.com/download/linux-package-manager/ubuntu18-04/sdk-current

2.1.1 Install the .NET SDK

sudo add-apt-repository universe
sudo apt-get update
sudo apt-get install apt-transport-https
sudo apt-get update
sudo apt-get install dotnet-sdk-3.0

2.2.2 Check everything installed correctly

#dotnet --info

NET Core SDK (reflecting any global.json):
 Version:   3.0.100
 Commit:    04339c3a26

Runtime Environment:
 OS Name:     ubuntu
 OS Version:  18.04
 OS Platform: Linux
 RID:         ubuntu.18.04-x64
 Base Path:   /usr/share/dotnet/sdk/3.0.100/

Host (useful for support):
  Version: 3.0.0
  Commit:  95a0a61858

.NET Core SDKs installed:
  3.0.100 [/usr/share/dotnet/sdk]

.NET Core runtimes installed:
  Microsoft.AspNetCore.App 3.0.0 [/usr/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 3.0.0 [/usr/share/dotnet/shared/Microsoft.NETCore.App]

To install additional .NET Core runtimes or SDKs:
  https://aka.ms/dotnet-download

 

2.2 建一个 mvc 网站

dotnet new mvc -o test

2.3 运行 网站

dotnet run --urls http://0.0.0.0:5005

2.4 用客户端浏览网站

wget http://localhost:80/

输出:

Resolving localhost (localhost)... ::1, 127.0.0.1
Connecting to localhost (localhost)|::1|:5000... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified
Saving to: ‘index.html’
index.html              [ <=>                ]      12  --.-KB/s    in 0s 

执行以下命令,查看index.html

more index.html

index.html内容

Hello World!

安装一个,检查一个,确保每一步安装正确,到这里如果一切正常,说明本机运行OK

 

 

step 3:域名指向在ubuntu 18.04 64位主机上运行的一个网站

这一步骤有三个地方要注意

3.1检查两层防火墙的80端口

3.1.1.1测试远程主机的端口是否开启

telnet 192.168.1.103 80

3.1.1.2 查看ubuntu 18.04 64位主机的端口开启情况(ubuntu下执行)

sudo ufw status

 

     用户请求80端口->阿里云的前端防火墙(检查80端口是否打开?)->ubuntu 18.04 64位主机(检查80端口是否打开?)->到达web server(Microsoft.AspNetCore.Server.Kestrel80端口)

      阿里云的ubuntu 18.04 64位主机前面有一个前端防火墙,也即用户安全规则的配置,在web控制台里面操作,把你的ubuntu 18.04 64位主机加入到安全组里面,安全组里面配置了是否允许80端口的数据进来,和windows server 的高级防火墙是一个原理。

操作手册:首先登录到云管理控制台,然后“实例”->“更多”->“网络安全和安全组”->“安全组配置”->“配置规则”->“入方向”->“添加安全组规则”->端口范围  80/80 授权对象  0.0.0.0/0

3.2 web server 监听80端口的IP地址

error:

dotnet run --urls http://localhost:80
warn: Microsoft.AspNetCore.Server.Kestrel[0]
      Unable to bind to http://localhost:5005 on the IPv6 loopback interface: 'Cannot assign requested address'.
Hosting environment: Development
Content root path: /root/myapp/test
Now listening on: http://localhost:80
Application started. Press Ctrl+C to shut down.

correct:

dotnet run --urls http://0.0.0.0:5005
warn: Microsoft.AspNetCore.Server.Kestrel[0]
      Unable to bind to http://localhost:5005 on the IPv6 loopback interface: 'Cannot assign requested address'.
Hosting environment: Development
Content root path: /root/myapp/test
Now listening on: http://0.0.0.0:80
Application started. Press Ctrl+C to shut down.

前一个在127.0.0.1监听80端口,后一个在 0.0.0.0上监听80端口。

因为本机运行正常,但外面死活连不上,检查80端口是始终是关闭的。这一步花了我好长时间来排错。最后啥问题没有,就是网站的监听地址不对。

 

step 3:安装nginx,在一台服务器上反向代理多个网站

下次写

step 4:将nginx 配置为https

下次写

step 5:安装mongodb

下次写

step 6:安装redis

安装失败

step 6:上传真实的网站

错误处理

1.网站用release方式发布后出现上传图片出现错误:

/Blog/Edit/Access to the path '/publish/wwwroot/uploadimages/20191123200959.png' is denied.

Ubuntu access publish/wwwroot' is denied

目录没有写入权限,修改目录权限。

 

2.登陆post出现错误

nginx 配置注释掉

 # proxy_set_header Connection "Upgrade";

 

 

 

 

 

 

 

 

 

 

 

非常正常关闭Hello World Web Server的处理

https://blog.csdn.net/genwise/article/details/81322371

Programming C# on Ubuntu Linux

https://tqdev.com/2016-dot-net-core-ubuntu-linux