云服采用阿里云的操作系统镜像
1。设置服务器远程连接密码,并远程连接服务器(浏览器连接即可)
2。注册登录宝塔,获取安装链接。注意不要选择在线安装,会有失败的几率
虽然 宝塔说明是只能安装于CentOs7.x。但实测在号称兼容CentOs8.x 的 Alibaba Cloud Linux下可以正常安装和使用。
安装成功出现以下内容,此时默认端口为8888,注意服务器的防火墙或者安全组,要做端口开放
登录宝塔面板,用给定的用户名密码,绑定宝塔的账号。这个是自己在宝塔注册的账号密码
3。安装nginx第一次登录,会跳出安装推荐。可以根据需要安装。这里我只需要nginx,所以只安装nginx
开始安装
更改默认端口。宝塔面板左侧,面板设置
提交修改后,重新登录面板。注意,修改的端口要在服务器的防火墙(安全组)中放行
4。安装dotnet 运行时sdk。
更换端口后第一次登录终端,会要求重新输入密码,注意,此处密码是服务器的ssh密码,就是最开始重置的那一个
在终端中执行以下几个命令
sudo rpm -Uvh https://packages.microsoft.com/config/centos/8/packages-microsoft-prod.rpm。这一步很重要,没有这一步,下一步不给执行
sudo yum install aspnetcore-runtime-6.0,如果只是发布,这个就够了
sudo yum install dotnet-sdk-6.0
安装完成后查看一下dotnet位置
which dotnet
dotnet 6.0默认是装在这里的,/usr/bin这个路径已经在path中,所以我们不需要再添加
上传打包好的程序文件。宝塔面板支持目录上传
特别要注意文件夹名,centos大小写敏感
6。再次打开终端,新建service文件,dotnet发布在linux上的原理是,先由sdk将dll文件解析并运行,然后由nginx反向代理来访问。所以要将dotnet程序运行起来,并将它注册为系统的service。
运行 vim /etc/systemd/system/myweb.service
文件内容:
[Unit]
Description=MyWeb
[Service]
WorkingDirectory=/www/myWeb
ExecStart=/usr/bin/dotnet /www/myweb/myweb.Web.dll --urls=http://localhost:3000
Restart=always
RestartSec=10
SyslogIdentifier=myweb
User=root
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
[Install]
WantedBy=multi-user.target
然后按ESC,然后输入:wq退出
注意:第一是大小写敏感,第二是dotnet 6.0安装时会默认路径,并且会将dotnet加入到/usr/bin,而这个路径已经加入到path,无需再添加了。
注意,ExecStart一行,/app/myweb/myweb.Web.dll换成你自己项目的dll文件
执行systemctl enable myweb.service
执行systemctl start myweb.service
执行systemctl status myweb.service,若看到绿色的active(running)字样说明服务正常启动了。
7。配置Nginx站点
这里要注意,如果监听端口不是80,那么要在域名一栏里写上:xxx.com:xxxx(端口号),网站建立后,端口号无法修改。如果需要改,只能删除重建
添加站点后,点击设置
可以将原本的内容删除掉。如果你对配置文件很熟悉,或者有特殊的东西要设置,也可以增加内容。这里我直接复制了MSDN上提供的模板
server {
listen 80;
server_name localhost;//域名
location / {
proxy_pass http://127.0.0.1:3000; //自定义端口号,需要在云服安全组或防火墙中添加规则(放开)
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;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
存盘退出
执行nginx -s reload 以刷新设置
此时网站可以正常访问
我发布的程序是asp.net core api 。发布过程与发布网站相似,但发布完成后发现swagger无法访问,但api的功能是可以使用的。
这里要注意:
服务端口号与监听端口号要不同才可以,防火墙(安全组)放行的是监听端口号。
至此宝塔面板下dotnet6.0布署完成。
补充说明:非宝塔面板下,可以用dnf代替yum