目录
【更重要的一步也来了 - 如何保持core网站一直启动状态】
温馨提示:记得安装时要在根目录下安装,不要cd切换到了其他目录
【本次小目标】
搭建和部署.net core网站,然后可通过外网IP访问到网站,就这么简单的小目标
【小插曲】
第一次接触linux是在阿里云购买的centos7云服务器,当时已经学习到部署网站那步骤,然后在centos里面可以访问到网站,使用外网ip一直访问不到,各种找资料各种猛操作后,咨询阿里云工程师,说是国外centos服务器在国内是无法访问到的!尴尬了,折腾那么久,原来是这样!
由于一直使用的是C#语言,所以用的服务器基本都是windows Server 2003~2012,.net core支持跨平台,自然就可以扩展到其他服务器的学习了。
【腾讯云】
购买一个月,配置如下
【登录】
1)页面控制台里是支持直接登录的
2)WebShell 登录页面
一般云服务商都有这一登录方式,不管是windows还是linux服务器都可以使用这一登录方式。
当然,一般我们还可以使用其他工具进行登录
3)设置密码
默认是没有密码的,可以进行密码重置
4)登录成功标志
登录成功后,你就可以开始搭建网站了
5)使用Xshell软件来登录linux-centos服务器
【Asp.Net Core 2.1】网站部署
1)简单搭建一个能够运行访问的网站
2)查看Core本地的开发环境和版本(本地和服务器Core的版本必须一致)
cmd > dotnet --version 或者 dotnet --info,即可查看到core的运行环境和版本
3)开启传说的手打命令,先添加yum插件
手打命令的原则:一般没有任何提示就是表示成功了,或者有完成或者成功提示就是成功了
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
4)再安装.net core 2.1 sdk
sudo yum install dotnet-sdk-2.1
先会有一个大概的预览和安装文件的大小信息,需要确认后进行安装
选择y=yes,安装过程会有几次y确认,输入y回车即可
5)查看安装好的版本
6)centos服务器创建一个目录-myweb
命令:mkdir myweb
用于保存网站文件
7)上传.net core 2.1网站文件
使用ftp等工具将网站文件上传到centos服务对应的文件夹目录下
注意:连接类型要选择-SFTP over SSH
8)定位到myweb文件夹目录
cd /root/myweb/
9)启动.net core网站项目
dotnet TestCore.dll,根据自己的项目名称来
出来下图的Now listening on: http://
10)继续添加外网
http://localhost:8090;http://*:8080
11)再次启动项目
12)测试外网访问,这里直接用外网IP来测试
13)当外网有请求页面时,centos界面会实时显示请求信息
从提示信息里我们可以知道,Ctrl+C是关闭网站
13)突然遇到无法访问的情况
这个是因为启动dotcore项目已经被关闭了,关闭WebShell登录页面后,也是自动关闭网站无法访问了
【小疑惑】
部署到这里,虽然是可以访问了,是不是有个小疑惑,为什么我不能用80端口访问呢,直接http://ip:8080就能外网访问呢
通过查找资料可以了解到,linux-centos默认是没有开启80端口的,需要安装一些软件进行开启,比如防火墙之类的,跟着小白一起来实现吧
概念:转发
还需要解决的一个问题就是如何保持启动的状态,监测关闭后自动开启
【开启80端口】
1)配置nginx
- 安装nginx
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(这一步记得输入y回车)
- 启动nginx
systemctl start nginx
- 设置自动启动nginx
systemctl enable nginx
- systemctl enable nginx
2)配置防火墙
- 查看防火墙状态
systemctl status firewalld
- 开启防火墙
systemctl start firewalld
一般没有任何提示就表示开启成功了,再次查看防火墙状态,显示运行状态
- 开放80端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
systemctl restart firewalld(开启成功,重新启动防火墙即可生效)
systemctl stop firewalld(有开启就有关闭)
- 直接访问外网ip,显示就是80端口nginx的信息
【关键一步来了——转发】
1)使用ftp工具,查看回到根目录,可以查看如下文件夹
2)nginx转发core网站 - 修改文件
3)直接打开编辑文件内容
location / {
proxy_pass http://localhost:8090;
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;
}
4)重新启动nginx,即可生效
nginx -s reload
没有任何提示即为生效成功
5)再次浏览器打开外网IP地址访问,80端口访问成功,如下
6)网上有些遇到需要添加白名单的情况
【更重要的一步也来了 - 如何保持core网站一直启动状态】
1)安装Supervisor
yum install python-setuptools
easy_install supervisor
2)配置Supervisor
创建文件夹:mkdir /etc/supervisor
创建文件:echo_supervisord_conf > /etc/supervisor/supervisord.conf
3)修改conf内容
4)配置core文件
创建文件:testcore.conf,内容如下
命令:touch /etc/supervisor/testcore.conf
5)testcore.conf内容如下
[program:testcore]
command=dotnet TestCore.dll ; 运行程序的命令
directory=/root/myweb/ ; 命令执行的目录
autorestart=true ; 程序意外退出是否自动重启
stderr_logfile=/var/log/testcore.err.log ; 错误日志文件
stdout_logfile=/var/log/testcore.out.log ; 输出日志文件
environment=ASPNETCORE_ENVIRONMENT=Production ; 进程环境变量
user=root ; 进程执行的用户身份
stopsignal=INT
6)运行
将文件拷贝至:“/etc/supervisor/conf.d/WebApplication1.conf”下
命令:
supervisord -c /etc/supervisor/supervisord.conf
ps -ef | grep testcore
7)运行网站查看效果
【最后关键一步 - 配置开机自动启动】
1)在文件夹下创建文件
文件夹:/usr/lib/systemd/system/
创建文件:touch /usr/lib/systemd/system/supervisord.service
2)文件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
3)执行命令启动和验证
systemctl enable supervisord
systemctl is-enabled supervisord #来验证是否为开机启动
备注:可能会稍稍有延迟,如果还不行,那么可以使用系统重启命令试下-reboot
【总结】
关闭会话,依然可以访问啦,asp.net core在centos服务器上部署网站站点完整步骤流程就是这些,只要去尝试,陌生也会慢慢变得清晰!
后续再次部署出现的问题
1、 查看版本出错
A fatal error occurred. The folder [/usr/share/dotnet/host/fxr] does not exist
dll也无法启动
core_web.dll
-bash: core_web.dll: command not found
2、一顿安装
yum install libunwind libicu
sudo yum update
sudo yum install libunwind libicu
sudo yum install dotnet-sdk-2.1.4
安装运行环境
yum install dotnet-runtime-3.1
3、卸载删除.Net Core
sudo yum remove dotnet-sdk-*
sudo yum remove libunwind libicu
sudo yum remove /etc/yum.repos.d/dotnetdev.repo
4、重新安装,查看版本出错
添加yum源
sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm
安装sdk
sudo yum install dotnet-sdk-2.1
5、标志当前服务器在使用.net core
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
6、CentOs 8 最低支持.net core 3.1
安装 .NET Core SDK,只是用于开发调用的sdk,如果当前电脑仅作为服务器,则不用安装
sudo yum install dotnet-sdk-3.1
安装 .NET Core 运行时
sudo yum install dotnet-runtime-3.1