重点重点重点在这里
linux环境搭建
安装donet运行环境
登录centos服务器后,第一步就是安装dotnet运行库了 对应程序的运行库版本,我用的是3.1
官方地址
打开https://dotnet.microsoft.com/download,
https://dotnet.microsoft.com/download/linux-package-manager/centos/sdk-current
官方文档没有细看,我直接用命令装的,有介绍说只运行,不开发,只需安装runtime运行库,我把sdk和运行库都装了。
1、注册 Microsoft 密钥和源
sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm
# sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
2、安装 .NET Core SDK
sudo yum update(我没运行yum update,感觉没什么影响)
sudo yum install dotnet-sdk-3.1
# sudo yum install dotnet-sdk-3.1
安装过程没有截图,配一张网上找到的截图,注意修改版本不同。
3、安装 ASP.NET Core 运行时
# sudo yum install aspnetcore-runtime-3.1
4、测试.NET SDK安装成功:
# dotnet --version
# dotnet --info
至此,已经安装成功了。
然后把你的asp.net core发布后的文件上传到服务器上,我用的是WinSCP上传软件,用你的root账号密码登录,协议为SFTP
然后在linux中切换到.net目录上,cd /var/www,然后运行dotnet xxxx.dll
请注意,要需分大小写!要需分大小写!要需分大小写!
dotnet xxxx.dll //一定要注意大小写
此时本地访问是可以的了。
请注意,现在外网还不能访问你的5000端口的,为什么?
第一,看我上面的listening on http://localhost:5000,这个dotnet默认只监听本地的5000端口,所以外网无法访问,解决方法就是在命令后面加上参数urls
dotnet xxxx.dll --urls http://*:5000
这条语句的参数写法网上介绍的各不相同,只有这个写法才成功了。带引号和等号的都不行。
另外这种启动方式有个弊端就是,如果是命令方式启动的,关闭Xshell的会话之后,站点同时会自动关闭,无法访问
解决办法:
1.后台进程模式启动和停止站点,避免关闭会话后,站点无法访问
#进入www目录
cd /var/www
#启动站点,自定义端口号,运行环境
nohup dotnet Demo.Net.Core.dll --urls="http://*:8081;http://*:8082" --environment=Delopment > /dev/null 2>&1 &
#实测
nohup dotnet IFXTrade.Core3.dll --urls=http://*:5000 --environment=Delopment > /dev/null 2>&1 &
#查看相关进行
ps -aux | grep "Demo.Net.Core.dll"
#实测
ps -aux | grep " IFXTrade.Core3.dll"
#访问启动的站点
curl http://localhost:8081/weatherforecast
#关闭站点进程,当前进程直接使用Ctrl+c,这里的35520是之前开启的Dotnet 进程ID
kill 35520
这里使用后台进程,关闭Xshell也不会关闭站点,在当前进程,停止站点直接使用Ctrl+c,否则需要找出进程ID,然后KILL进程。
/dev/null:/dev/null相当于执行了command 1 > /dev/null。执行command产生了标准输出stdout(用1表示),重定向到/dev/null的设备文件中
/dev/null可以理解为/dev路径下的空文件;该命令将command命令的标准输出输出到空文件中
2>&1:可以理解为执行command产生的标准输出重定向到文件中,标准错误也重定向到文件中,期间只打开一次文件,&1的含义就可以理解为用标准输出的引用,引用的就是重定向标准输出产生打开的文件。
注意:后台进程虽然可以再Xshell关闭后还能运行,但是当系统关机重启后,进程就没有了,这个时候还是需要手动启动,所以下一篇文章将会介绍为dotnet创建守护进程的方式来保证开机就能访问站点
2.安装守护进程
第二 Centos的防火墙默认是开启的,所以端口还得把防火墙关了,或在防火墙里添加个端口
/以下操作二选一
systemctl status firewalld // 查看防火墙状态
systemctl stop firewalld //关闭防火墙
firewall-cmd --zone=public --add-port=5000/tcp --permanent // permanent参数是永远存在,不然的话,重启后就没有了
firewall-cmd --reload // 重启防火墙 ,添加端口后记得执行此命令
一般来说,现在就你可以通过外网地址加5000的端口访问你的网站了。
再往后要部署安装Nginx 这个我没映射成功,就不在记录了。